Below is a recent job description for the type of teammate that I am looking for to be on the team.   I have removed the company name because I really am company agnostic with regards to what I am looking for.  What do you think?  Let me know…

For teams to be world class, each team member must work in unison to cross the finish line. {Company Name} is currently building a team to Sprint to their commitments, reflect on their successes, and find opportunities to improve for the next Sprint. We are looking for those individuals up to the challenge.

The ideal candidate will be one that has the following traits:

  • A thirst for learning. We need those individuals that value life long learning principles. Impress us with how you learn.
  • Values collaboration, innovation, and communication. These words are key to your success here at {Company}.
  • Customer Service Focused. At the end of the day, this is what it is all about.
  • Team Oriented. This job isn’t for you if you aren’t comfortable with:
    • Pair Programming
    • Applying the 15 minute rule when you are stuck
    • Reducing the pain threshold of software development

Your experience should include:

  • Working in an agile environment. It doesn’t matter whether it is Scrum, Lean, XP, or mixtures of others. We need the concepts and your willingness to adapt.
  • Fundamentals of developing highly testable code in C# preferably. TDD is a goal, with the focus on improving quality
  • An understanding of the full Software development lifecycle from an automated perspective.
  • Are able to work with data. You should be able to understand SQL, general database design principles, and basic troubleshooting skills.

Development is core to this job of course. You will be working with the following technologies:

  • ASP.Net (MVP pattern)
  • ASP.Net MVC
  • Javascript, MS Ajax, JQuery
  • WPF and Silverlight
  • MSBuild, Team City, Subversion, and other build tools

Company Marketing Below this… :)

 

Technorati Tags: ,,

It is those little things during a rebuild of a machine that will always get you.  Mine is redoing all of the settings in getting Visual Studio back on track.  After a base install, here are the steps that I did to get it back in working order:

  1. Installed TestDriven.Net
  2. Installed VisualSVN and TortoiseSVN
  3. Installed CodeRush (This is a must have).  I didn’t export my changes though originally.  I will have to go back through and make changes manually then add to my backup strategy.
  4. Ran Visual Studio Registry Hacks file I created.  Thanks to Sara Ford’s Tip of the Day blog for these settings (Visual Studio Registry Hacks.zip). The following settings changes include:
    1. Make the most recent tab appear at the front
    2. Change Find in Files text of the output window.
  5. Changed my default Colors and Fonts (I use several different theme settings, depends on my mood).  See Scott Hanselman’s post on these.
  6. ASP.Net MVC 1.0 and latest Silverlight bits
  7. Changed my Tools – Options Settings.  I didn’t do a good job at creating a backup of these particular settings.  However, going forward I will definitely keep these handy.  I have included my settings file here (Core Settings). See these details below:

Environment

  • Documents – Show Miscellaneous files (checked) – Value = 5
  • Import and Export Settings – Change to new location (D:\VS\CurrentSettings.vssettings)

Projects and Solutions

  • General – Projects Location (D:\Projects)
  • General – User Project Templates Location (D:\VS\ProjectTemplates)
  • General – User Item Templates (D:\VS\ItemTemplates)
  • General – Check Track Active Item
  • General – Check Show Output Window when rebuilding
  • Build and Run – Select Do Not Launch when errors occur for build
  • Build and Run – Check Use Selected Project for new solutions (delete .suo files from existing solution if this feature doesn’t work)

Text Editor

  • General – All Languages – Check Line Numbers
  • C# – General – Uncheck Allow Cut/Copy on blank lines
  • C# – Advanced – Uncheck Implement Interface with Region
  • C# – Advanced – Uncheck Place System directives first
  • Plain Text – General – Check word wrap and show glyphs
  • Plain Text – General – Uncheck Allow Cut/Copy on blank lines

As you can see there is a lot of updates that had to take place.  Overall time, about 2 hours to get everything straight.  How much time has been lost by developers just getting an environment setup like this.

Technorati Tags: ,

On Friday, September 25, I attended a great conference on Social Media 101.  Here are some of the key ideas that I took away from the conference in regards to how I can use twitter better.

Using twitter to capture thoughts and ideas.  The hashtag #sm101 was great for me to jot my thoughts as they came to me.  Hopefully they were relevant to others as well.  It is a great stream of consciousness tool from that perspective.  Most of my notes for this post are pulled from that hashtag in more detail.

