Thursday, June 4, 2020

An Interactive Resume

"I think your resume is THE BEST technical resume I've ever seen.  I think every technical resume should be like this," says my program manager friend.

"Really?" says I, "What version are you looking at?  Word?"

"No," says she, "Tableau.  It makes it so easy to see everything you've done and in what time frame."

I knew that I liked my interactive resume, but I was surprised by this reaction, because things that my nerdy little brain like aren't always popular with other humans (not that my friend Dawn is really like other humans).

"If you do LinkedIn, you should do a vlog/story and post it", says she.

So, here I am, making my first post on my business blog since 2016.  If you want to skip straight to the interactive Tableau-based resume without having to scroll through my ramblings, you can look at it here:
Click to go to Tableau-based interactive resume

To go straight to Creating Your Interactive Resume, go here.

Why Re-engineer my Resume?

I have worked in software since 1991, focusing on business software, mainly using Microsoft tools, and participating in development, analysis and project management realms.  In March 2020, I was put on "Pandemic Leave", so I needed something else to do to keep myself occupied for the duration.

Most recently I had been working on a complex data transformation initiative, sorting out how to migrate person and company data from a heavily denormalized flat-file system (which houses duplicate person and company data in no less than seven separate sources) to a relational database, and I had been having the time of my life (don't judge).  It renewed my passion for data, which, frankly, I've always had, but never focused on in a meaningful way before.

Because I'm so fired up about data right now, I chose to spend my "Pandemic Leave" learning Data Analytics and signed up for a "master course" that teaches Python, R, Power BI and Tableau.  I learn best by doing real-world, meaningful-to-me projects, rather than the pretend projects that you encounter in school, so I have been exploring some of my own favorite datasets (some Calgary Outdoor Club data, local pollutants vs my daily lung health, etc) with my new toolset.  You can see some more of my meaningful-to-me data viz projects here.

One of these days, my gainful career will re-ignite, but to get there I'm going to have to update my resume and pound some pavement, so I started with the resume.  I was asked by SI Systems to provide a more detailed version, including ascribing every tool I'd worked with to each project.  As I was doing that, I was thinking, "this could make an interesting data visualization, if one happened to be OCD enough to gather and describe her historical time records."  I was also inspired by one of the showcase Tableau Authors, Eric Balash who visualized his own resume here.

Creating my Interactive Resume

I used my resume, and my company invoices, to gather the data I needed to "viz" up my resume, breaking it down by the key pieces of information.  I decided to include not just my time spent officially working (i.e., getting paid), but also relevant time I've devoted to clubs that I've been involved with, as well as my professional development time.

Sector line chart race

My resume consists of three "pages":
  1. The main page, which provides an introduction and overview, plus links to the two additional pages:
  2. A breakdown of my time by Roles, Sectors, and Tools/Technologies (this one includes three Flourish-based line-chart races, one for each category), and;
  3. A breakdown of my time by Year (this one includes a snazzy timeline graphic).  
Go ahead and give it a test-drive here.

Creating Your Interactive Resume 

To create your own interactive resume like this one, you'll need:
  1. A Tableau account (Tableau Public is free)
  2. A data store (e.g., Excel spreadsheet) of your career, which breaks your time down into Year and Organization, plus the relevant categories to your career (e.g., Sector, Role, and Tool/Technology).  For a lot of my time, I was working simultaneously in more than one role and/or using more than one tool - I just broke those down by approximate percentages of the total time spent so as to not double-report my time.
Excel spreadsheet data store detailing my career 

You can then start to create your own visualizations of your career, and pull them together into a resume.  If you're not into learning how to use Tableau, my colleague, Robin, is interested in creating your Tableau-based resume for you (and trust me, he is much better at the visual design than I am).

Any questions?  Feel free to reach out.  I'll just be sitting here visualizing my iTunes library.

Flourish-based Radial Diagram of my iTunes Library




Thursday, May 26, 2016

Productivity Makeovers: Vera, Vicky and Brenda


I am the perfect storm of productivity:

  1. I'm a kudos junkie and love getting stuff done
  2. I'm essentially lazy - I don't like to work any harder on anything than absolutely necessary
  3. I'm also cheap, so I know lots and lots about affordable (and free) tools
The last few months I've been working with some people as a "Productivity Personal Trainer" to help them reduce their thrash and spend more time on the things that contribute to their bottom line.  Here are some of their stories.

Vera - Paper Scrap Hell

When I found Vera she was living in Paper Scrap Hell.  She had scraps of paper for everything, including her passwords.  Her password scrap system was so ineffective that she often completely lost passwords and, in frustration, ended up creating new accounts.  She had two Facebook accounts, two Twitter accounts, five YouTube accounts, and various services that linked to and posted to any combination of those multiple accounts.  

My first move was to get Vera off of the paper scrap password system.  I set her up with PassPack, one of several great online password databases.  Then I helped her clean up her extra accounts, making sure she only had one account per service, and that all of the related services pointed to the one correct account.  

Once her accounts and passwords were under control I set her up with a free Wiki from PBWorks for instructions and processes, and Wiggio for project management and collaboration.   

Vera says: "Rhonda has been my Productivity Personal Trainer since January 2016.  She's helped me enormously in getting organized, focused, and making the best use of my time.  I have a momentum now that I've been seeking for years and have gained confidence that I will be able to effectively move my projects forward.  If you get the opportunity to work with Rhonda you will be glad you did."


Vicky - Calendar Thrash

Vicky came to me with a simple problem: She was spending up to two hours a day managing multiple calendars, including:
1) Local Outlook calendar (this was her main calendar)
2) Google calendar 
3) Exchange calendar provided by a large client

