« May 2008 | Main | July 2008 »

June 26, 2008

Finding an IT Job during a Recession

Recently I had to find a new job and for the first time in my 20 year career I was moving not because I wanted to but because I 'had' to.  To make matters worse, with a shrinking economy rising inflation and gas prices, IT is in the cross hairs of 'cost containment' strategies which translates into fewer jobs and longer hiring decisions.  However, there are some strategies you can employ to find good jobs quickly and I thought I would share some of my experiences.

I've reviewed over a thousand resumes and interviewed hundreds of people in the consulting and management jobs I've had, I've also managed recruiting functions so I have a pretty good understanding on how the model works.  To find a job you need a business approach and using a Product/Market/Sales model can greatly increase your odds of finding the right job for your skills and interests. 

Product:  Obviously, you're the 'product' in this case and just like the decisions you make in a supermarket you want employers to see your 'product' in the best possible light.  These days it takes more than a resume to stand-out. Here are some quick and relatively easy ways for an IT professional to stand out in the crowd:

  • Create a website:  Hosting services for websites range from free to less than $10/month.  I use yahoo which for $8.99/month gives me a WYSIWIG web publication tool, email addresses, blogs and FTP.  Use a domain name that is professional and easy to remember.  I use my own name (www.bryancampbell.com).  Avoid services that have 'nagware' or 'click-through' advertising (like www.bravenet.com, great for your cub scout site but not so good to land a six figure job).
    • 'Add value' to your website by uploading examples of work you've done or papers/presentations you've delivered.  Use common sense and your judgement on any Intellectual Property issues.
    • Keep the website focused on only professional items.  You can create sub-domains for your extensive matchbook collection but keep the focus of your website on its goal of finding you a job.
  • Create multiple versions of your resume.  One size doesn't fit all and the same is true for resumes and jobs.  I have IT Management, Project Management and Agile experience.  I created resumes for each of these skills so I can better emphasize my experience for jobs that need them.
  • Know what to emphasize:  People reading your resume are looking at hundreds of others.  They need to know education, certifications, years of experience and skills.  Give them what they need in big letters at the top of your resume and in the 'overview/goals' section of your resume.  Make sure you also have a lot of 'search' friendly references like product names, industry terms etc.  These are the terms that will get your resume picked out from Google and job board searches, recruiters will then want to see how much experience and education/certifications you have.
  • Learn Word/HTML:  As you'll find out not everyone has the same version of Word and many job boards parse uploaded Word documents in very different (and frustrating) ways. 
    • Save your resume in Word 97-03 format for the greatest reach. 
    • Make sure you 'view' your resume in a variety of layouts not just 'Print' layout, use Web Layout and also make sure you print your resume to make sure it doesn't exceed print margins etc.
    • If you're using a Mac be warned that about 0% of HR departments and recruiters use Macs, so make absolutely sure what you're sending can be opened in a Windows based Word machine. 
    • Knowing some simple HTML skills will be very useful when uploading to the job boards, even <b></b> to emphasize job titles can help your resume stand out on a job board.
    • When creating your resume make sure you have your name and contact information on every page in the footer or header.  You want it easy for someone to get a hold of you.
    • Cross-link back to your website with examples of work or publications.

