Subscribe
Locations of visitors to this page
Loading..
tag cloud
Blogs I Read

outsourcing, offshore failure, software development, agile development, distributed software development, ruby on rails development, .NET development, offshore outsourcing, outsourcing failure

Tuesday
Apr072009

Agile Management: How Siemens Manages Offshore Development with Scrum

The Chicago Quality Assurance Association had an interesting lecture at the Willis Sears Tower on March 24th titled "Building and Managing Successful Offshore Teams Using Scrum" There is a big difference between offshoring internal IT projects versus offshoring commercial product development, but some of the same lessons still apply. In the case of commercial work, there needs to be a vested interest on both sides to adhere to the constant communication... doing this offshore is tricky. The main problem with traditional waterfall development (especially when working with offshore resources) is that problems are hidden and they only appear at the tail end of the project. It's no wonder that almost 65% of software projects fail! How many horror stories have you heard about offshore IT projects over budget, out of scope, or over due because no one knew what the offshore team was really doing?

Benefits of Distributed Agile Development

1). Lots visibility and transparency

2). Were able to deliver work fast enough with acceptable quality

3). Offshore team enjoyed agile/scrum, especially the intense collaboration with each other

4). Not one "onshore" resource lost their job

How To Do Distributed Scrum

1). The most important thing is that they took the attitude that outsourcing would succeed; no matter what

2). They did a lot of risk analysis and thought of everything that could go wrong: communication, source code violations, connectivity, etc.

3). Asked their friends and they said "don't do it"

4). Lots of cultural awareness training... learned about the Indian head bob

5). Refined the product backlog: for the first sprint they had 2 guys at a time in the US. Hires were all fresh off the street, not much experience

6). Created a sprint planning calendar

7). Trained Indian team in scrum

8). Lots of product training in the design, architecture, etc.

9). Held both teams to the same standard

10). Created team bios on MS Sharepoint

11). VSS was a problem so they had to merge code every month, it was a huge pain

12). Made sure user stories are well defined; good user story should be well developed

Challenges with Distributed Agile Development

1). Had to have a few conversations about underpromising and overdelivering with their offshore team because they took too many user stories and then ended up failing at the end of the sprint. this is a common issue with Indian developers. The desire to please is common in Indian culture, so it has to be tempered with a sense of creating realistic expectations.

2). Because of the problems with Visual Source Safe, they didn't see offshore code till after the monthly merge... code review revealed problems which they had to fix

For more on agile offshore software development listen to Andy Singleton's podcast on managing distributed agile software developmentand read Martin Fowler's article about offshore agile software development

Also check out Tackling Offshore Agile Development and Making Offshore Agile Work

Thursday
Mar262009

How Rich Sheridan Messed Up My Mind with Agile Development...

Thanks for messing me up Rich... no really, as if I don't have enough problems already... I've got like 8 parking tickets to deal with (written by a vindictive little bicycle cop at that!) But I digress...

So agile development has always been interesting to me but extreme programming never fit my fancy. I knew nothing about it, but the word "extreme" made it sound impractical and unattainable, until I attended a talk by Rich Sheridan of Menlo Innovations (check out Agile Explained) here in Chicago a week ago. It was really good.

In fact it was so good that I sent him this email a few days ago:

Rich,

After your presentation last week I went to another agile (scrum)seminar and spoke to other people about agile (mostly scrum).

I have to say, none of it sounded as cool as the stuff you spoke about. User stories sounds much cooler than "backlogs", one week iterations sounds much better than 30 day sprints, and pair programming is probably one of the coolest programming concepts I've ever heard of. In all, XP sounds more fun, easier to use, and more intuitive.

Scrum seems more popular when working with distributed/offshore resources, so my team will probably end up using scrum, but by planting the seeds of XP, you really messed me up in the head!

Best,

Raza

to which he replied:

Its one of the free services I happily provide! If you really want to get messed up, though, I'll have the charge you for that!

Good luck!

All in a day's work I guess...

We're switching our offshore development team to an agile methodology and I'm now taking this thing really seriously. We'll probably do scrum and adopt principles of XP like pair programming (for more read here) Anyways, if you're starting to work with an offshore development company, you should insist that they follow an agile development method if you want working software.

