Category Archives: learning

Technical ADD-How to Regain and Maintain Your Focus

Technology changes so frequently, so how to you know what to learn?  As soon as something new comes out, you want to get hands-on with it.  Then something newer comes out and you want to get hands-on with it too.  Well, what happens?  You begin something that you’re interested in, leave it partially completed to learn something else, which also never gets completed.  So, are you really learning anything?

This was happening to me quite frequently.  There are so many things I read in blogs or see on Twitter and think “Man, I need to take a look at that!  This is awesome!” So I do, and leave whatever I’m doing behind.  Some of the time I come back to those projects that were left behind, but it’s usually a month or so later.  By that time, you forget where you were or what you were doing, so you quit.  You can never regain that mojo that you once had when you began.

How do I break this vicious circle?

1.  Create a list of topics that interest you.

As you find something that interests you, write it down.  Make sure you jot down any pertinent information so that you can come back to it later.  I find that Evernote, or any other note taking software, is good for this.  If you come across a tweet or a blog post and you think “Hmm…this looks cool”, jot it down in Evernote.

2.  Create Goals

Rank all of the items on your list and create goals from them.  They can’t just be I want to learn Ruby, or I want to create this website.  They should be S.M.A.R.T (or S.T.U.P.I.D.) goals or you’ll never get to where you want to be.

3.  Start Learning

Congrats!  You’ve just created a learning plan!  Begin small, start crossing off your objectives and you’re well on your way.

How do I stay on track and maintain focus?

You should never stop learning. There are things that will get added to your topics list every day.  So how do you stop your technical ADD from kicking in? You find this super cool library or you’re introduced to a new language and you think “Man, I really need to look at this!”  One rule that I use, is that I set a timer, or just set aside a couple of hours to dive into a topic.  If I think that I can get what I need out of it in that amount of time, then I go ahead and jump into it.  When the timer goes off, or my specified time is up, and I haven’t satisfied my mind, then I jot it down on the topics list.  This is something that I’m going to have to spend more time on.  The key here is to only do this once a day, and no more than a couple of times a week.  If you don’t, then you get back in the same boat as you were before.

Travelling down your learning path

As you begin down your learning path, some of the things that you put on your topic sheet may no longer interest you, and that’s ok.  That’s good.  That means that you might have found something that you’re passionate about and want to dive deeper into.  You’ll end up crossing off the topics that don’t interest you and replacing them with new ones.  Don’t be afraid to do it.

Also, as you complete a goal, don’t be afraid to reorder your list of goals.  You may find that your priorities have changed based on what you’ve just finished.

How to add a filter for all of the noise

Another good way to try to eliminate technical ADD is to add a filter.  At CodeMash this past January, Joe O’Brien gave a presentation entitled “Refactoring the Programmer”.  In this presentation, he describes the Rule of 4 and the Rule of 8. Anytime he hears a certain technology mentioned four times from any of his mentors, he goes and researches it.  If he hears it mentioned eight times, he researches it more in-depth and does some hands on work with it.  This technique may help you cut down on much of the noise that you may encounter.

Give back

By this time you may have found some things that really interest you.  If you haven’t started a blog, do so now.  All of these tidbits that you think are trivial are useful to someone.  Don’t worry if you think that they’ve been beaten like a dead horse; this will help cement the things that you have just learned.  Plus, no one can read every single blog out there.  This will help you increase your visibility.

While you’re at it, take some of your blog posts and turn them into presentations that you can give to your teammates or your peers.  There’s no better way to learn something than to have to talk about it to a bunch of developers at a user group, or a conference.  No one is an expert in everything.  People will come to listen to you to learn.  They’re not there to criticize (well, most aren’t).

Final Thoughts

Keep in mind,  this is something that has worked for me.  Ultimately, you have to find what works for you.  If you’re doing something different, I’d like to hear from you.

Now I have to go and cross this off my goal sheet! Thanks to my mentors that have helped me make this a reality.

Develop for the better!

Tagged ,

CodeMash 2.0.1.0 Reviewed

Last week I had the privilege to attend one of the premier developer events in the country.  CodeMash 2010 was the best professional event that I’ve ever had the opportunity to attend. I would like to express my appreciation to the entire volunteer community who have taken the time  to put this on.

What made this event so great, you ask?  Let me give you some of the reasons why.

The Speakers