Interaction of twitter between other social media applications was key for me. One quote I got from a panel member was that twitter is the tagline to your blog.  I personally have found that to be true.  I did a post on Coderush and Xunit and sent a tweet out about it.  The post found its way into DevExpress’s newsletter (Making CodeRush Templates Xunit Friendly).

I think the biggest area where I got a lot of information was around how the company can use social media. The Tribal DDB presentation was awesome and a must download. Talent really is Social. Interviewing has definitely changed over the last couple of years, with all the research that can now be done online.  A couple of other items:

  • Brand your blog, Twitter account, and Facebook page.  Take the extra time.  I will be working on that this weekend.
  • If you are tweeting on behalf of a company account, include your initials at the end of the tweet.
  • Develop company social media guidelines.  Encourage what the employees CAN do, not what they can’t.
  • Your employees are ALREADY saying things about your company.  Be part of the conversation.
  • How do you differentiate yourself, so that a recruiter will look at you.  Job boards could be on the way out.  Is your Linked In account updated?

There was a lot of questions from the audience in particular about the line of Business/Personal for social media.  Here is my thought on that.

  1. Have integrity.  The trust factor that you will build with your followers is key. 
  2. Know your audience. If the account you are using is all work related, the majority should be work based, however, let them know you are a real person too.
  3. You are yourself whether at work or off the clock.  People are going to search for you on the web.  Be aware of this and use social media appropriately.
  4. Be generous and helpful to others.  It was said on one of the panels that being generous to others 12 times as much will give a much better value than being selfish.
  5. SHARE, SHARE, SHARE.  Even if your competitor is doing something of value, share it and acknowledge it.

There were a lot of references from yesterdays conference.  Here is a list that I came up with.

Tools:

Misc:

The other day I was making some pretty significant changes (downgrades to 2.0, don’t ask) in a solution.  I am very bad about optimizing using statements when they are not needed (this is a great refactor in CodeRush).   It got me to thinking about YAGNI and how I needed to just remove those items from the templates to begin with.

I am not going into the details of how to customize item templates, just go search, but here are some of the changes I made:

  • Class Item Templates
    • made the class public by default.  This alone is great and IMHO should be the default out of the box.
    • removed all usings, except for System.  This required a modification to the references section in the vstemplate also, so that the System.Xml and System.Data references aren’t added to the project.
  • Interface Templates – Same as the Class template
  • Class Library Project
    • Removed the Class1.cs and creation.  I always delete this anyways.
    • Removed all references, except for System at the project level.

Although, these changes may seem small, I noticed an immediate improvement to my productivity.  I then backed these up, so the next time I do a clean install they will be ready to go.

Technorati Tags: ,