Market:  Once you have your product ready you need to increase the eyeballs that see it.  Obviously a website will quickly get you seeded into Google, Yahoo and Live but you'll want to turn to the big boards to get more specific views;

  • Job Boards:  There are a lot of job boards available now but for an IT professional your best bets are Monster, Dice, Careerbuilder.  Unfortunately each is going to require you to create a customized resumes specific to their sites and they parsing tools each of them use for uploaded resumes work completely differently.  Careerbuilder is still in the 'stone-age' of requiring a text only resume but Monster and Dice let you upload HTML based resumes which you can format quite easily.  All of these boards have premium services which help you stand-out from the crowd.  I paid for a month-to-month subscription for all 3 of these services although I'm skeptical it helped much on the other hand for $10/month its not going to break the bank and you cancel at any time.  From my experience, theLadders was next to useless (and I even paid for a premium subscription), hardly any resume views and sixfigurejobs.com (which might be owned by the same company) was similarly ineffective although they might be better for sales/marketing types of jobs. 
  • Business Networks:  There are a lot of IT specific business network sites but the best from my experience is www.LinkedIn.com.  Create an account and ask some colleagues to give you an endorsement which provides recruiters some immediate references.  Also, with your available time, scan the Q&A section of LinkedIn and answer questions.  This can not only extend your business network but if your answers are selected as "Best Answers" you get profiled on LinkedIn.  Other sites include www.plaxo.com and www.ittoolbox.com.
  • Join User Groups and Special Interest Groups:  Take some time to explore websites that have communities of IT professionals and get active in their discussion forums.  It's a great way to stay connected and learn.
  • Create a Blog:  Pretty well everyone has a blog these days and with some new-found time they can be a great way to demonstrate your skills/experience beyond what your resume shows.  Personally I keep my blog factual and emphasize more objective, empirical topics but you can also use it to sound off about your opinions on IT direction and trends.  Remember though your blog is a tool to help prospective employers better understand how you'll fit into their organization, keep a professional tone and make sure what you're publishing aligns with your job goals.

Sell:  Now you have a product and you've marketed it, you need to sell it.

  • Create job agents:  All of the job boards have the ability to create a search agent for the type of job and location you're interested in.  Create a few of these and then build some message rules that will place these daily alerts into a directory in your email tool (otherwise you'll quickly fill your email up with these alerts).  Also leverage some of the 'meta' search agents like www.simplyhired.com which searches all the boards for a specific job attributes. 
  • Apply/Apply/Apply:  Be aware that those 'perfect' jobs you're going to see on the job boards are never quite what they appear to be.  Most have been kicking around with different titles for months and quite a few get 're-branded' by recruiting agencies hoping to find a candidate that they can present to a company with a job opening.  However, if you don't apply you won't get interviewed, so leverage the 'one-click' services that most of the job boards have and submit your resume frequently just temper your expectations.  Think of this as your 'indirect sales channel', sort of like telesales.  Relatively low hit rate but cheap and easy to manage.
  • Reach Out to Your Network:  Follow-up with your network letting them know you're available, you have a far better chance of finding a job through someone who knows you than via an emailed resume.  You'd be surprised where your next job can come from so cast a wide net and keep your email short and to the point.  Indicate you're in the process of a career transition and you're exploring opportunities, highlight your experience and skills and attach a copy of your resume. Don't expect anything and don't harass someone.
  • Contact Headhunters/Recruiters:  Recruiters make their money by placing people with companies, however, you also need to give them some confidence that you can present well and deliver what their clients want.  The good news is that most of these recruiters have considerably more time that most employers to meet with you and learn about your background and experience.  Phone local recruiting companies in your area and ask to speak to a recruiter who specializes in your area and then see if you can meet them for coffee.  Remember its critical to make a good impression so come prepared, dress well and be professional, if they think you're someone they can make a placement fee from they'll be a lot more interested in promoting you.  www.Teksystems.com , www.Yoh.com are good national recruiting companies and there are local entities in every market that you can quickly google.  Be prepared though that these organizations are opportunistic and even if you've had a good coffee/lunch with a recruiter you can't sit back and wait, they're simply another channel to expand your reach.

So all of these tips will help you get your job search moving along, however, the final aspect is to monitor your progress and results.  Your first week should be spent creating your resume, website and joining job boards/networks.  From that point on you should spend at least two hours a day applying, emailing and posting blogs/forum messages.  By your third week you should start expecting to meet with people and you should be getting at least one or two resume views a day on the job boards and on your website.  At that point it's a bit like selling a house, if you get enough traffic eventually someone will make an offer.  If you don't get enough traffic you need to start fine tuning your product/marketing and selling techniques.

