6 ms·
A bit of a meta question: As someone who feels like a 'B' or even 'C' at times, what would it take to become an 'A' player? Is it predicated on pure talent alon
by oacgnol 14y ago
A bit of a meta question: As someone who feels like a 'B' or even 'C' at times, what would it take to become an 'A' player? Is it predicated on pure talent alone, hard work, or experience?
Even though I know I'm still a junior developer (~1 yr exp), I feel hopeless at times that I'll never approach being 'A' status especially knowing that I have many peers my age that are already far and away better than me. How would I overcome that?
- asto 14y agoI'm where oacgnol is at too. Just as an addendum to what he said, are there any pro programmers here who went from C to A? How much time did this take you? I feel like I struggled way too much to much to get basic computing concepts - netmasks, bitshifts, c pointers... Don't even get me started on how much javascript confounds me! :-D
- michaelpinto 14y agoKey question: Are your peers better than you due to experience or talent? In other words have they also been doing this for a year or several years? If they've been doing it for several years even though they're the same age as you they aren't your peers. By the way I suggest you check out the 10,000 hour rule: http://www.gladwell.com/outliers/outliers_excerpt1.html http://www.gladwell.com/outliers/outliers_excerpt1.html
- alwold 14y agoMy experience is somewhat limited to places that probably don't have the best developers in the world, but I think one of the major things I've noticed in people that I would consider to be mediocre programmers is a lack of desire to understand how something works. They just want to get the thing they need to work, and often times this lack of desire to understand how something works extends to their own code. If you strive to understand how your own code works, you will be much more likely to notice the bugs as you think through the flow. Early on when I was learning to program, I had a very strong curiosity that made me want to understand how everything works. I think if you have that natural curiosity, it is the easiest way to become a better programmer. As I've gotten older, though, that has waned. In response, I've tried to build habits of investigating things and trying to learn about them when I don't understand them. It is tempting to just use google to find the answer, or "shotgun" it by trying all kinds of random things before you get it to work, but learning how it works is always the best, and it will pay off later. So, I guess my main point here is to just keep tinkering and reading and getting your head wrapped around all these things so that you understand them well. Then things will eventually become "easy" and intuitive.
- petercooper 14y agoI feel hopeless at times that I'll never approach being 'A' status especially knowing that I have many peers my age that are already far and away better than me. There are many people who learned to code starting age 4 or 5 who are having rings run round them by people who learned to code in their 20s or even 30s. Age and experience are only components in a much larger, more complex equation. While I can't provide much advice on becoming an "A" player, in terms of your outlook, stay eager, stay positive, and stay curious. People quit or fall into ruts all of the time (let's see where many of the dot com era folks ended up..) and still being "in the game" counts for a lot over the years. Everyone has doubts or moments where they feel out of their depth.. you just gotta keep plugging on.
- illumen 14y agoOr they think they are running rings around them. Circle shaped rings, in an elliptical world. B/C players won't understand that... heh.
- cconroy 14y agoTry not worry about how you stack up in absolute terms, and think more in terms of relative accomplishments. It helps me when I have these thoughts too.
- dabent 14y agoI believe that the top trait in A players is the same as in the top founders, which is determination [1]. That determination often manifests itself as the desire to understand how something really works, rather than glossing over the details, the drive to learn a new language well enough to use it to implement ideas, to take on the learning curve for a new tool or system, to automate something, or to test their code before releasing it into the wild. I've seen less-than-enthusiastic programmers who release shoddy work, expend more effort moving work onto other's plates that they'd expend just doing it themselves, let bad ideas stand without a fight, and never bother to keep up with changes in technology. I've also seen very smart developers who've constantly been taken in by the latest shiny new thing to cross their path, think that testing is for the weak, and have no real determination to get something up and running completely. If I have to be honest, I would describe very few of the developers I've worked with as "dumb". But many of them are either too passive [2], or lack the determination or desire to really compete a project. One thing I've done to grow is to not try very hard to gloss over the details. Software is supposed to abstract away details, but it's too easy to think "I'll never learn that." or "Who cares what's under the covers? It just works." Understanding the subtleties isn't just an intellectual pursuit. Knowing the internals of a system allows a developer to know the limitations and strengths of a system, so it can be built upon or even repaired and improved. 1. http://paulgraham.com/determination.html http://paulgraham.com/determination.html 2. Sadly, in some situations, these are people who've simply been overwhelmed by the bureaucracy of their workplace. Fortunately, we are currently in a job seeker's market, and determined people can find better work conditions.
- benlakey 14y agoGood stuff, dabent. I agree; Abstractions are valuable tools, but it's important to know whats underneath the abstraction, for when the abstraction leaks, or when it's the wrong tool for the job.
- vrishabh 14y ago> I believe that the top trait in A players is the same as in the top founders, which is determination [1]. Another important trait in the A players is that they are good procrastinators. Or as pg says it, they procrastinate to do "something more important."
- TimGebhardt 14y agoFake it 'til you make it. Throw yourself at problems that you think are over your head. If you care and you want to do good work you'll figure out a way to get something done. Especially if you have a good mentor or someone that can guide you to answers to hard questions or take you under their wing. Learn to effectively communicate and then communicate with your peers. You'll never know what you don't know unless you discover it (and there are only so many hours in a day), or you learn from other people. And you'll have an easier time trying to articulate your visions when you can communicate them effectively. Don't worry about how good other people are. In fact, it's good to surround yourself with people that are more talented than you are, because it's easier to learn from them. Try to surround yourself with people smarter than you are. This is a lot easier if you contribute heavily to OSS or work in a product-focused group or company. It's pretty easy to let your skill set stagnate if your primary responsibilities are writing internal-use-only software.
- ivanvanderbyl 14y agoThat last bit is crucial - surround yourself with people smarter than you - otherwise you'll spend most of your time solving complex problems in inefficient ways, which could very much work against you.
- jballanc 14y agoYes. A thousands times, yes! Some people find themselves to be the smartest person in the room and think, "I've made it!" Others, in the same situation think, "Time to move on..."
- benlakey 14y agoAgree completely. The moment you can't learn from those surrounding you is when you start to stagnate.
- benlakey 14y agoFake it 'till you make is time and time again proven itself to work, especially when you surround yourself with people smarter than yourself.
- flywheel 14y agoTry marijuana. No, really. I know "A" types who do, and I'm looked at as being "A" by my peers. I'm far more creative than any of my co-workers and my contributions frequently put us far ahead of the competition. I'm prolific and focused on writing code. Give me some music I like, some of California's best herb, and as many LCDs as I can fit on a desk and I deliver results day after day after day. I know it doesn't work for everyone though. Smoking is optional when you can get it in a cookie or a pill or 100 other ways. But seriously, if you are feeling like a B or a C and you think you have a passion for code but aren't as creative as you could be, you may want to expand your mind a bit. It worked for Steve Jobs after all.
- ori_b 14y agoThere will always be people better than you, no matter how good you are. Realize this, and try to learn from them. While I can't tell you if you have the raw talent, constantly trying to improve is important. In a way, a bit of neuroticism about your skill will help you. Complacency is a killer.
- djt 14y agoLook for a book called Topgrading, it's a methodology and defines A,B and C players. Roughly from memory: A's are smart, get things done. The important thing is: An A player in one role may not be an A player in another role. If you put your best programmer at your retail store, you're probably going to have a bad time. How do you overcome it? Find your passion, make sure you work with others that are A players (one trademark of A players is that they gravitate together), work on your skills and study peripheral ideas that could be implemented. If you're doing the above then youre probably an A player, if youre on Facebook half the day or complaining that someone didnt refill the coffee pot then you're probably not an A player in the role that you are in and you need to decide to train up or move somewhere where you can be an A player.
- fallous 14y agoQuestioning yourself is the first instinct of an A player. They don't believe they have all the answers, they believe that they are frauds in a lot of ways because they see the large picture and realize that they cannot hope to know all that is required to be an expert in all areas. Instead they become proficient in understanding the thought-processes that lead to expertise in multiple "specialized" fields and apply it to all areas of endeavor. Anyone who thinks they are an A player quite frankly isn't.
- benlakey 14y agoAgreed. The moment you consider yourself at the top, you no longer are curious/hungry to learn more.
- jpalomaki 14y agoIf I had to give one advice, I would say: "Always try to get to work with people who are more competent than you"
- benlakey 14y ago+1. Surround yourself with smart people always.
- Rhino55 14y agoYou have to spend a lot of time doing it. A lot. Of time. Probably the fastest way is to pick up SICP and work through most of the problems. And, by extension, look at the undergraduate curriculum of, say, UC Berkeley / Stanford / MIT / CMU / Harvard / Caltech, get the book, start reading, etc... The computer itself gives you plenty of feedback, although not on the quality of your code. Once you get good at the foundations, read through Code Complete once, skimming the boring stuff (and there is plenty of boring stuff). This will give you the basic framework for code quality. Next step is to get a challenging job...make friends with a recruiter who recruits for start-ups. For example Python meet-ups. You have to be a professional programmer for 2 years before you get good.
- rahoulb 14y agoTalk about stuff as you learn it (at your local user group or whatever). That way it forces you to consolidate what you are learning - plus you become viewed as an expert by the people who are learning from you (which of course you are, as you are a step ahead of them).
- eren_bali 14y agoThe best way of becoming an 'A' player it to work closely with some of them. Accept a lower salary to be able to do that if necessary. If you feel like some of your peers are ahead of you, you can try diversifying your skills. Most other 'A' developers suck at things like UX, design or even basic human interaction. Surpass them on those areas. By being a B as a developer + B as a UX person + getting things done, you will be welcome in an all A's team.
- jakeonthemove 14y agoHmm, "fake it till you make it" is not quite right - you can never "make it". You need to always learn AND learn how to learn as you go. I agree that you need to let others know that you're an A (even if you think you're a B or C), but if internally you believe you "made it", you're already falling down, IMO...
- espeed 14y agoFocus on building understanding. In Coders At Work (http://www.codersatwork.com http://www.codersatwork.com), Ken Thompson says, "When I was 30, 35 years old, I knew, in a deep sense, every line of code I ever wrote. I’d write a program during the day, and at night I’d sit there and walk through it line by line and find bugs. I’d go back the next day and, sure enough, it would be wrong." Building things without deep understanding may produce a program, but it won't get you to A. Building understanding gets you to A. This is a deliberate process that takes time and work. You may not get all the way to A, but it will put you on the right path.
- benlakey 14y agoYou could almost argue that those who put the time and work in, are by definition the 'A' players. Even if you're not top dog in terms of technical expertise; If you've got the hunger and passion to know more you'll almost certainly succeed over time.
- eli_gottlieb 14y agoIt's experience and a drive to self-improvement. I look at code I wrote even one year ago and wretch at it, itch to clean it up.