Here are my notes from Rich's talk:

 

  • Most development teams have critical info tied up in one guy. You have to keep him very happy, or else you're in big trouble. The lesson to be learned is that lone geniuses and primadonnas leave you very vulnerable.
  • At his old company, they did an agile experiment. They decided to put all the programmers in one room and let them actually talk to each other, it worked great. They knew they were on to something...
  • One day, their client (IBM) walked through and liked their setup... said it was the most amazing thing they'd ever seen
  • Rich was influenced by Edison (hence the name Menlo Innovations) who said you oculd have minor inventions every 2 weeks and a major one every 6 months. Verrry inteeeresting... (if you're interested in innovation, check out Triz Innovation... he said there are 40 principles of innovation which can be applied to ANY situation to solve problems... amazing stuff)
  • Collaboration needs to happen because when one guy does the same role, the conversation only happens in his own head and he starts making rogue and dangerous decisions himself
  • Traditional project management is like a neutron bomb, it'll only kill the people... managing risk logs, work breakdown structures, burndown charts, etc. looks pretty, but it hides real problems
  • So they discovered a proces where there were no meetings, but tons of communication, lots of communication but little email, a 40 hour work week with no weekends and defying Brooks law that throwing more developers at a problem slows it down. No cubes, offices, rooms, or doors, but developers were happier.
  • Pairing is the most powerful tool they've ever had. Skills don't matter as much as collaboration and asking questions. Goal for new hires is to get their partner hired. Airlines pair pilots... Lorie Williams at the University of North Carolina did an experiment and found that the paired team produced 15% less lines of code with much better quality
  • Because of agile development, they have no customer support emergencies.
  • Experts don't work on what they're experts in, they just sit nearby and chime in. This is incredibly effective
  • Estimating project work is extremely accurate. Each user story has an actual and estimated time. They keep track over the course of many projects to get an idea of how accurate their estimates are. Over time they can give pretty reliable estimates on software projects
  • Clients have to take an "agile explained" class and agree to meet once a week. Committment is the main factor. This process won't work for projects where people are complacent and not invested in the process. (
  • Testing is not a task, it's an ongoing activity and is build into an estimate
  • Developers are NEVER be punished for missing an estimate... ever.


After the talk I asked Rich how to apply agile development principles to distributed or offshore development teams. A few years ago they had two interns from Ireland. After they went back to Ireland they continued to work for Menlo as consultants. Funny thing is that even though they were half a world away, they were paired with programmers at Menlo headquarters in Ann Arbor, Michigan. How cool is that?

A lot of this stuff is just common sense. Seems to me that no matter which flavor of agile development you choose, you'll have a lot better project outcomes.

Wednesday
Mar112009

What to Really Look for When Outsourcing Software Development

Offshore software development is a real balancing act. With any IT project, you have to juggle constantly changing requirements, shrinking budgets, emerging technologies, employee turnover, and executive support. Add an 8 hour time difference, cultural barriers, and communication problems to the mix and you have a real recipe for disaster.

Whether you're working in PHP, .NET, or Java, if you're outsourcing software development, you'll quickly realize that offshore software development is about more than cheap prices. Good programmers are easy to find but finding a reliable business partner isn't. Make sure you're getting your money's worth. Look for reliability, experience, intelligence, expertise, committment, process, maturity, principles, honesty, responsiveness, trust, and vision.

How does your offshore partner rank?

Monday
Feb162009

How To Find, Evaluate, and Select an Offshore Software Development Company

Cutting costs is on everyone's mind these days. But before you ship software work over to a 3rd world country, think long and hard... Many companies aren't happy with their offshore team. This is the first in a string of posts about how to find, evaluate, and select a reliable offshore software development team. So if you're thinking about outsourcing software engineering work, listen up...

Outsourcing isn't for everyone. You can't send work overseas and expect to get a quality product without investing a lot of time into it. There are a few steps to outsourcing success: 1) selecting the right vendor 2) Getting executive support  and involvement 3) developing specs 4) having a long-term mentality 5) gettting them up to speed on your industry 6) establishing clear communication guidelines 7) having a good QA plan in place.

Choosing the Right Outsourcing Company

Finding a reliable vendor is probably the hardest part in the whole process of working with an offshore team. There is no shortage of outsourcing companies in India, Russia, Philippines, Vietnam, Ukraine, etc. So how do you actually go about finding an offshore vendor? Ryan Norbauer has a good primer finding outsourcing companies The bottom line is that you have to find someone that you can trust. You have to trust that they can get the job done. You have to trust that they will do what they say they'll do. You have to trust that they'll admit their mistakes. You have to trust that they're technically competent. You have to trust that they actually understand you. Nobody said it's easy...

Global sourcing is great (and profitable), if you approach it with the sophistication it deserves.   Here are a few ways to find the right team.

Thought Leadership - The best way to find a solid offshore team is to look for thought leaders in your field. Are experts in a specific technology or within a certain vertical? Do they publish articles for trade journals, speak at conferences, and blog about their experiences? Are they established experts in their fields? Are they leading the discussion around your industry, the problems you're facing, and solutions they've implemented? If they are, then you've found what you're looking for.

Referrals - Another good way to find your offshore team is to get a referral from a friend. If you're working with someone 10,000 miles away, wouldn't you want to know that they have a solid reputation? Some of our most solid clients came from referrals from current clients or friends. Needless to say, these relationships are usually built on mutual trust and respect.

Freelance Sites - Finding developers on sites like Elance, Odesk, Rentacoder, etc. look easy, but it's kind of a last resort. Ideally, you want to meet your team, or at least talk to them. In our early days, we looked for projects on these sites, but it was difficult to find the large, complex projects that we really wanted to get our hands on. I'm not 100% sure, but I have a hunch that if you have a complex software project and you post it on one of these sites, you'll get a lot of bids with no real way of knowing who to actually choose.

Meet Them - If you're reading this blog, you probably know that I own a Chicago outsourcing company. Most of our deals come from me actually meeting entrepreneurs and tech execs in person. They're based on a trust in our abilities and experience. I think it's safe to say that one of the reasons that we've grown is that we have a local presence, or a "throat to choke", if you will. 

Read - Read blogs, discussion forums, articles, white papers, presentations, etc. to get a feel for how the vendor thinks. Do they have experience in certain verticals? Are they problem solvers or just a body shop? What is their corporate culture? It helps to know how a company thinks long before you ever contact them. Needless to say, this blog is a way of promotion my own outsourcing company, but more than that, it's a way to provide insight. We've seen way too many offshore deals fail because  complicitly sit on the sidelines.

 

Thursday
Jan222009

Bangalore Burnout: Why Top Offshore Talent Jumps Ship

I recently met an MIS manager at a large Fortune 100 firm and he chuckled at the SoftwareSweatshop button I was wearing on my suit jacket. We started talk and he mentioned he's currently working with 2 offshore vendors. One is a large, established player, the other is a smaller, agile, sharper team. Guess which one he likes working with better? He finds himself giving more complex projects to the smaller team because of the expertise and attention they give him.