She has lots of small clients and was having to take appointments from them manually, and then update all her calendars with the appointment.  If an appointment changed, she'd have to update all her calendars to keep everything accurate.  

Vicky had an idea that she wanted a self-serve tool that her clients could use to book appointments with her, but the tool could not add to her time spent managing calendars.  She wanted to link her multiple calendars together so that she didn't have to manually synchronize everything.  

First we eliminated her local Outlook calendar and made her Google calendar her main calendar.

Next we shared her Google calendar with her client's Exchange calendar.

Finally, we set her up with the Acuity Scheduling  tool on her web site and sync'ed it with her Google calendar so her clients can book their own appointments which go directly to her main (Google) calendar.

Vicky says: "I wanted to take my business to the next level but I was limited in how much I could develop my business because I was caught trying to keep track of information that was kept in different places and in different formats.  Rhonda researched the best options for me and my business, always mindful of budget and came back with best advice and recommendations for moving forward.  Within 2 weeks, my admin time was reduced by 60%... it's freed up an extra 6 hours a week for me to develop my business and increase my revenue.  The ROI was almost immediate."


Brenda - Inbox Zero (The Holy Grail)

Brenda considers herself a very productive person by nature, but she'd fallen behind on tools and options that were available to her to make things even better.

Over the years she'd developed her methodology of keeping track of things she had to do within her Google Calendar, which contained not only her daily appointments, but also reminders to herself.  The calendar would send e-mail reminders to Brenda each day and she would use those reminders to keep herself on track with everything she needed to do.

There were some problems with this system, though.  First of all, the calendar was very cluttered and difficult to understand with all the reminders in it.  Secondly, the e-mail reminders were good, but they cluttered her inbox, and she had no decent way to 'defer' anything so she found herself daily, or even multiple time daily, having to slog through her inbox for reminders of things she had to do.  Her daily goal was to keep her inbox to less than 50 emails to make this exercise as streamlined as possible.

I helped Brenda get set up with two new tools to help her better manage her "to do" list:
  1. Streak for GMail: Although Streak is primarily a CRM, it has a great productivity feature - the ability to "snooze" an e-mail in your GMail inbox, which causes the e-mail to temporarily disappear, and then re-appear at the time you've requested it to return.
  2. Todoist: A simple to-do list that also attaches to your GMail
Using these tools has helped Brenda dramatically increase her already good productivity.  

Inbox 50?  No way - each day Brenda is able to reach Inbox ZERO by "snoozing" incoming e-mails to a time that she can appropriately deal with them.  Now the only e-mails in the in-box are new messages (which promptly get dealt with or snoozed until a more appropriate time), and snoozed e-mails which have returned at the appropriate time.  

There are no more "to do reminders" in the Inbox.  They're all in the Todoist list which Brenda reviews first thing every morning, and then a couple times throughout the day to keep herself on track.  

Her calendar now contains only the things that a calendar should actually contain - appointments, anniversaries, birthdays.  Her "to do reminders" are cleaned off.  

