Wednesday, November 20, 2013

10,000 Hours

I personally am a firm believer in the '10,000 Hours to Mastery' house of thought.  Not so much in the exact number, but in the idea that "Nothing is achieved without work.  And mastery takes A LOT of work".  This is how I approach both my in-game work and out-of-game projects; I can read and theorize all day, but it won't count for anything without actually doing the work.

Aideron Robotics has made me focus more on this topic lately.  With such a vast sampling of players, many of them in their first 6mo, I've caught myself being an elitist jerk.  Having made almost all the mistakes one can make in science and industry, I have a burning desire to save and shelter my friends from making those same mistakes.  Unfortunately, I'm realizing very quickly, the value of that advice is not appreciated until you've suffered through some of your own mistakes.  I'm also quickly realizing my initial newbro industry advice is a poor cop out.  Watching Manufacturing Confusion's new blog shows me I'm way too entrenched in my position to be very helpful to our newbros.

Snuffing Out the Spark

What's really bringing this reality into sharp focus is the constant ribbing I'm getting on my code.  I got a serious talking to the other day about efficient data structures, and my complete disregard for efficient database design.

This behavior is the ire of my existence when it comes to learning code.  When pulling yourself up by your own bootstraps, there is a ton to learn.  Without direct mentorship, there are a lot of sins that Stack Overflow isn't going teach you avoid.  Furthermore, any one facet of code is infinitely deep, and without keeping a keen focus on goals, it's easy to get lost in optimizations and perfecting a piece of code.  Just like writing books, articles, or blogs, there's as much art to saying "good enough" as there is to actually producing good work.

Personally, I've been jumping on the anyone can code bandwagon.  After making progress and looking back at the pain, I really believe a lot of the elitism is unwarranted.  Also, the resources out there for learning skills out there are unprescedented.

When all else fails, Google has been instrumental in helping to bridge the gaps.  Personally, I work very best with ample examples, and it's not hard to find snippets to walk through to add to the tool belt.  Though the very best option would to work with a team or master who can help you avoid the sins of CS, but we're all extremely busy and sometimes DIY is the only way it will ever get done!

Furthermore, an ugly tool is better than a beautiful tool that doesn't work.  For the last two years, I've leveraged gdoc sheets of increasing complexity to get where I am today.  I even still use my super-terrible-perl-kitbuilder to enable my manufacturing lines.  And you can post about how terribad my tools are, but I'm still making progress.  Don't worry if your tool or program or plan isn't perfect, make it crawl, then make it run!

But You're Doing it Wrong!!!

Being on the other side of the coin in-game, I'm starting to see why my input isn't helping anyone.  I could write a thousand guides, record YouTubes, make infographics, and I still won't save most people from pitfalls.  I can only hope to guide them away from the most egregious issues (Mined Minerals Aren't Free, T1 is a sucking hole, etc) and save them the effort to reinvent the wheel.

I will be sitting down with my new corpmates over the following weeks in the hopes of building some less jerky tutorials and help get our youngest newbros fully integrated.  I really feel AIDER has done an excellent job avoiding the traditional PVP grind (tackle until you have enough SP to be useful), and there have to be lower fruit worth picking on the industry/trade side of the coin.

Some sins must be committed to understand the value of another route.  Whether that takes a code refactor (or several) or some ISK is lost, as long as we're mentoring friends to avoid the largest and most painful pitfalls, they can still contribute to the team.