There's a lot of concern about the growing attrition at offshoring destinations like India. It's probably one of the biggest contributors to offshore project failures. With classic "lift and shift" of IT services to low cost countries, it's little wonder that offshore teams atrophy so quickly. Afterall, most talented developers don't want to do grunt work. Experienced developers either jump ship for companies where they can make the greatest impact, or start their own firms.

I spoke to another guy that owned a small 60 man operation in Chennai. They specialized in healthcare and insurance, but turnover was so bad that it was impossible to keep employees for longer than 6 months. They left as soon as they were trained. This tells me that there are 2 kinds of attrition:

Job Hoppers: These are usually younger employees who are looking for better opportunities. They're not always the most experienced or the most highly skilled, but given the talent crunch in places like India, they are still marketable. Most robust economies have this type of employee. They are the natural byproduct of a healthy, growing economy. The problem is their job hopping causes a major headache for employers under constant pressure to meet deadlines and produce high quality deliverables. It's important to know that most of the attrition in large companies takes place at the entry level, as employees seek to move up in their career.

Top Performers: Top performers are the guys who run the show. They get more done than 80% of their colleagues, and are the "go to" guys when there's a problem. When they leave, everyone gets worried. Top performers usually leave because they feel they aren't challenged or appreciated. They are quite seasoned and usually don't leave a job to gain more experience. If they leave it's because something is wrong. This is true for most professions, top athletes, doctors, salespeople, and programmers have matured past job hopping. They demonstrate responsibility and a willingness to do what others won't. If they don't go to a company, this kind of employee typically starts his own firm.

So if you're working with an offshore vendor, how do you minimize the sting of attrition? Here are some thoughts:

1). Hire small firms that are amazing at what they do. They will attract a certain type of developer, typically experienced professionals that have seen the problems you're dealing with. Smaller firms also look for leaders, but know that not everyone can be one. For example, my friend with the two offshore vendors feels much more confident in the abilities of his small, agile team than the bigger one. What's worse is that he sees the really good talent leaving the larger vendor in favor ofniche firms... or starting their own businesses.

2). Don't look for mere technical skill, look for commitment and a willingness to figure things out. Most vendors are the same in terms of technical expertise. You don't need rocket scientists, but you do need people that understand what you're trying to do and will bend over backwards to help you. Their corporate culture, hiring process, and business philosophy is a good indicator of the kind of vendor they will be.

3). Ask the same question in different ways. How much attrition have they had? What retention strategies are in place? What do they look for in candidates? What attracts employees to the firm? Why employees choose them over others? How do they engage employees?

Monday
Jan052009

The Sad Truth About Your (failed) Outsourced Software Development Project

Here's an email I received this week about outsourcing failure. He substantiates what we've been saying all along: most outsourcing vendors are the same. Finding good technical resources is easy, finding a team you can rely on isn't...

All outsourcing vendors are the same. I work in India, China, Malaysia and UK. All of them are already sub-contracting it themselves and have a tremendous shortage of talent.

Resources have no vision and no experience. To mask this drawback, for every smart individual they would have 4 non-performers who have fudged up their resumes and working behind the scenes to get knowledge and experience so they can bargain for bigger and better money.

To the offshore advantage, the onsite and permanent manager has a budget and a fixed time to deliver, so they have to compromise. Unless you are extremely technical and functional and do it hands on, consider it a failure.

The only reason, my projects have all been considered a success is simply I manage both the stakeholders and the technical and functional teams really closely. Every new recruitment on either side goes through me and my onsite support team. I stick to the plan and any deviation from me is costly and you have to get the financier to tell it to the stakeholder. I closely monitor the development as well as on the steering committee of the business.

Most importantly, your relationship skills should be able to wine and dine with the key committee once a week. I have to do it at the expense of the family, something that you will need to consider. You have to work overtime sometimes doing 18 hour days. 12 hour days should be the norm unless the projects are less than 25 million USD. No matter what factors you would consider, the only thing to sell to the shareholders is the money. Nothing else matters.

I have been working on offshore-onshore on some of the biggest projects in the US for the last 7 years and still doing it now. Not just one company but 3 of the biggest companies.
The junior stakeholders along with the indirect business seem to grunt, ramble and complain all they can but at the end of the day, when the board of directors see the money saved at the cost of quality, performance, resources, time, priority, significance, heavyweight, seniority, everything else become oblivious.

Go to any BPO conferences you will soon find out that anytime the project becomes complicated and out of the ordinary, it is a disaster. How do you manage expectations from the beginning will be a key factor for your success and not the failure of the offshoring teams. Remember, blessing of the financier and communication is the only key you will need to deliver.

Monday
Sep222008

Skeptical About Outsourcing Software Development?  Good!

So most of the companies I talk to get 800 calls a week from offshore companies. They're either working with a solid team already, or they aren't interested in building an offshore team at all. It's not for everyone, but outsourcing works very well if you find a sharp team and are willing to invest a lot of time and energy in developing a relationships and processes with your offshore team.

Afterall, some of the world's top software engineering teams work in remote, distributed environments. The key to working with an offshore team is finding someone that is not only technically competent, but that can add real value. A body shop of developers hacking away at your specs creates is worthless. You might save a few bucks, but it's commodity work for what will most likely be a commodity product.

A condensed version of an article about offshore outsourcing advice from Baseline Magazine. The point is that outsourcing seems easy, but anyone that's done it knows it's no cake walk.

========================================================================================