Three days, 58 speakers. ‘Nuff said. CodeMash gave us the opportunity to learn about languages, development approaches, and technologies that we might not know much about, or even knew existed. It gave us the opportunity to step out of our comfort zone and learn something new.  Ruby, Rails, Python, F#, PHP, .NET, Java, iPhone…where else could you go to see amazing presentations given by experts in our community? Not to mention three excellent keynotes given by Mary Poppendieck, Andy Hunt and Hank Janssen.

Open Spaces

Post a topic, show up to discuss it.  Open Spaces at CodeMash were little breakout sessions where you pick a time and place where you wish to discuss your topic.  They weren’t lectures.  They weren’t presentations.  Those that showed up decided where to steer the discussions. 

Coding Dojo

This was the place to go to pair up and learn some new coding skills or just hone your existing ones.  HudsonSC and Nimble Pros provided Katas to work on if you wished.  You could also use this room to pair up and discuss a current project or what you were looking to work on.

The Venue

Where else could you swim up to a bar and discuss Ruby; or float around on the lazy river and talk about F#?  The Kalahari Resort and Conference Center was a great host to over 600 geeks and their families.  The place is top notch.  My wife and daughter had a great time at the CodeMash Families and KidzMash events that were held while we were in our sessions. 

Make sure you have CodeMash 2.0.1.1 on your calendar for next year!  I know that I’m counting down the days-and so is my family!

Tagged

CodeMash 2.0.1.0 is almost here!

As a new year begins, the countdown to CodeMash is down to little over a week and I’m as giddy as a 5 year old on Christmas morning!  I’m getting the new laptop installed with everything I’ll need to pair up with some of the best developers in the country.

If you’re not familiar with CodeMash, it’s one of the best developer events in the country.  It’s focus is to educate on current patterns and practices, methodologies and technology trends in a variety of platforms and development languages.  In short, if you’re a developer, you should be there! Not to mention that it’s very affordable and held at a world-class indoor waterpark; the Kalahari Resort in Sandusky, Ohio.

I can’t wait to learn from some of the best in the industry next week. Who knows, maybe one of these days, I’ll be one of those speakers.  Something to aspire to.

Tagged

Software Engineering 101 Conference Wrap-up

I want to thank the many people involved in putting on such a great conference yesterday.  Over 90 people attended and walked away with tons of great information on OOP, SOLID, code analysis/metrics, and production debugging.

Many thanks go to Jim Holmes for the original idea, and putting together such a great lineup of presenters.

To start the day off right, Leon Gersing talked about the fundamentals of OOP, followed by Jon Kruger‘s SOLID principles presentation.  Then Jim gave a brief presentation of tools for code analysis. Next up, was Scott Walker showing us debugging tools and how to use them in a production environment.  These all lead up to a TDD workshop where we paired up to work on an exercise from Leon.

I can’t begin to express how much I actually came away with from this conference.  If for some reason that you missed it, I can only hope that they put this on again soon.  You’ll benefit greatly by attending.

Want to get started with TDD?

Test Driven Development (TDD) is a software development technique that utilizes unit tests to build better software that is loosely coupled.  TDD can be thought of as Red-Green-Refactor.  First, you create a failing test (Red), then write just enough code in order for the test to pass (Green), then the code can be cleaned up (Refactor) as necessary.

If you’ve never written unit tests, it can be quite tricky.  There is definitely an art to creating good unit tests.  Luckily, a colleague of mine has put together a TDD starter kit to help you come up to speed.  It contains sample projects that you can download and step thru, as well as many links to various topics on all things TDD.

You can find the TDD starter kit here.  I highly recommend downloading and walking through the projects.  Within it, you’ll also see examples of mocks and stubs as well as dependency injection and inversion of control.

Tagged ,

Where to start? How about at the beginning.

I constantly ask myself “What types of new development technologies should I be learning? MVC, WPF, Silverlight?…”.  As a developer, you should never be content, you should never allow yourself to get stale. 

As I was trying to determine what to learn next, I read a post from Jon Kruger that put things into perspective.  To become a better developer, you should become an expert in software design patterns and principles.  Someone has already solved your problems.  Take these lessons and use them to become a better developer with the technologies that you already know. 

I feel that there are many other developers just like me who jumped in with both feet to learn new technologies, when they should have started at the beginning.

Tagged ,