By using these new tools and evolving her daily productivity methodology, Brenda has saved herself at least an hour a day, worries less about forgetting things, and is far less likely to be late on a task or forget it altogether.  

Brenda says: "OK, you caught me.  Brenda is actually me, Rhonda, the author of this article.  What kind of productivity personal trainer would I be if I couldn't apply my best practices to myself?  Through my research and learning about various available tools I've been able to help myself be considerably more productive, which of course makes me tremendously happy since... as you'll recall... I'm essentially lazy."

Saturday, November 28, 2015

Offshore - A Novel Solution for Working With Tennis Elbow

This morning I did some programming, but I didn't touch the computer.  Instead, I worked with a young man from the Philippines who served as my arms and hands.

I have tennis elbow (tendinitis) in both of my arms.  I'm doing everything I can to heal my arms including rest, heat, braces, stretching, massage therapy, and acupuncture.  Things are starting to heal, but tendinitis is a notoriously slow injury to recover.  While my arms heal I still need to work, and I need to do that without further injuring myself.

In order to continue using the computer without exacerbating my injury, I've been exploring methods of computing without my arms and hands.  I've started using voice recognition software, which is how I am writing this blog.  The voice recognition software might be able to help me with programming, but frankly I'm not willing to undertake the learning curve that would go along with becoming effective that way.

I decided to try offshore help in a novel fashion.  I posted a job for a programmer's helper - someone who could poke the computer on my behalf.  I received many applications from programmers and other technically savvy resources, plus from admin people.  Prices ranged from $3.33USD per hour all the way up to $50.00USD per hour and more.

