Dustin Ewers

Software Developer | Writer | Philomath

  • Reprogram Your Wetware: Habit Change for the Modern Software Developer

    03 Feb 2014

    Habits are like cron jobs for the brain. They govern a large portion of our behavior automatically. According to a study by a researcher at Duke University, more than 40 percent of our day to day actions are the result of habits. (1) Fortunately, habits can be reprogrammed.

    The Habit Loop

    The habit loop is composed of three parts. Once this loop is established, the habit becomes automatic. These components are:

    Cue

    A cue is what triggers a habit. For example, my cue to eat lunch is that the time is around noon. Cues can take many forms, including specific times (dinner at six PM), mental states (emotional eating when sad), visuals (eating candy on the counter), or preceding actions (brushing your teeth after a meal).

    Routine

    A routine is the action that triggers the reward. This is the behavior you are trying to change.

    Reward

    The reward is what you get for completing the routine. Examples include the sugar rush at the end of a candy binge or the runners high you feel after a hard workout. Rewards are not always obvious. For instance, when I was in college, I would work out with my friends on a regular basis. The reward wasn't the energy boost from the workout, but the time I spent with my friends.

    The key to changing a habit is to identify the habit loop. Once you identify the habit loop, you can change the components of the loop and change the behavior. Here are some strategies that you can use to modify your own habits:

    Environment Design

    The easiest way to change a habit is to modify your environment. Add cues to trigger good habits or remove the cues that trigger bad habits. For example, I like to put my weights in my living room so I'm reminded to workout. The great thing about environment design is that you can take it as far as you want to go. You could even build a Batcave for Habit Change

    Swap the Routine

    Charles Duhigg, in the book The Power of Habit, advocates changing routines. This is a good strategy when you don't have control over your environment. It's easy to hide the M&Ms in your pantry, but hard to get your office to remove a vending machine. To change a routine, learn to identify the cue that triggers the habit and then try different routines until you find one that delivers the same reward. For example, if you want to kick a morning soda habit, try switching to tea or doing 20 squats instead.

    Material Decomposition

    This technique comes from Stoic philosophy. It works by devaluing the reward for a habit. Take something you desire, like a new gadget, and decompose it. For example, the hot new phone is really just a metal and glass enclosure with some copper and plastic inside. Decomposition shows you that the items you desire are not special.

    Keystone Habits

    There are certain habits that have the potential to radically alter your life. These are called keystone habits. Keystone habits can start a chain reaction that changes other habits. If you can develop a keystone habit, you can radically alter your life.

    Common keystone habits include:

    • Exercise
    • Eating dinner with your family
    • Keeping a Journal

    Organizational Habits

    Habits don't just apply to individuals. Organizations also have habits. Some of these habits are documented in policies and others are a result of organizational culture. Most business books highlight organizational habits. The classic business book Good To Great is about habits that are shared by "great" companies. The Joel Test is a list of desirable habits for software development organizations.

    Additional Reading

    1. The Power of Habit - Charles Duhigg
    2. See Like a Stoic: An Ancient Technique for Modern Times
    3. Good To Great - Jim Collins

    Footnotes

    1. Habits—A Repeat Performance, David Neal

  • Resources for learning ASP.NET MVC and Preparing for Exam 70-486

    02 Nov 2013

    ASP.NET MVC is great, but one thing I've had trouble with is finding information. I've wasted many hours searching for documentation or solutions to specific problems. It's much easier to find good documentation on ASP.NET Web Forms and JavaScript. This difficulty is compounded by the fact that I'm currently preparing to take Exam 70-486. I have found a number of useful resources to help other get up to speed on ASP.NET MVC.

    Video:

    Developing ASP.NET MVC4 Web Applications Jump Start
    This is an eight part course that's great for learning the basics of ASP.NET MVC. It's high level, but I found it useful. The class is done by the Microsoft Virtual Academy, which has free videos on a large number of subjects.

    Web:

    Born To Learn: 486 Wiki
    This site has a ton of information about MVC and the exam.

    http://stackoverflow.com/questions/tagged/asp.net-mvc
    When I was primarily working in Web Forms, my first stop for development information was MSDN. For MVC, I find myself getting most of my information from Stack Overflow.

    Books:

    Programming ASP.NET MVC 4: Developing Real-World Web Applications with ASP.NET MVC
    This is an excellent book that covers almost all practical aspects of building ASP.NET MVC applications. In addition to the basics, it includes information on architecture, optimization, build automation, and deployment. I reference this book often at work. I highly recommend it.

    Exam Ref 70-486: Developing ASP.NET MVC 4 Web Applications
    This book has proven to be less useful than the O'Reilly book above. This book covers all of the exam objectives, but some of the chapters are filler and reading this book alone will not give you enough information to pass the exam or build ASP.NET MVC applications. The previous book is a much better source of information.  I wouldn't recommend it for anything other than prepping for the exam.

  • 3 Tips To Help You Ace Your Next Technical Interview

    07 Oct 2013

    I used to be a little nervous about doing technical interviews. Even though I spend much of my free time learning about technology, I'm still afraid that I'll be perceived as an idiot. To combat this feeling, I have developed several practices to improve my interviewing skills.

    1. Review Your Resume

    Every interview I've been to asks you for examples from your work history. To prepare for these types of questions, review your resume before each interview. For each job on your resume, think about the challenges you faced, what technologies you used, and what you were proud of. Think about stories you can tell from previous jobs to potential employers. Practice telling those stories in your head or in from of a mirror. This exercise primes your brain. When prompted, you will be ready with a story from your work history.

    2. Practice Answering Standard Technical Questions

    Depending on the technology stack and what job you are interviewing for, most employers ask a list of standard questions. You will get a feel for this list as you do more technical interviews. I'm an ASP.NET Developer, therefore I get questions on the following topics:

    • Basic OOP (Encapsulation, Inheritance, Polymorphism)
    • Abstract Base Classes vs Interfaces
    • The ASP.NET Page Lifecycle
    • String Concatenation using StringBuilders
    • Basic Design Patterns
    • Linq
    • Generics
    • Job Specific C# and ASP.NET Trivia
    • Major features in new releases of ASP.NET (async, await, etc...)

    To prepare, you need to research the concept, practice describing the concept, and for more complex questions, come up with relevant examples. For example, when describing OOP concepts, come with a novel example. Instead of the usual examples of vehicles or animals, try something a little different, like a beer factory or different types of ducks. The key here is to show that you understand the concepts, as opposed to being able to memorize a textbook example.

    3. Practice Your Public Speaking Skills

    I learned my public speaking skills by competing in college forensics (speech and debate). It was a great experience that has helped me in many ways. I highly recommend competitive speaking if you have the opportunity. If you are no longer in school, you can join Toastmasters or practice with a group of your peers. Meetups are a good way to find groups of people to practice with. You can also give presentations at user groups and conferences. Practicing your public speaking skills on a regular basis will help you eliminate filler words from your vocabulary and help you learn how to handle fears surrounding public speaking. If you can explain a complex technical concept to a group of thirty people, then you should have no problem with three people in a job interview.

  • How I Passed 70-480: HTML5, JavaScript, CSS3

    14 Sep 2013

    I recently passed Exam 70-480. Despite the lack of official study material and information regarding what was on the exam, I passed the exam. I am going to share what I did to study for the exam and list some tips so that you may have an easier time studying for this exam.

    What’s on 70-480:

    This exam primarily deals with web programming in JavaScript, HTML5, and CSS3. Much of the exam is focused on implementing HTML5 API’s such as Geolocation, Local Storage, and the Canvas.

    A list of skills measured can be found here:
    http://www.microsoft.com/learning/en-us/exam-70-480.aspx#skills

    I found that the exam closely tracks the list of skills measured. I've taken a number of non-Microsoft exams and 70-480 is very straightforward. Most of the questions consist of a block of code and you need to select the proper code block to answer the question. You will need to read the question carefully and know the material, but there are no tricks.

    Here’s the list of Microsoft Exam Question Types:
    http://www.microsoft.com/learning/en-us/certification-exams.aspx#item-ID0EDAAAAACA-label

    Most of the questions I ran into were multiple choice, repeated answer, and case studies.

    My Study Guide for Passing the Exam:

    I started learning web development in 2001, have been a professional web developer for over six years, and I've been tracking the technologies in this exam for several years. These are the things I did to study for the exam:

    1. I watched the 70-480 Jump Start Videos on the Microsoft Virtual Academy:
      http://www.microsoftvirtualacademy.com/training-courses/learn-html5-with-javascript-css3-jumpstart-training#fbid=_zEjOXFTvMD

    2. I read this book:
      Training Guide: Programming in HTML5 with JavaScript and CSS3

    3. I went through each of the skills measured and made a code demo for each feature. I used a combination of local websites and jsfiddle.net This was the most useful of the three exercises. The best way to prep for this exam is to research and practice the exam objectives. You can not pass this test on concepts alone, you have to actually code.

      Exam Tips:

    4. Read the questions very carefully. Many of the questions are very specific and the correct solution hinges on the wording of the question.

    5. Practice the exam objectives. All of the questions on the exam involved reasoning around code. You need to know how to actually write the code in order to pass this exam. This is not a purely conceptual exam.

    6. The Mozilla Developer Network is a great reference for HTML, JavaScript, and CSS. I used it constantly while preparing for the exam.