I recently took a look at my github stats and noticed a huge chunk of time that I was not contributing. Not that I contribute some exorbitant amount, but I do contribute and it was noticeable. I knew instantly the reason for this though. GTC or better known as GPU Technology Conference. Its a conference that aims to advance global awareness of GPU computing.
My role was Technical Lead and Lead Engineer for the events registration and scheduler site. It was a substantial project! Which included a great deal of feature enhancements, as well as an aggressive deadline. So much so that I fell out of touch with my subscriptions to web developer weekly and others during this period. I stopped checking my twitter account. I deleted my facebook account. I stopped even chatting with friends and other developers for months.
I certainly learned a lot working on this project though. Being lead engineer for the web application, as well as technical lead for the mobile applications was nothing to balk at. I worked with international teams (part of the reason for the crazy hours). I strengthened up both my frontend & backend development skills. I built a great working relationship with the projects creative lead. It was the first time I managed a team at NVIDIA as well. Most of all though, my time management and organization skills were certainly put to the test.
Some key areas that I felt I was successful are:
- Making decisions
- The decision making process probably single handedly played the largest part. I kept the saying
Fail early and fail often
in the back of my mind throughout. Its easy to hear the word failure and get an uneasy feeling, or even develop a fear that you'll be looked down on. I always try to learn something from a failure though (besides not making the same mistake again). This way you turn what could potentially be a negative memory into a positive one. - Working under extreme time & scope pressure
- I don't know what it is about having a deadline nearing that always kicks my ass into gear. I feel like (and have been told) that I work best under pressure. I attribute it to my days as IT director in the financial sector. There is nothing like having a broker yelling about how much money he's losing a client to motivate you.
- Handling system failure at in-opportune times
- Again something I developed from working with millions of dollars at stake. Its inevitable that systems will fail, sometimes it is not even your own fault. Far to often though I've seen coworkers cringe and ultimately buckle from a system failure under their watch. Falling back to a pragmatic and even pre-programmed approach is invaluable. (* note to self, there are a lot of in-* words in this. lol)
- Writing clean solid code
Plan to throw one away, you will anyway
I love this quote. For me, its the very reason for refactoring. Not every line of code you write will be worth sharing with the community, and not every line of code has to. Get your idea out of your head and executable. You can shorten it, make it more readable, more efficient, play code golf with it, you name it. Just get it out of your head.
Some of the areas I wasn't as successful, but took as a learning opportunity:
- Overall communication
- When working other developers and QA teams communication is key. I didn't necessarily get any bad feedback from team members on this one, but I just felt I could have done a better job. Toward the end of the project I started using a standup tool and just being as transparent as possible. Definitely something I have started with on other projects.
- Time management
- Wait, didn't I list time management under the successes? Nope, it was time pressure. Quite different! I can hear my close friend and mentor in my head
Work smarter not harder
If only I had caught myself and applied those words... I am guilty of getting stuck in a box from time to time. The problem is, it's usually hard to realize you're in a box until you've broken out of it. This is where TDD/BDD come in, I think. I recently attended a Ruby on Rails meetup focused on TDD. It was such a great learning experience with some great developers. It got me to thinking about how applying the things I learned in TDD could help cut down on the amount of time wasted on certain tasks. - Pushing back on scope creep
- I love features and enhancements... Love'em! Sometimes to the death of me though. It took falling a week short of one of the project milestones for me to come to terms. I think this post says it perfectly": http://software-carpentry.org/blog/2013/02/features-and-scope-in-open-courseware.html. I like this one the best though
Increased "surface area" for bugs
All in all though, I can't stress enough how nice it was to be given the ball to run with. There is no greater confidence boost than your manager and team believing in your technical and analytical abilities. It was also our first pass at using media queries & responsive web design. I got some praise, as well as some constructive criticism. I proved myself in this space and as such have been given the title to reflect this (Mobile Lead). I am now working on other areas and sites, making them mobile friendly.
To close out, this conference has a wealth of information, most of it is now available to the general public. Be sure to check out some of the content from the event. https://registration.gputechconf.com