The final pieces of advice I would offer would be is leverage some of your new time to catch-up on activities/tasks you have around the house but more importantly spend some quality with your family and friends.  You might look back years from now and see that this was the longest vacation you've had so you might as well enjoy it!  And like all things remember "Trust your own instinct.  Your mistakes might as well be your own, instead of someone else's."

Note:  After two months I recently accepted a job with BMC Software Inc. after receiving four formal offers and countless emails, phone calls and coffees!

June 10, 2008

Taking Agile to the Next Level

One of the biggest challenges facing agile development techniques is how to scale them to enterprise and global level initiatives that often have distributed teams, long delivery cycles, complex integrations and massive testing and training needs.  While this can be challenging there are some approaches that can effectively scale agile techniques across the enterprise.

Agile projects advocate small co-located teams working closely with customers to build software in short, iterative and incremental pieces.  A large number of projects are very good fits for this type of development and, in general, keeping projects small and focused dramatically increases their liklihood of success.  However, not all projects can be approached this way, some systems can have multiple customers, multi-year development lifecycles and global distribution requirements, others have heavy regulatory and testing requirements, all of them though can leverage some of the benefits of agile development.

When an agile project has more than two teams that are remotely distributed you need a different development model for managing and coordinating work.  One approach is to implement a Feature Team approach which emphasizes small, co-located development teams working on well defined features which can be demonstrated in consistent iterations.  To make this work you need a Program Team to manage consistency, quality and reporting between the Feature Teams and you also need an Architecture Team responsible for building components and frameworks that the Features Teams can use and to ensure a common, scalable architecture.  An example framework can be seen below:

Agile Program Structure 

This model implies several things.  Agile techniques are emphasized at the Feature Team level while classic PMI project management knowledge areas (such as Scope/Risk/Change/Communication/Resource Management etc.) are managed at the Program level.  It also implies that the agile concept of a single 'product owner' is broadened to reflect that most large organizations have a collection of individuals with different responsibilities in assessing features and their priorities.  The program team would work across the different stakeholder groups to define and prioritize features which implies that on larger agile programs/projects, the Feature teams are formed after the Program team has had an opportunity to lay the groundwork of high level requirements, architecture and overall resources.  Although this might sound 'waterfall-ish' it actually reflects more of the tenets found in the Unified Process for the Inception phase which basically advocates a solid understanding of the scope, requirements and risks of a project at level just sufficient that you can begin building software against these attributes.

Obviously, there's a lot to this model and there are some good other sources you can turn to learn how to scale your agile projects.  I presented a powerpoint on this topic last month called Scaling Agile and Philippe Krutchen has an excellent piece that explores this topic in more detail:  Scaling Down Large Projects to meet the agile sweet spot.

 

June 06, 2008

Agile Unified Process

Agile development techniques emphasize a powerful value system that increase productivity and effectiveness of teams, however, they become even more powerful when blended with the full project lifecycle methodology of the Unified Process.

Managing software projects is one of the more complex endeavors within the IT discipline.  Software development relies on individuals collaborating together and as anyone who has been following the recent US presidential nomination process knows this can be unpredictable, chaotic and exhausting.  In addition, developing software often means tapping into the only truly infinite resource on the planet, the capacity of the human mind.  While this allows for remarkable innovation it can also mean an unending number of requirements/features and enhancements.  To address this complexity, projects have often relied on well defined processes and methodologies to guide and control these variables.  Unfortunately, in the time it takes to document and follow these processes the market has changed and the project begins to spend more time on version control of its Word documents than it does with software code.  It was for this reason that agile techniques began to emerge with their emphasis on collaboration, low ceremony processes, high quality engineering techniques.  The backlash against more formal approaches meant many agilists abandoned or minimized the benefits of more formal methodologies as unnecessary or wasteful.