When outsourcing, organizations that focus on short-term cost reductions often rush through projects without adequate planning, due diligence or consideration of the long-term implications of the inevitable changes in business requirements or offshore market conditions. This not only causes them to overlook most of their savings opportunities, but often leads to project failure. However, an organization that knows what to look out for can avoid the mistakes that others have made in the past, mistakes that can be understood in the context of the seven deadly sins: pride, sloth, avarice, lust/extravagance, envy, gluttony and anger.

  • Pride
    Many organizations succumb to the sin of false pride and plunge headlong into an offshoring initiative without performing due diligence. They assume that they (already) have the internal capabilities necessary to plan and manage an offshore operation, when this is often not the case. They also seriously underestimate the management resources required to successfully set-up and run such an operation.
  • Laziness
    You can't just move an inefficient operation offshore and hope that lower salaries will result in cost savings. "Lift and Shift" doesn't work, and, when the process is inefficient it will, in fact, often increase the personnel resources required to do the job, wiping out the cost savings the organization expected to achieve.
  • Greed
    Many organizations will not be concerned enough about the ultimate fate of the business, or, even worse, possess disdain towards the offshore operation. This makes it difficult for the offshore operation to retain knowledgeable and productive staff, leading to quality problems and cost overruns as greater numbers of inexperienced resources need to be thrown at the problem.
  • Lust/Extravagence
    The desire to solve a problem by taking on more, cheaper personnel is extravagant and wasteful and has serious implications for service quality. It's important to remember that many offshore operations have lower productivity and excessively high turnover, reducing cost savings. Don't give in to the impulse to compensate for low productivity with more bodies: It's a false economy. Before you offshore the process, make sure it is efficient. If necessary, re-engineer and improve the process first. Furthermore, even after your processes are off-shored, it's important to continuously apply performance improvement initiatives.
  • Envy
    Don't assume that offshoring automatically comes with big savings and be envious of your peers who are already doing it. Most of the claims you'll find by the promotors of the strategy don't take into account the lower productivity that comes with offshore personnel, higher communication costs with an offshore team, and the additional overhead required to govern an offshore process. Actual savings are often only half of what is claimed.
  • Gluttony
    Don't offshore as much as possible as quickly as possible, like a glutton, with the ill-formed belief that this will maximize savings. Don't overlook the average organization's capacity to digest change, and even smaller capacity to digest offshore change -- because organizations that offshore too much too quick often spend the majority of their time firefighting. The key to success is selective offshore outsourcing, following a careful analysis of what processes are the most likely to lead to savings if outsourced.
  • Anger
    Don't blame the outsourcer when the savings don't materialize, especially if you committed one or more of the sins above. Blame-wise, at least half will always rest with you, and if you committed multiple sins, all the blame rests with you.
Thursday
Sep042008

More Than Cheap Labor: 5 Things to Know When Looking to Outsource Software Development

Maybe you're working with an offshore team, or maybe you're thinking about it. Or worse yet, you've been burned by an offshore "software sweatshop". We've all heard offshore outsourcing horror stories. There are obvious advantages (and disadvantages) to outsourcing. Here are 5 tips to help you choose the right offshore partner.

1). High Value, Not Low Cost – In most cases, when you send work offshore, you're saving quite a bit of money. With that in mind, when looking for an offshore team, don't look for the cheapest provider. Since you're saving money anyway, you might as well look for the most sophisticated partner you can find. In addition to technical skill, you should evaluate their responsiveness, the types of questions they ask, and their ability to manage complex projects.

2). What Kind of Firm Are You Looking For? - There are two kinds of (offshore) development shops. The first are low cost "software sweatshops" who take your specs and do development. This is fine if you have solid specs and are looking for a team to simply execute. The second kind are companies that have experience with highly complex projects in specific industries. They'll have the expertise to add value to your project by asking "what if" questions and challenge your assumptions. They will act as a partner and a peer rather than a vendor. These companies are few and far between. The way to find them is to ask what role they've played in the projects they've worked on.

This was said perfectly by Chris Lynch, VP of Engineering of eProject.com (now known as Daptiv)

"Our specs called for a partner that as technically competent and independent, [who] would tell us what they thought we were doing right or wrong, and who would function as an extended part of our team. We wanted a peer who had enough expertise of their own to recommend content and coding techniques as well"

2). Avoid 'Yes Men'   You'll find very good technical people all over the world, but finding people who are reliable is next to impossible. Our philosophy is that a sign of maturity is the ability to say 'no'. It's extremely rare to find a vendor that will tell you like it is. We've heard countless stories of offshore firms over-promising and under-delivering. You need to look for a partner that can be honest with you from day one, even if it means they might lose your business. A company that sets up realistic expectations is a company you can rely on, even if it's not the answer you wanted to hear.

3). Ask How They Hire and Retain – Attrition is a big problem, make sure you don't get bitten. Experienced developers are constantly looking for the next best offer. Rather then asking about the company, ask about their criteria for hiring people. This will indirectly tell you about the character of the company.

4).Quality, Quality, Quality – It's tempting to believe that sending work over seas will automatically save money. While the hourly rate is significantly less, we've seen many companies spend 3 times more than they expected because of constant rework.  Needless to say, you should ask your partner about their QA procedures. Reliable firms will always include a dedicated QA resource in every project. Experience shows that many software problems could be easily averted by implementing a strong QA methodology at the beginning of the project.

5). Go for the Long Haul – The real value of outsourcing is nurturing a team that can work with you long-term. Longer projects are better suited for outsourcing for a number of reasons. Assigning the right resources to the project, flushing out project specs, establishing clear communication channels, and knowledge transfer between your onsite and offshore teams all take time. Eventually, your offshore team will become an extension of your local team.

