Thursday, September 27, 2012

Learning Strategies for Engineers - Part 2

In part 1 of this series I covered some strategies for building your technical skills as an engineer.  Part 2 is going to be more about soft skills and improving personal relationships.  Let's get into it.


Use GTD or Some Other System:

Getting Things Done is a personal management system that allows you to keep track of all your commitments, and "close the loop" on tasks you personally have to do as well as tasks that you have delegated to others.  The primary goal is to boost productivity, but just as important is the goal to relieve  stress by making you secure in the knowledge that all of your responsibilities are under control.

GTD centers around this flow chart for processing incoming items:



I don't want to get into GTD too deeply here, but it's a system that I use and it has saved me a ton of time and mental effort.  I strongly recommend trying it or something similar to manage your commitments and projects.


Be Wary of Decision Fatigue:

About a year ago there was a giant article in the New York Times about the dangers of decision fatigue, and a much more condensed summary appeared in Fast Company (I recommend reading the latter).  The basic idea here is that every decision you make uses up your willpower, making it harder to make other, potentially more important decisions.  As a result you should try to automate your life to remove the need to make unimportant decisions as much as possible.  Sometimes this means making commitments so you can get into a routine, and other times it means dropping commitments you have already made because they aren't enjoyable and thus sap your energy and willpower.  This brings me to my next point...


Don't Be Afraid to Quit Things:

Whoa, wait...what?  I thought winners never quit?  I'm not saying you should quit things because they are hard, I'm saying that you should consider quitting things that you honestly do not enjoy.  I think we've all been there, you joined a cooking class, a book club, or started to play a musical instrument, but it's just not working out.  You feel stressed every time you have to go to a meeting, or maybe you just figured out that it wasn't what you thought it was going to be.  Quitting this kind of thing isn't just socially acceptable, it's actually essential if you want to be as productive as possible.  There are essentially an infinite number of things you could spend your time on, so it is extremely important to prune the things you don't enjoy from your life.  This allows you to focus more of your time and energy on the things you do enjoy, and allows you to become an expert at those things. 

The only caveat here is that if you decide to quite something, go read about The Dip in my first post and make sure you are quitting at the right time.  


Read:

I know I said this in the technical post, but I think it's important to talk about some good resources here as well.  There are a couple of books in this field that are extremely well known, and two that I strongly recommend are The 7 Habits of Highly Effective People and How To Win Friends and Influence People.  I consider both books to be "must reads", in part because many people you interact with on a daily basis have read them as well.  There's a ton of great content in these books, but a lot of it boils down to simply putting yourself in the shoes of others, and really trying to see an issue from all sides.  If you can do this consistently and respectfully then you will have great results.  

I also highly recommend subscribing to Kate Matsudaira's blog, and reading a lot of the posts that she has written in the past.  Her material is always awesome, and hyper relevant since she is an engineer who writes about how to be a better engineer and employee.


Be The Person Who Gets Sh*t Done

One of my favorite quotes from Velocity 2012 came in James Turnbull's talk about rolling back code.  I might be paraphrasing here slightly, but he said something like "take the 'we can't do this because...' attitude out back and shoot it".  I thought this was great, because every system has dark corners, and people who have been around for a while run the risk of getting into that mode where they see things as too complicated to fix.  Don't be that person, and don't make excuses.  You will get a lot further in work (and in life) by being the engineer who finds a way to refactor the code, pay down the technical debt, or un-break the build.  Don't be afraid to get your hands dirty and tackle challenging projects - those tend to be the ones with a lot of value. 


Go to Meetups:

I have to throw this in here since I started and organize the Boston Web Performance Meetup group, but I honestly think that meetups are a great way to meet other engineers and get your name out in the community.  That said, it is important to be aware of what you are getting out of a meetup.  Taking a train or a car to a random location and watching someone talk for an hour is definitely not the most efficient way to learn something - that could be done more quickly by going home and reading a technical book or writing some code.  It is one of the best ways to meet other people that are interested in the same things you are though, and to personally interact with leaders in your field.  My point here is twofold: 
  1. When you go to meetups you should talk to people, ask the presenter questions, and take notes.
  2. Treat meetups as a great networking opportunity, with a chance to learn something in the process.
Some people have another reason for attending meetups - they know that physically going to an event is the only way to motivate themselves to spend time outside of work building their technical skills.  If this is the case for you then that's perfectly fine, enjoy the free pizza and hopefully this act will kickstart a more consistent time investment in your own professional development.  If you are already someone who spends a lot of time learning on your own, then you really should be following my first point above.  

I've spent a lot of time attending and organizing meetups over the last few years, and I've gotten a huge amount of value out of them.  That said, the best moments of these events have frequently been outside of the official talk.  Whether it's beers after most people have gone home, informal conversations over pizza, or just sharing strategies over email in the months after a speaker presents, those are the times where I've really seen the power and importance of technical meetups.  


Conclusion:

Whew, nearing the end of another long post and another late night.  Hopefully you found this useful - if so let me know in the comments.  I'll close out with the "5 Phrases for Winning" that I read in an article a few months ago.  At first blush they sound a little hokey, but I think when you put some thought into them you will see how they can apply to your work and life:
  1. Imagine
  2. I get it
  3. No excuses
  4. The simple truth
  5. Let's get to work
To me these phrases describe traits that I think all engineers should have: 
  1. A long term strategic vision of the future of whatever system you work on.
  2. A deep understanding of the tools and concepts you work with.
  3. A can-do attitude and the desire to overcome whatever obstacles you are faced with.
  4. Honesty and the ability to distill complex ideas down to concepts that anyone can understand.
  5. The drive to work hard and work smart, constantly improving your knowledge and your efficiency, while never shying away from difficult tasks.  
Thanks for reading, and good luck!