The reality is that you need both approaches to successfully manage complex software projects (and probably all projects for that matter).  Effective project managers know that they need to address the project management knowledge areas defined by the PMI (Scope, Time, Cost, Resource Management etc) and in the context of a software project they also know they need to understand the business processes, requirements, architecture, code, testing and deployment necessary to create a software solution.  One of the best sources for an abstracted, overarching software development process can be found in the Unified Process (which has many variants ranging from RUP to OpenUP to EssUP), it provides a natural container for the values/engineering practices of the agile techniques that strengthens their effect.  Since the Unified Process also contains all of the knowledge areas of PMI it means you can truly get a lightweight, comprehensive, full project lifecycle methodology by blending these techniques together.

To get a better sense of how to blend Agile and the Unified Process together, I've put together a powerpoint set of slides that provide some more detail and offer some real-world examples.  You can find these slides at http://www.bryancampbell.com/Files/AgileUP_PM.ppt.

June 02, 2008

Great Walls of Wonder

For small, co-located development teams the use of 'information radiators' that illustrate status and progress can be very effective and low cost mechanisms to increase velocity and throughput.  One approach is to create a Wall of Wonder using task cards written on ordinary index cards.

Development team with a Wall of Wonder behind them

I recently wrote an article on ITToolbox.com about the use of Cards in agile oriented development projects.  In describing the use of task management cards I referenced the term "Wall of Wonder' which resulted in a number of emails asking for more information about this technique.  Essentially, a Wall of Wonder reflects some of Alistair Cockburn's writing about creating information radiators to convey project status that can be easily understood, changes frequently and is visibile to the team and other stakeholders (in XP parlance these are know as Big Visible Charts).  There are many ways to accomplish this from posting project burndown, defects, issues and stories to having green and red lava lamps that show the status of the latest CI build.  All of these techniques serve the purpose of lifting information about the project out of databases and proprietary tools like MS Project/Primavera/ReqPro/etc into the 'visual domain' where they act as a scoreboard to help project teams focus on the right outcomes.

A Wall of Wonder is a visual information radiator that software development teams use to manage their tasks and activities during an iteration.  The Wall of Wonder is a highly tactile and visible tool that requires very little in the way of infrastructure or training to implement.  The Wall of Wonder reflects activities and tasks associated with your iteration and to convey this, index cards are used.   One reason, index cards are so useful in managing complex software development processes is because they're so simple.  Index cards are readily available (I've personally driven to many Office Depots to grab cards prior to facilitating planning sessions at client sites), they require little in the way of training, they're highly tactile and they're inexpensive. 

One of the most telling benefits of the Wall of Wonder and leveraging Task Cards is the level of collaboration and engagement that occurs. The cards themselves are an invitation to 'have a conversation' about a feature or requirement, similar to that advocated by Ron Jefferies. Enough information is available on the cards to prioritize and assign work but not so much that a developer will know exactly how to realize the functionality on the card.  Another benefit of the cards is that different roles can work together to ensure that all the work on a card is completed.  On many of the projects that I have managed the final test of completeness was having a tester walk through the code with a developer to ensure it worked to its specifications and was appropriately documented.  The tester was armed with the Red Marker and when satisfied that a card was complete would 'approve' it with a mighty swipe of the marker.  Developers who claimed they had completed their task card but didn't have the 'official' red marker check were quickly reminded that they weren't really done.  The cards also became a fun way to show progress and bring some friendly competition into the development lifecycle.  One of the developers on a project I managed once completed five cards in a single day, from that point on he was nicknamed 'Five Card', a name that persisted for several years after the project!

If this topic sound interesting, I've written a more detailed overview of a real world example of a Wall of Wonder on my website.  I'd be interested in hearing more about how others are using Visual Radiators or Walls of Wonders on their projects, so if you have examples or ideas feel free to share them.