Wednesday
Aug062008

Don't Forget to Flush When You Offshore Software Development

I had a conversation with Pete Segar, the CTO of Ergotron a few weeks ago. I read about him in an article about domestic outsourcing and how it's becoming more of an imperative for mid-market firms. More outsourcing firms are targeting mid-market companies (Pete gets his fair share of cold calls). Ergotron is working with an offshore team in Belarus. The biggest reason for working with them was the fact that they had a local office in Minnesota. This helped reduce the inevitable communication breakdown of working with resources half a world away and provide a level of accountability. The biggest problem with global sourcing is accountability. Software project failure Cost overruns and missed deadlines are a grim reality of most software projects, doubly so for offshore/outsourced software projects.

Another big headache when working with an offshore engineering team is the amount of time it takes to develop an adequate spec. I've always said that finding an offshore software development team is easy, but finding a team that understands you and is committed isn't. Finding an offshore body shop full of programmers is incredibly easy, but the real value is outsourcing is choosing a team with the experience, tenacity, and insight to help you flush out a spec. Most companies that choose to outsource do it because they don't have the resources or experience to build their custom applications. The point of outsourcing is to find a vendor with the right skills and experience to solve your problem. 

The best way to evaluate an offshore vendor is to find out their level of experience solving problems similar to yours. It's not necessary that they are domain experts, but they do need to have a problem solving attitude. This means helping you determine the "what if" scenarios of your application, asking lots of questions, and making sure that their solution reflects their understanding of your problem as a business problem, not a technical one.  A strong QA focus is critical also because it indicates maturity. Your ideal offshore software partner will seek to understand your business and make suggestions, not be a passive accessory. To this effect, Narayana Murthy, founder of Infosys spoke of their shift from problem solvers to problem definers:

"We want to be proactive problem definers rather than reactive problem solvers. We want to be chefs rather than short order cooks. We want to go sell high, so we are selling to a high level executive who has a more complete picture of the problem and we want to be trusted advisors to that senior executive so that we can have a shot at helping him define the problem, and then the solution automatically follows that."

 

 

Mid-market CIO's are in a tough spot. On one hand their CEO's are pressuring them to cut costs and pursue a global sourcing strategy. On the other hand they are bombarded with calls from offshore engineering firms in India, Vietnam, Ukraine, Brazil, and the list goes on. As smaller companies look for more than cheap labor when looking for an offshore software team, it's too bad that the Infosys's, Tata's, and Cognizant's of the world that have cultivated vertical expertise aren't beating on their doors for business.

Wednesday
Jul022008

Insourcing, Offshoring, Nearshoring, Dual Shoring, Multi-Sourcing, Rural Sourcing? What ever happened to good old software development outsourcing?

Jon Graham shared the following outsourcing advice for newbies... 

"The outsourcing movement has just reached puberty and will be maturing over the next few years. In the past, it was thought that only large organizations could afford to outsource, but that is not the case any longer. The small to mid size companies are getting into the game as well. However, for the outsourcing newbie's out there that want to take the plunge, there are a few things to consider in order to ensure success."

Whether you're looking at India, Russia, Ukraine, Vietnam, China, Brazil, Montana, or the Philippines, outsourcing isn't easy. Here's a list of tough questions you need to ask:

1. Process: How am I going to manage the work that I am going to outsource? What processes and procedures do I need to have in place? How often do I want updates? What level of information do I need? What delivery model am I comfortable with?

2. Tools: What tools can best help me manage the process I've defined. Do traditional individual tools work; mpps, word docs, emails, spreadsheets? How can I get real time project updates about vital project statistics/metrics? Is there single web-based, software development management (SDM) system?

3. Vendor Selection: What type of experience/skills/corporate culture does my service provider need to possess in order for us to be successful together? Is this a one project stand or is there potential for a long term engagement? What types of work has this vendor done in the past. Interview them as you would a potential employee.

Wednesday
Jul022008

Outsourcing Software Development: The Old "Follow the Sun" Pitch

(This is not a new post. I just decided to change the title...)

A lot of offshore companies will tell you (primarily India, Philippines, China, and Vietnam) that if you work with them, the timezone difference will allow them to work while you sleep. They're an asset because you now have a 24/7 development cycle. Sadly, it's often a liability.   India outsourcing, China outsourcing, Brazil outsourcing, Costa Rica outsourcing, software development, Pakistan outsourcing, .NET development, Java developer

In most cases we've seen, unless the specs are really good, and the development team sees the big picture, a 24/7 development cycle becomes a 24/7 headache. The lesson is that you should either have good specs, or be prepared to pay for specs. A mature development team will tell you this from day one... it's a sign of maturity. We've seen too many floundering projects resulting from poor specs.

I met a guy that was looking for offshore Java developers. He did a lot of research and ended up working with a company in India. As expected, part of their pitch was that they program while the client sleeps, a real 24 hour development cycle. We've heard this pitch before, and in theory it sounds good, but it assumes that the developers don't make any mistakes. In our experience, problems occur when requirements are not clear and there is a lack of communication between both parties. The client ended up working with a "near shore" vendor, but the following advice could help prevent problems with your offshore team.

-Committment on both sides: Make sure you have a local and offshore project manager. The local PM will communicate with users or internal stakeholders and the offshore PM will communicate with developers. It's helpful if they both have experience working with distributed teams.

-The Key to Any Relationship: Whether it's a marriage, a football team, or a team of software developers, consistent and structured communication is the only way to prevent heart-breaking (not to mention bank-busting) misunderstandings.