I interviewed a few people who fell on the "more affordable" end of the price spectrum (there's no point working if I'm paying out more than I'm bringing in just to do it) and started working with two young fellows - one from the Philippines and one from Serbia.  The guy from the Philippines is a programmer.  The guy from Serbia is an engineering student with an interest in programming.

We use software called Team Viewer to work together.  At the start of the session I send them a Team Viewer ID and password.  Using that information they take control of my computer.  I tell them what to program, and they type and click and poke everything out for me.

During the session we talk on Skype using different devices (not our computers).  We cannot have Team Viewer and Skype running on the same computer at the same time otherwise we get a feedback loop from my helper having his Skype running alongside a connection to my computer with my Skype running.

Both of my helpers are excellent.  They are smart and keen with strong knowledge of programming and database environments and they both have great attention to detail.  They both add value by catching my mistakes and making suggestions, and I expect that over time they will add more and more value this way.  I had thought to enlist more than two helpers but I think I got lucky and the two that I have will provide all of the availability and skills that I'm going to need.


We are learning to work together and getting faster as they learn the environments that I work in and I learn how to properly describe what it is I expect them to do.  This is not pair programming.  Pair programming is when two programmers sit down together to work collaboratively on a software development task.  What I am doing with Gvozden and Jaypee is completely different and has unique challenges.  They aren't doing any programming - I am.  They just act as my arms and hands.  The challenges come because they can't see me so I can't point to show them what I'm talking about as I give instruction.  In a way they are blind, and in a way I'm hobbled without the use of pointing and gesturing.  But I'm learning, they're learning, we're all learning, and I am able to work without exacerbating my tendinitis.

Friday, September 4, 2015

Tips for a Successful Project With Offshore

There are as many different ways to use offshore resources as there are people who engage offshore resources.  Over the years I have developed techniques that work well for me in my situation.  Here are some things that I do to ensure project success.

Use Offshore Resources for Isolated "Heavy Lifting" Tasks

The project I'm working on is MY project.  I stay knee-deep in key activities and retain the intellectual capital.  I use my offshore resources to perform isolated technical "heavy lifting" tasks of developing specific design and code deliverables based on the very detailed design I have provided them.

I do not rely on my offshore resources to provide project management, requirements gathering, systems analysis or quality assurance tasks. Those tasks are mine.  They are crucial to ensuring the overall success of the project, which is, ultimately, my responsibility.

By keeping my supplemental resources to the isolated technical tasks, I minimize the risk of the loss of intellectual capital if/when my resources move on.  I therefore provide the crucial continuity to my clients and minimize risks associated with having to replace a resource.

By performing the project management myself, I remain the key point of contact for my client and I always know the exact state of the project.

Through extensive requirements gathering and design activities, I come to understand my client's needs very thoroughly.  Unlike many of my resources, I have the same first language as my client and I have a basic familiarity with their business and the culture in which it operates.  I guide my offshore resource(s) through comprehensive quality assurance activities to ensure that the requirements are met.  I confirm that the software behaves as expected before my client ever sees it.

See the Work Early, See the Work Often

This is, of course, very important for all software projects, but it is particularly important when
relying on offshore resources to interpret a design and develop what it describes.

The sooner I start looking at the system, the earlier I can catch and correct any miscommunications and get development headed in the right direction.  A demo or picture isn't good enough.  I expect to get my hands on it to start testing as soon as possible in a project.

I set the expectation right from the start that I will expect to see the software early and often.  I establish a plan for having a test environment available ASAP.  I communicate that I realize the system won't be finished or perfect when I start looking at it to minimize resistance to letting me see it soon after it starts, rather than waiting until my provider thinks it's finished.  Thanks to agile methodologies, developers are becoming less resistant to showing their work unfinished.

Time Overlap

Working with offshore resources means that a lot of the work happens overnight.  I find it key to a successful project to have as much time overlap as possible to:
  1. Prevents unnecessary delays when my resources have questions
  2. Minimizes mistakes from my resources going too far down a wrong path before I provide feedback
The bulk of my offshore resources are from India. India has one time zone, which is approximately
12 hours off of where I am (Mountain Time). I say approximately because my time changes twice a year with Daylight Savings Time and theirs does not. Half the year we're 11.5 hours different and the other half we're 12.5 hours different.

Indian resources work a lot with North American clients and are used to adjusting their schedules to accommodate ours. Many offshore people begin their work day in late morning or afternoon and work into the night in order to overlap with the North American morning business hours.

I am an early riser by nature, and the more I work with offshore resources, the more I run with my nature rather than trying to fight against it. I start work by 6AM each day, and sometimes I start as early as 5AM or 4AM, depending on a project's need for me to collaborate with my offshore resources.

It is not necessary for me to begin my work day so early, but it certainly is helpful and gives me the maximum overlap possible with my offshore resources. The expected time overlap should be established early - find out what your resource's working hours will be and negotiate an agreed upon overlap window for work days.  You don't have to be a crazy early morning person like me, but it does help.

Stick to What you Know

I know software and web site development, and it is software and web site development projects that I undertake.

To have a successful project utilizing offshore resources, you need to have a thorough understanding of the processes and tools which will be needed for completing the project, even though you won't personally create every deliverable.

For example, I do not have any experience with "app" development. Occasionally I am asked to bid on an app development project, which I always turn down or refer to another provider. I do not have any understanding of the technologies used for app development and deployment, nor any concept of how long development takes or how complicated specific features might be to develop.  It would be foolhardy for me to take on a project that I know so little about. I would not be providing value - I would be a hindrance. My own inexperience would be the biggest risk factor in my own project.

Other kinds of projects that I shy completely away from are:
  1. Pure web design projects with no database or programming. I have a colleague in Toronto to refer.
  2. Template-based web development. Projects involving creating web sites using Drupal, Joomla, Magento and the like are outside of my skill-set. I have a colleague in Edmonton to refer.
I know what my skills and strengths are.  I supplement projects that I would do anyway, strategically, using offshore resources only to fill in the gaps of my own skills.

Monday, July 27, 2015

Using ELance for Hiring Offshore

I have been using ELance since 2002.  I know there are other sites out there but the ELance service is excellent and I've never had a need to use any other.

Think of ELance as being like EBay, except that instead of connecting buyers and sellers for the purpose of exchanging goods, ELance connects clients and providers for the purpose of exchanging services. 

There is a lot more to using ELance than what I describe below - this is just an overview of how to get started.  To begin, you simply set up an account on www.elance.com.  You can start posting jobs immediately, and you can browse through the providers.

Posting a Job


Posting a job on ELance is easy.  Posting a thorough, complete and understandable job description which is likely to yield good quality bids takes a little more time and effort.

To initiate a job posting, select "Post a Job" under the "Hire" menu.

Give the job a meaningful name.  That is important, but not as crucial as having a great job description.  In your job description include:



  1. A high-level list of deliverables.  Request that the quote include estimated completion dates for each deliverable.  
  2. Your detailed design document (attachment)
  3. Your data model and sample data (attachments)
  4. The desired/intended technologies
  5. The intended audience (ie. is it a stand-alone application, an application shared across a network, an intranet, an extranet)
  6. The intended platform (ie. is it required to run in multiple browsers, on smart phones)
  7. Qualities and qualifications of your desired provider  
  8. A description of your intended development process (ie. communication methods, bug tracking processes)
  9. Project deadlines
Select the category of work and specific skills required.  This will help your job posting reach the most relevant providers.

Set your work arrangement.  See my "Recruiting Offshore Providers" article for my perspective on what kind of work arrangement I prefer.  You can modify the settings in "Location, Privacy and Other Options" if you wish, but I generally take the default.

When your job is posted live on ELance, you receive an e-mail and when you start getting bids on the project, you also receive e-mails.

Selecting a Provider

See my "Recruiting Offshore Providers" article for detailed information about how to best utilize
ELance for short-listing providers.  Once you've chosen a provider (or providers), you simply click the "Select" button.  If you're selecting multiple providers, you simply click the "keep the job open after I select a provider" box.  You can then select another provider.  For each provider selected, ELance sets up a separate "work area" for you for managing your communication, milestones and payments.

Communication


When your job is in progress, selecting that job (from under "My ELance" menu) takes you immediately to the messaging area for communicating with your provider.

When your provider sends you a message through ELance, ELance forwards it to you as an e-mail, and to respond you don't have to log on to ELance - you can simply reply to the e-mail and ELance:


  1. Adds it to the Messages list in your project workspace
  2. Forwards it to your provider

Skype Messaging is a great tool for real-time communication with offshore resources. In my
experience it is the preferred communication tool for lots of offshore resources and they ask to be added to your contact list to open a line of communication.

For more official communication or sending instructions, I stick with my formal method of communication. I tend to send messages through ELance - my service provider for hiring offshore resources. But for answering questions, providing clarification, and brainstorming solutions, Skype Messaging works great.

Payment

Payment for your project is handled via ELance.  How it works depends on the work arrangement you selected:

  1. If you selected an hourly arrangement, your provider will issue an invoice each week and you pay the invoice through ELance.
  2. If you selected a fixed-bid arrangement, you pay the full amount up front into ELance's escrow account.  You pay out the full amount to your provider only when the project is completed to your satisfaction.  This provides a level of peace of mind that you're not paying for something that never gets delivered.

In order to make payment through ELance, you have to connect at least one financial account to your ELance account.  You can attach your PayPal account and make payment that way, or you can attach a credit card.  When attaching a credit card, it takes a few days for ELance to approve the account.  They issue two small charges to your credit card, which show up on your statement.  When you see the charges on your statement, you enter them into the ELance system to prove to them that you hold the account entered.  ELance reverses the two small charges within a few days.



Wednesday, April 15, 2015

Ethics of Offshore

The ethics of using offshore resources is an enormous and complex topic.  I am not a particularly deep thinker, nor am I equipped to tackle the entire topic from all perspectives and all magnitudes.  But I will try here to address some of the ethical situations I encounter with regard to my offshore practices.

Disclosure and Refusal

Some organizations, in their desire to support local jobs and the Canadian economy, do not want to
have development done offshore.  Even though the amount of money from my projects going to offshore resources is relatively small, it is still important that the client know ahead of time and have the opportunity to refuse offshore involvement.

In cases where a client refuses offshore resourcing, I may provide a quote using all local resources (if possible), or in cases where I likely won't be able to find local resources to perform the work, I may have to decline the project.

Impacts to Cost and Schedule

When completing a project which utilizes offshore resources, transparency with regard to cost and schedule are important.  My clients understand what impact the offshore resources have on the schedule and the costs.  I don't want to set false expectations about what software development costs "normally".

When estimating a project, I prefer to do a detailed requirements gathering phase before estimating for design, development, testing and deployment.  With the requirements gathering done, I itemize all expected activities for all expected features and do a "best case", "worst case" and "likely case" estimate for each.  Depending on how much risk I think each item contains, I then choose which of my three numbers to include on the final estimate.  For the items that I intend to outsource, I estimate as though I personally were going to do the programming.  My offshore costs have to include paying multiple providers during the "trial period".  Still though, it is likely that the final costs will come in under what I've estimated for development.  This affords me three things:
  1. Funds to pay multiple providers during the "trial period".
  2. A bit of a cushion in case of resource "flake-out" and having to start over with someone new.
  3. The opportunity to be a hero when the project comes in under budget (assuming that 1 and 2 haven't used up their cushions).

Who Profits from the Cost Benefits

There are two schools of thought with regard to who should profit from the cost benefits of using offshore resources:
  1. The client is getting the same value as if all local resources were used so they should pay the same price, and I, as the service provider, can "pocket" the extra.
  2. Cost savings is one of the benefits of using me as the service provider so it is in my best interests to forward the savings to my client.
Personally, I am of the second opinion.  Because my clients are mostly small to medium-sized organizations, and many of them are volunteer-run or not-for-profit organizations, cost is a huge consideration for them.  I make money only from my own hourly efforts on the project, not from marking up the costs of my offshore resources.


Continuity, Maintenance and Warranties

One of the biggest risks that a company accepts when developing custom software is in continuity,
maintenance and warranties.  There barely exists a manager or business owner who has not been burned by a provider who flaked out on them, leaving them with an incomplete or unmaintainable software application or web site.

Continuity and the ability to provide maintenance and warranties are an integral part of the service I provide to my clients.  By retaining all the intellectual capital of my projects, utilizing offshore resources only for technical "heavy lifting" tasks, I ensure that I can offer this continuity and assure my clients that they will not be left holding an incomplete or unmaintainable product.

One deliverable I always offer clients, whether I use offshore resources or not, is a robust "Tier 3" support document.  A "Tier 3" support document (modeled after ITIL) is the technical support document that describes your technical environment and explains any specialized processing and support processes.  With the help of my offshore experts, I create a robust "Tier 3" support document that can be used by any resource to pick up where I (and my team) leave off.  After all, it's not just my team that can move on... eventually I will want to retire or move on myself, and it's important to provide clients with the information they will need to pass on to a new service provider.  

Impacts to Canadians and the Canadian Economy

This is a particularly thorny subject.  We have all witnessed the nearly complete exodus of certain jobs to offshore providers.  A prime example of this is in call center providers.  Who among us hasn't been disheartened and frustrated by the complete unavailability of Canadian representatives from a Canadian company?

As I mentioned above, I am not able to deal with the larger issues of offshore resourcing.  I am only able to explain how it works in my small world.

I am a one-woman consulting firm.  When I take on a project with a client the bulk of the work associated with that project, from project management, requirements gathering and design, to quality assurance and deployment, are performed by myself.  I use offshore resources only to fill in the gaps with some technical activities, primarily graphic design and coding.  

Many of my clients' projects would not be viable if it weren't for my strategic use of offshore resources.  Otherwise they would be faced with costs in the tens or hundreds of factors greater than by using my services or shelving their project altogether.  

Through my strategic use of supplemental offshore resources, I ensure that I keep Kraft Dinner on the table of one small Canadian business owner (ie. me), and I provide value to small Canadian organizations by helping them complete projects that otherwise would not be viable.  My clients' projects are usually so "inconsequential" in scope and budget that small multi-person consulting firms won't even entertain them.  The benefits that my clients realize from developing their software would otherwise be unrealized.

Quality

I think most of us would agree that some offshore practices involve a drop in quality (ie. call centres staffed with ESL resources.)

When I first started encountering offshore workers in the late 1990s the quality left a lot to be desired.  I was happy about that, actually.  It gave me a level of confidence that my livelihood was not in jeopardy.

Things have changed a lot since the 1990s.  The quality of programming from offshore resources has improved dramatically, even to the point where my offshore resources are certainly as good as, and often better than, local resources I've worked with.

Monday, April 6, 2015

Recruiting Offshore Provider(s)

Recruiting offshore resources can be a full-time job in itself.  Over the years, I've made some mistakes and learned a lot.  Here are some things I do to ensure the most successful recruiting.

Use Fixed Bid Projects

If my project scope is known and finite (and, for best results, my project scope is almost always known and finite) I use a fixed-bid project.  This is the best way to understand, anticipate, budget for, and control offshore resource costs.

Service providers on offshore recruiting sites such as ELance can be an individual; a robust corporation with office space, managers, and support staff; or anything in between.  In my experience, hiring a corporation is guaranteed to bloat costs without necessarily yielding additional quality or improved turn-around.  My preference is to hire individuals or very small companies.

To that end, I post a fixed bid project "budget" on the lower end of what I think the project should cost.  In general, it is the individuals and small companies who bid on projects in the lower price ranges.  The corporations bid on projects in the higher price ranges.

Set Clear Expectations

Offshore resources encounter challenges that I am less likely to deal with myself:
  1. Lack of exposure to, and understanding of, the business and the application
  2. Possible language barriers
  3. Cultural differences
  4. Limited communication opportunities

Before enlisting any offshore resources, I complete very thorough requirements gathering and design.  When creating my design documents, I:
  1. Define expected appearance and all expected behavior
  2. Define the business rules
  3. Provide wording for messages to be expressed to the user by the application (very important with ESL providers)
  4. Create screen and report mock-ups and flow diagrams to clearly communicate how the application should appear and behave.
I set expectations regarding:
  1. When deliverables are expected
  2. What time overlap window I'm seeking (ie. what hours I would like them to be available in order to overlap with my own hours online)
  3. What communication is required
  4. What my success criteria will look like

I ask my candidate to communicate their expected absences and outages (for example, festivals, holidays). 

I confirm that my candidate understands and agrees to my expectations prior to hiring them.

Prepare With a Trial Period in Mind

Whenever possible, I use an offshore resource that I have an established relationship with.  The level of trust and faith that I have when working with Robin, Sukhil, Richard, Gayathri and Chandra (cheers, all) is extremely valuable because I know that I can confidently proceed with them with a good understanding of their strengths and styles.

In cases where I have to recruit a new resource, I always hire more than one for a trial period.  There is a wide range of quality in offshore resources (as there is with local resources), and no matter how diligent I am, there's always the possibility of selecting someone who doesn't work out.

To mitigate this risk, one method that I use is to have a "trial period" build into my project plan and budget.

After I've done my thorough and complete design for the entire project, I split off a portion of the functionality - a deliverable that can be developed first, without dependency on other system features, which requires a good representation of the needed skill set.

I post a project for that one deliverable with a mention of the possibility of additional work after completion.  From the bids, I select two or three promising providers and give them all the same project/deliverable.  When selecting the providers, I try to select at least one proven provider with a solid project history and positive feedback and at least one "newbie".  The proven provider offers a level of confidence in their quality and reliability.  The newbies are often keen to start establishing a reputation in a very competitive market, so they will often charge less and deliver faster in order to get that crucial first success.

Through the trial period, I assess the professionalism, quality and turn-around of each resource.  At the end of the trial period, I pay out each provider and engage the best one for the remainder of the project.

By using a trial period like this, I dedicate one small bit of time and money to finding the right provider.  Jumping in with one favorite provider from the outset leaves me at risk of wasting time and money on a "wrong" resource and then having to start all over again with recruiting.

Short List Carefully

Depending on the nature of your project, I often receive a mountain of bids. 

I carefully review the bids, taking advantage of the tools and information ELance provides:

  1. Check the provider's portfolio, job history and feedback
  2. Review the text of their bid.  I shy away from template (spam) "we have read and understood your requirements and we're ready to begin work" responses.  I look for evidence in the bid that they have read my specific requirements and commented on specific deliverables.  Particularly good bids will include specific questions or make suggestions with regard to technology or technique.
  3. I look for the intended delivery date.
  4. I send a message to candidates I'm considering asking some clarifying questions, for example:
    1. How many people will be working on this and what is their skill/experience level?
    2. Do you have any scheduled absences (ie. festivals or holidays) between now and your posted completion date? What/when are they and what impact will they have on the schedule?
    3. Are you prepared to follow my processes with regards to communication, bug management and test system availability?
     I assess their response time and the quality of the response, and make sure they've understood and addressed my questions.
  5. I rate the proposals using the 1-5 dots on each.  For ones that I'm simply not interested in, I use the "Hide" button to move them to a separate screen. 

Closing the Loop

Using offshore resources can be very impersonal, and I often hear about resources who have had prior bad experiences of being taken advantage of, or treated poorly, or disrespected.  I try to operate with a level of respect to establish good will, even if I'm not going to be working with a resource at that time.  To that end, I close the loop with all of my applications who aren't selected by sending each a note thanking them for their bid, explaining why they weren't selected, and wishing them luck in future.