| > There ARE 10x engineers but it takes a lot of experience to even have a chance at becoming one. In college I competed in the ACM programming competition against Stanford. I was the only one on my team to write (working) programs; I personally wrote more working programs in four hours than either of the two teams (of four) from Stanford were able to write in six. Presumably these were some of the best programmers at Stanford that year? I was a sophomore, almost completely self-taught, and going to a JC at the time. I learned a bit about data structures from a rather uninspired class there, though later I learned a lot about optimization in compiler design class at a four-year school. While I was still at the JC I successfully completed a contract to port a game to a new platform for a major studio (you've heard of them). The original game was entirely written in assembly language, as was my port. It took about four months. While I was going to college. My first job out of school I quickly ended up a star programmer. I wrote tools that were used by the whole company while working on a game. After a week of working on my first game there, I was told by the CEO that it already had better physics code than the previous developer was ever able to achieve on the last product they'd shipped (this was back before physics engines, so I was just writing code the way I'd figured it out on my own as a teenager -- later I learned what I was using is called an Euler Integrator [1]). The game I finally shipped for this company was also written entirely in assembly language, and it shipped with no known bugs. On time. The next company I worked for, the same kind of thing happened: I ended up fixing tools they'd been using for months, optimizing one frequent operation that previously took minutes to complete so it would finish in less than a second. Every company I've worked at (with one notable exception where I wasn't a good fit) I've very quickly ended up someone that everyone comes to for help (and I enjoy helping people). I had one position where I was supporting a lot of people on a forum in addition to doing a lot of new engineering, and the guy who ended up in my shoes later (who was himself an awesome developer) told me he had no idea how I managed to do everything that I did. And I rarely work more than about 40 hours in a week, at least after my first few years on the job. At this point I've done apps, highly scalable web server code, games (console, smartphone, and PC), video, graphics code, embedded device code, and programming tools. And I've contributed to multiple open source projects (at least one of them high-profile). So am I a 10x programmer? Who can say. But I have only once worked at a larger company (the aforementioned "bad fit"), and am almost entirely self-taught. And I take pride in doing things other developers label as "impossible". But I have never had a "mentor" outside of the code and books (and more recently blogs) I've read. I've certainly known developers who I could out-program by at least a factor of 10, and others who simply couldn't do some of the tasks I do regularly. But I wasn't TAUGHT this by other developers, though I am certainly standing on the shoulders of giants; I just arrived there by climbing, not being lifted. Don't wait for a mentor. Go learn. Now. [1] https://en.wikipedia.org/wiki/Euler_method |