-Proper Methodology: Agile or Scrum methodology is helpful because it's highly iterative and allows for changes

-Solid QA: The offshore team needs to have a solid QA process in place. Developers aren't the best testers, and they shouldn't have to be. Make sure your offshore team has heavily invested in QA. Ask about their QA process and how they ensure that their work makes the grade.

-Find Solid Developers: Past work, a pilot project, or an exam are all helpful to make sure you're getting a qualified resource. It's not always critical to get an incredibly experienced developer as long as they have a good attitude and are willing to learn. An honest vendor will tell you the strengths and weaknesses of their team.

Wednesday
Jul022008

(outsourcing) Software development is a piece of cake... or is it?

This excerpt came from a post on Gunnar Skogsholm's blog about software project failure... Software development hard. Right from the beginning there are a million things that could go wrong. This list on comes from

Software is risky business. Here's what can (and usually does) go wrong:

  • team dysfunction
  • failure to understand software (process, costs, etc) 
  • lack of leadership or vision 
  • failure to understand, communicate, document the problem domain description 
  • failure to architect a solution 
  • failure to design a software application 
  • failure of project management 
  • failure to select good tools 
  • failure to select reliable technologies 
  • failure to implement the software 
  • failure to test the software 
  • failure of quality assurance       

Software development is...            China outsourcing, India outsourcing, Pakistan outsourcing, Ukraine outsourcing, Philippines outsourcing, software development, outsourcing failure                           

Thursday
Jun192008

Outsourcing Software Development? Look Before You Leap...

China outsourcing, Russia outsourcing, Pakistan outsourcing, Philippines outsourcing, Pakistan software, Russia software, Ukraine outsourcingThe US economic recession is hitting a lot of businesses hard. I got an email from the CISO of a large publicly traded company saying that they're looking for new outsourcing destinations since wages in India are rising. Apparently outsourcing to Pakistan,  is becoming more attractive, as well as other countries you wouldn't immediately associate with software outsourcing like Slovakia, Vietnam, and Turkey.

But there's more to outsourcing than scouting out the next low cost destination (unless you want to get burned by a  software sweatshop) Outsourcing isn't easy, and unless you're smart, the cost savings won't be the main factor leading to your decision. Tons of reports have suggested that you don't save nearly what you initially expected. It's easy to think that sending work overseas is a cinch; IT'S NOT. Outsourcing works great if there is a clear understanding of the nature of the relationship. Relationships based on trust, partnership, and value should always outweigh low cost. It's a matter of time before your offshore vendor raises their prices. Stop chasing the next low cost offshore destination. Outsourcing is not as easy as you think.

Keep the following points in mind when looking for an offshore vendor:

 
1). Lack of Communication: Expecting to send work to some foreign land without both sides being vested in communicating daily will lead to failure. If you go offshore, be sure that you're ready to spend time discussing the status, challenges, accomplishments, and goals of your project.

2). Undefined Requirements: I recently asked a question about software project failure on LinkedIn a few weeks ago and was overwhelmed by the quantity and quality of the responses. It was actually in response to an article that I found on the Wall Street Business Technology blog about failed corporate IT projects The main theme from the 76 answers (and counting) that I received is that unclear specifications and lax project controls result in failed projects. With onsite IT projects going belly up, can you imagine how hard it is to keep an offshore project on track? Don't underestimate clear specs.

3). Currency Fluctuation: Now this is really sad. Companies that went to India 5 or 10 years ago are now looking for the next low cost country to shift their operations. Don't make lowest cost the only reason for choosing your offshore vendor; it's short-sighted and unsustainable.

4). Corporate Culture: Do you value quality over the lowest cost, do you treat your employees like the geniuses that they are, do you make decisions based on principles and values rather than expediency? Well you better make sure your offshore partner does also. Often times they won't be the cheapest, but they'll be your ace in the hole.

5). Losing Key Resources: Too many offshore projects are hindered because of attrition. This is an all too familiar problem with companies that have sent work offshore. In developing countries like India, wages are rising, diminishing most cost savings. The rising wages mean that there is more opportunity, so top talent is jumping ship for more lucrative opportunities. Does your offshore partner hire generalists or experienced specialists? If your offshore vendor is a "we do everything/one size fits all" firm, chances are they'll have high turnover. Truly great companies are very selective about who they hire and fanatical about keeping them happy. No doubt, not everyone will be a superstar, but experienced team leads will bring the best out of the rest of the team.


Friday
May022008

The Difference Between a Methodologist and a Terrorist?

software methodology, software engineering, software development, agile, scrum, .NET, java, ruby on rails, outsourcing, offshore software, india software, russia software

 

...you can’t negotiate with a methodologist.

Needless to say, following a good methodology is an integral part of any respectable software development effort, particularly when you’re working with an offshore team. In fact, most offshore horror stories have less to do with the technical expertise of the developers and more to do with how the project is handled. Many times projects get compromised because the vendor is juggling too many projects at once. Resources are scarce, teams get stretched, deadlines are missed… you know the drill.

Project failures rarely happen at the ‘ones and zeros’ level, so the real trick is to communicate with your team constantly (daily) to make sure expectations are clear and work is being done according to plan. So what you’re paying for is the set of principles that your vendor has established, their culture, their hiring and retention strategies, their growth vision, their industry expertise. The real question becomes, at the moment of truth, are they willing to cut corners and compromise these principles?

Even if they have technical weaknesses, working with principled methodologists who compromise for no one will always lead to success. Companies that define themselves and refuse to compromise will give you the only thing that really matters in business… trust.

Wednesday
Apr232008

It's Like Having a Gun to Your Head