I work on several projects where the unit testing framework may be the Visual Studio Test Framework, NUnit, or Xunit.  My preference lately has been using Xunit.  Out of the box CodeRush ships with templates that support NUnit the the MS Test framework, but not Xunit.  I needed to be able to use the same mnemonics for tests and not have to create new ones just for Xunit.  Here is how I accomplished it. 

  1. Goto the options for templates in CodeRush
    (DevExpress –> Options –> Editor –> Templates)
  2. Find the template (Nunit –> System –> #DependentNamepace#) and Create a duplicate of one of the expansions underneath. It really doesn’t matter which one.
  3. Select the expansion. Next we want to specify a context so this alternate expansion is only used inside an XUnit project. In the context picker at the lower right, place a green check in the Project\References checkbox (click it once).
  4. Right Click on References label and choose “Parameters”.  Type in Xunit.
  5. Down in the Dependent Namespaces, type in Xunit and apply

You will also do a similar process for the #TestMethodAttribute#.  For a quick video, please go to here.

Technorati Tags: ,
The Nomadic Developer: Surviving and Thriving in the World of Technology Consulting

 

I want to thank the Seattle .Net User Group for giving me the opportunity to review this book.  Everyone, please support your local user groups.

Overview

I thought this would be primarily about the journey of a developer.  How wrong I was.  This book is a terrific compendium of all I have know consulting to be but never have found in one place.  Any person that wishes or is a consultant, this book should be a must read on your shelf or kindle.

When I finished reading this book, I was compelled to do the following:

  • Get questions answered of the company I work for
  • Evaluate how I will be a consultant now and in the future
  • Let every person in my organization know that they should read the book.  I currently belong to one of the companies described in this book.
  • Establish my network and start building based upon who and what I know today

The Best Chapter

Without a doubt, I must say that Chapter 5 had nuggets of knowledge that will be with me throughout my consulting career.  This is a must read before you go on your next interview.  Even in today’s job market, not all job opportunities will be the right ones.  Use the questions in this chapter to help make your decision.

Sage Advice

I must say this appendix was not a hit with me, but may be for others.  I found the little tidbit highlights throughout the book were more valuable to me, instead of a few key consultants points of view.

Conclusion

Please take the time and read this book if you are in any of the following technology consulting areas:

  1. Recruiters – I believe you will get a fuller understanding on how to deal with developers and talk on their level.
  2. Sales – This book has 101 type insights for anyone joining the technology sales rollercoaster.
  3. Developers/Consultants – Please dive in.  This book is bound to help someone truly land in their ideal workplace and make good decisions.

Thanks Aaron

I have been watching recently twitter comments about people “repaving” or rebuilding their machines.  Recently I have added a couple of new developers to one of my teams and received feedback that it took quite too long to get them up and running to be productive. Lastly, my machine was due for a “repave”.  Realizing a real good machine image could increase productivity, I set out on an adventure.  Here are my thoughts:

Identifying the Image

My first step was to identify the image contents.  I made an initial list and then worked with the development team to understand what was essential as part of the build.  Here is the final list we came up with:

  1. Operating System – Vista Business
  2. Productivity Programs
    1. Microsoft Office Programs – Include OneNote
    2. Microsoft Visio
  3. Communications Programs
    1. SharedView (This has been critical for customer interaction)
    2. Messenger
  4. Browsers
    1. IE 8.0
    2. Firefox (Latest Version at Image time)
  5. Development Tools
    1. IDE
      • Visual Studio 2008
      • ASP.Net MVC (RTW)
      • Web Deployment Projects (RTW)
      • CodeRush / Refactor
      • SharePoint Designer 2007
      • Telerik RAD Controls
      • AJAX Toolkit
      • XUnit 1.1
      • TestDriven.Net
    2. SQL Server 2005
    3. Source Code Controls
      1. Tortoise SVN
      2. ANKH SVN (Soon to switch to VisualSVN)
  6. Miscellaneous
    1. Anti Virus Software
    2. CCTray (Continuous Integration)
    3. Paint.Net

We missed a couple of things as part of the process.  This is to be expected.  In my next repave process I will look to add some of the additional tools that make us successful.  However, at this time it is pretty good and the rest of the install of these misses is minimal.

What didn’t go quite right

I think the most important thing to note was standardization of machines.  Most of the team has Dell M6300’s.  Unfortunately, not all of them.  I ended up actually creating two images at this point and am ensuring that developers have a machine that fits one of these two images.

Secondly, from an installation process, I installed Visual Studio 2008 first before SQL Server 2005.  This was a mistake, which I should have remembered from a previous install experience.  Management tools in SQL Server don’t install quite right if VS2008 is installed first.  After blowing away the SQL artifacts and reinstalling this was fixed.

Lastly, there were just a few things that kind of crept up.  Installing printers, capturing my email signatures, redirecting the user profile folders correctly.

What went well

The best news is that we proved the image to work and the total time was only about 1.5 hours to completely reimage the machine.  Since this was my machine that was reimaged, I was able to test and be up and running very quickly.  The same thing happened with the other machine that was imaged.  We used Windows deployment Services to do our images.

Conclusion

Overall the results have been very good.  Reimaging is done on off hours when necessary.  Also, the image server is available to our developers to “clean” their machine whenever they want.  I went from a potential impediment of 12 hours to about 1 1/2 (total time of additional configuration) for a machine.

For anyone who is managing a team that doesn’t have an imaging process for developer machines, I would highly recommend it.

Question:  How efficient is your new hire process in regards to developers?  Is a developer up and running on your project in two hours or two days? Can the developer start working on any project with a minimal impact to the team?  Lately these are some of the questions I have had. 

Determine your baseline

As the new developers have come on board, it was evident that our process is not as it should be.  I have been observing some of the blocks that have come during the process and made a baseline checklist of what needs to happen.  Here is where I am at today:

  1. Ensure the developer machine is imaged and ready to go.  This alone is difficult especially when the machine needs:
    • Latest Windows updates
    • New software tools
    • Miscellaneous updates as needed.
  2. Permissions – Ensure that any incoming developer has the right permissions to get to the materials they need to be productive.
    • Source Code Repository
    • SharePoint / Project information
    • Development Environment Resources
    • Account Access Groups
  3. Process Overview – How is the employee expected to work within the team.
    • Time management
    • Status reporting and documentation
    • POCs for questions
    • Overview of what they are working on

Streamlining the process

Right now this process takes between 1 to 2 days of time with multiple people involved.  Many pieces can be streamlined, even automated.  My goal is to break the processes down into “quick hits” and “long term nice to haves”.  Ideally, I would like a developer up to speed within 3 hours looking into code.

Is this doable?  Your thoughts are welcome

As a leader, coach, mentor, and manager I have been through many goal and objective meetings.  Through the conversations of helping determine goals for my team there are a few principles that I diligently adhere to:

These are not my goals but yours:

I have yet to complete goals that have been set by others with little or no input from myself.  It is a sad state of affairs when a manager has “determined what is best for the employee”.  When I first started leading a team, I was this manager.  To the detriment of the company I worked for, I alienated my team and made the goal process a wasteful paper drill that eventually ended up in the circular file.  To be fair though, the company instituted a very stringent goal setting process that lacked input from the employee.

Each individual now is responsible for going and providing the first cut of the goals.  I usually ask them to think about them in a S.M.A.R.T. goal format when presenting to me. I have found that this is very hard at the start for my team. However, we are getting better after a couple of iterations.  Below is an example of one of my employees (notice that it is not quite in SMART goal format):

  • Tech skills:
    • jQuery
    • WPF/Silverlight
    • Functional Programming / F#
    • Entity Framework
    • ASP.NET MVC
  • Project-related:
    • Remove a now-redundant middle-tier layer from our application
  • Business/Process:
    • Learn how to develop leadership skills among those with more technical experience
    • Develop an internal tool using new technology
  • Team goal:
    • Revisit and take ownership of the Definition of Done

Develop Goals for the Short Term

I typically ask that goals and objectives last no more than 1 quarter.  I have found this to be a very good time box.  This keeps the goals somewhat fresh in the employees mind.  It also helps to focus on some very specific goal setting.  Within the time period, I ask the individuals to “check-in”.  This allows me to help guide them to with resources and ideas to achieve their goal.

The most successful individual use this “check-in” process.

Defining The End Result

One of the most challenge areas that I face when determining goals for my team, is what the end result looks like. Ideally it is some physical artifact that can be presented or disseminated.  I work to ensure that the knowledge that my employees have gained can be shared.  A lot of times the end result is usually a process improvement within the team (which is usually the best from a business perspective).

This is the refined list from above.  Since the timeline is known (1 quarter), it is not shown as part of the goal.

  1. Pick 5 areas in our application where performance can benefit from doing things client-side using jQuery. 
    • Document the improvements and present them.
  2. Pair with each member of the team once per week. 
    • Observe how the process changes coding styles during this period (3 months).
    • Record the “a-ha” moments.
    • Present your findings.
  3. Research and develop one area of the build process.
    • Develop a custom MS Build script instead of using the Visual Studio Solution Build.
    • Discover online what others are doing but don’t just use their tools.
  4. Team Project: Develop a Virtual Scrum Board using WPF & ClickOnce.

This process gets better each time I sit down with my team.  What process do you use to define goals and objectives for your team?

For the last few months, my development team has added an extra process to their daily standup, everyone should share a blog that they have read.  The stated purpose was to get interaction within the team and knowledge share.  Lately though, it hasn’t had the effect that I wanted.

History

When we first started this process it was met with lukewarm adoption.  Initially statements were made that it was essentially a waste of time. Parameters had to be put around the type of blog entries when one person talked about a Lifehacker post on building something out of champagne corks. After providing the team my OPML list, everyone only stayed within that list to grab their blogs.

A trend started happening within the team.  The general excuse was “I didn’t have time to read a blog this morning.”  This has been very hard for me being a person that wants to share knowledge to benefit the greater good. From a positive note, when a good blog did come up some lively discussions ensued. The downside to this was stand ups could go off topic and focus, 15 minutes could become 30 minutes.

The Aha Moment

Yesterday was my aha moment. Two people didn’t share a blog because of whatever reason.  Then one person on the team stated that he would rather share something that he was working on that would benefit the team more directly.  That was when it hit me.  It is not so much of finding the blog for the knowledge sharing as it is of providing something of value that we can all learn from.

Next Page »