I just saw a great video on the Scrum methodology delivered by Ken Schwaber at Google back in 2006.

Scrum is like having a gun to your head
; if you can't produce results, be transparent, look for the simplest solution, adhere to strict deadlines, be held accountable, work incrementally and iteratively, respond to dynamic change, and deliver quality, you, your project, your company, and your career are dead. It's not all gloom and doom though, you'll be surprised at what you can come up with if you actually do follow this methodology.

It's perfectly suited for offshore software development. In fact, I can see why distributed software development teams that don't follow Scrum or Agile usually fail.

But as you'll see, Scrum isn't for everyone. It means looking at the facts, good or bad, and making very tough decisions. True adoption of Scrum is a real test of an organization's culture. With Scrum, you can't stick your head in the sand. A very valuable lesson for anyone that's been part of a failed offshore development effort.


Thursday
Apr102008

Outsourcing Reality Check: Good Developers Aren't Cheap

So we all know there's no such thing as a free lunch. But intellectually knowing that doesn't stop smart people from believing it (myself included). Whenever you pinch pennies and cut corners, you're gonna get burned. It's a law of nature; there's no way around it, period. Like they say, when it comes to cost, time, and quality, you can only have 2 out of the 3. software development, offshore, outsourcing, ruby on rails, PHP developers, software engineering

I own an outsourcing business based in Chicago... and we don't sell ourselves as the cheapest provider.

Consider this, a friend of mine visited India a few weeks ago and wanted a custom shirt made. It cost him $45 bucks, $42 for the material and $3 for the labor; labor is the only cheap thing in developing countries. Energy, office space, etc. is the same:

  • Gas in Pakistan is about $5/liter
  • Rent is close to $1200/month
  • Electricity is about $400/month and it isn't even reliable so we're seriously thinking of putting down $30 grand to install solar panels. Solar panels in Silicon Valley is common, in Pakistan it's unheard of

This doesn't take into account the benefits we give our employees like lunch, health care, etc. If we didn't do any of this, our good developers would all quit and we'd be stuck with a bunch of crappy developers.

We do NOT want to run a software sweatshop. We want to attract and retain good developers and we know that it costs money to do that. We look for clients that value quality over pinching pennies.

If you're working with a software sweatshop, then yes, you should expect dirt cheap prices (some firms are charging $3.36/hour!) If you don't think the quality is worth what you're paying, then work with someone stateside. Prices are rising, so companies like mine sell value, not sweatshop prices.

Nothing worth value is ever cheap. Yes, you will save money by working with an offshore development team, but you'd better be prepared to work with a firm that sells value, not cheap labor.

Thursday
Apr032008

Why Our Offshore Development Team is Learning Ruby on Rails

We make business decisions based on our needs. We're a small firm and don't have tons of cash and resources to waste so everything we do has to have a measurable impact on our business.

There was an interesting question on LinkedIn today asking what one skill software developers should learn that would make a noticable difference in my business. There's a big push for agile development, so I'd show them the benefits of agile development and how it makes their job easier. We're building some consumer facing web apps so an agile-iterative mindset is crucial.

In terms of technology I'm pushing for Ruby on Rails. It's nimble and fun... and of course facilitates agile development. I handle the business development for my firm (I'm not a programmer) but I've taken an interest in RoR just because of it's ease of use. There's a good article called moving from Java to Ruby on Rails if you're interested in some hardcore facts.  Here's why we're encouraging our programmers to learn it:

ruby on rails development, ruby on rails team, ruby on rails developers, offshore ruby on rails1). It's Fun: We're taking on our first RoR project and the developer is stoked. He's working on a few other projects right now, but apparently this has him pretty excited. Nothing can curb offshore attrition like giving your employees fun, challenging work.

2). Less is More: Write less code, do more stuff. Need I say more?

3). It Makes Us Look Cool: If we want to survive as a business, we better be really good at what we do. There's plenty of opportunity out there so ignoring it would be to stick our head in the sand.

4). Time Is Money: Revisions, updates, and changes take a lot less time.

5). Dolla Dolla Bill Y'all: It's free!

6). It's Pretty: It has a really good AJAX stack

Wednesday
Apr022008

Indian Outsourcing: ISO this, CMMI that...

outsourcing partnership, offshore partnership, outsourcing vendor, offshore vendor, offshore firm, outsourcing firm, offshore software, outsourcing softwareI may have lost a client, but I think I just made a friend... I just had lunch with the owner of a company we were trying to do business with. They sent out an RFI to a bunch of outsourcing companies. He was looking for a smaller shop that could grow with him give him the attention he needed. We spent two weeks looking over the RFI and crafting a very detailed response; and then we waited. We didn't end up getting the deal, but it looks like the beginning of a good relationship (he paid for my lunch today as a way of thanking us for responding to the RFI). We discussed our business, past failures, and the excitement of being a young entrepreneur a new father over fish tacos and guacamole. He just got back from a trip to India visiting some potential offshore partners and wrote a fun set of posts India is Winning...  and Delhi Belly (hilarious)

We didn't lose the deal because of anything we could control. We have a solid technical background and an aggressive, problem-solving attitude, but we lost the deal to an Indian competitor that was obviously much bigger and more experienced than us. Our size, the political situation in Pakistan, and the fact that we haven't completed our ISO and CMM certifications influenced the client's decision. But that's ok, it comes with being an entrepreneur, it's just a part of the growth process. The encouraging thing is that it seems like we're on the right track in terms of attitude, technical skills, and vision. This wasn't our first deal and it won't be our last. In fact, now that I've met with the client, I have the opportunity to learn from him and gain advice on how to grow my own firm. It's funny how things turn out... this may lead

This weekend, two of our guys and my partner, Nayyar, just got done putting in 35 hours of emergency development work for a client with a big demo on Monday. The client made some last minute changes and was freaking out because we hadn't fully implemented them... a real nail biter. After we took care of that situation, I was talking to Nayyar about our lost deal on Skype and he said "one more thing that is more important then anything else.. They may be agile, CMM whatever but r they committed and dependable? That he will only find out after working with them"  With offshore software development, the company can be ISO-this and CMMI-that, but at the end of the day, it's all about how committed they are. A client of our was working with an outsourcing company that was a Microsoft Gold Certified partner. He was burned so bad, he wanted to give up on outsourcing.

When Nayyar and I spoke later he told me that we're going to raise our rates higher than I thought. I have to admit, I was scared "How can I sell this rate?" Other companies are charging much less than this. No one's gonna buy from us, we're going to go out of business" But then I thought about what Nayyar said and I remembered that we're looking for good clients that demand quality and are willing to pay for it. It reminded me that we're selling high value, not low cost.

At first I was uncomfortable with the rate hike, but coming from a guy who spent 35 hours of his weekend helping a client in need, I'd say he's absolutely right.


Friday
Mar282008

Accelerance and 'How to Select an Indian Outsourcing Partner'

                                                         india outsourcing,  software development, software engineering, offshore software, .NET development, Ruby on Rails development                             

Never really read Steve Mezak's work (CEO of Accelerance) , although I'm not a member of his partner network, he makes some good points in a post called 'How to Fail at Outsourcing' It's actually a comment on an article in Information Week called  'How to Select an Indian Outsourcing Partner' The InformationWeek article highlights 3 main issues cited by CIO's who cancelled outsourcing contracts:

  1. Need for excessive management/oversight
  2. Unrealized savings
  3. Work quality

Steve said that most offshore failures occur when you don't find the right type of outsourcing partner he says,

"By wrong kind of vendor, I mean one that is happy to charge you for some junior programmers put in a room for you, and even give them computers and an Internet connection, but then fails to follow through with any kind of supervision, management or professional software development process."

 He's right in saying "I think a key mistake people make is treating software development only as a financial transaction rather than recognizing it as a collaborative and creative process. If all you hire is cheap programmers without experience, no matter what country they are in, then you will get what you pay for"

What you really pay for in outsourcing is project management and communication. I mean how hard is it to find .NET, Java, or Ruby on Rails developers? Good developers are easy to find anywhere, finding someone that can get the job done is the real issue.

You really pay for the process of managing the developers and providing a thorough product. And I'm gonna let you in on a little secret GOOD DEVELOPERS AREN'T CHEAP, whether they're down the hall or across the world.

Outsourcing is about high value, not low cost.

Tuesday
Mar182008

5 Reasons You Want to Work with a Jerk

Often times we hear outsourcing horror stories revolving around communication failures and mis-managed expectations. Read this post for a list of top outsourcing complaints. Software development is a highly iterative process that requires clear and constant communication between the local and offshore team. In most cases, there are tight deadlines and client expectations to be met, leaving very little room for error. In these tight situations, we've seen offshore teams paint pictures that are far rosier than they really are. In the middle of a critical software development project, you want the truth from someone you can rely on, even if it's not the answer you want to hear.

                                                                                                                       jerk.jpg
 

There was a really good string on LinkedIn last week about lovable fools vs. competent jerks. It stated that given the choice between a competent jerk and a lovable fool, which would you choose? I say you should take the competent jerk everytime. In most cases, jerks really aren’t jerks; they are extremely good at what they do and very focused. They know what they can do and what they can’t and don’t tolerate non-sense. One reader noted, "When I'm in a high-pressure situation, like proposals, real-time operations, etc., I may overlook the jerk's anti-social behavior to get the job done. I don't have time to bring along the fool."

The bottom line is that distributed software development requires competent individuals that don't sugar coat the facts. When you're working on a critical project, you want the raw dope, so you can make quick decisions. I'm not saying you should work with anyone rude or arrogant, you should work with people that are direct and no non-sense. These people are sometimes mis-categorized as jerks. Some would say Kobe Bryant, Donald Trump, Prince Nassim, Russell Crowe, Puff Daddy, and Bobby Knight are jerks. Again, I don't think you should work with pompous, self-important, conceited snobs... but there's a lot to be said about having a strong personality and high performance.

Here's why I've enjoyed working with every 'jerk' I've ever worked with: 

1). Most 'Jerks' Aren't Really Jerks: Most jerks aren't really jerks; they're either a bit anti-social or just plain misunderstood. I find that people that are considered jerks are actually extremely smart, and are actually quite nice. 

2). 'Jerks' Aren't Afraid to Tell You the Truth: Again, they don't sugar coat reality. They tell you the truth and allow you to make solid decisions based on accurate data.

3). 'Jerks' Are Very Reliable: 'Jerks' are high impact and results oriented. They get the job done well, and take responsibility for mistakes.

4). In Their Element, 'Jerks' Are Good at What They Do: It's just that when they're in their element, they can be a bit intense. I mean seriously, how many real jerks do you really know? Lovable fools are great, but sometimes they can cause big problems. Take it from a lovable fool.

5). Lovable Fools Break Things: Think Jar Jar Binks... Yes, us lovable fools have our place, but don't let us around  anything too critical.

6). Lovable Fools Hide Their Incompetence Better: Lovable fools hide behind big smiles and elaborate excuses. When your project is 5 weeks over due, you want to know how it's going to be fixed... NOW.