An outsource experience

Recently I have been working on an outsource/remote project on a software solution consisting of both web and mobile parts. As I am always interested in outsource projects, any experience on it is important for me. So I am trying to document my experience on this project in an almost none technical perspective.

Keep calm and outsource.

  1. In this sample project we had project management but it was not enough. Not complying sprint patterns was a main issue. New issues were adding to current sprints without noticing that this reduces planning effects.
  2. A similar issue was losing focus by working tasks outsides of current sprint.
  3. In some cases, there were tasks which resolved with only 0.5 hour and there were tasks were resolved with about 12 hours. I mean tasks were not broken into same pieces. Some of them were actually more than 1 tasks and some of them could be simply merged with other tasks.
  4. Too many changes in requirements really caused delays and was hard to apply. I know in agile environments, changes are normal, but I mean too many changes. Consider too many changes in database table structures that caused many other changes in back-end and even APIs.
  5. This project had enough amounts of documents from first day. But in some parts this was not clear enough. Documentation problem was getting more problematic as project was growing and new people was adding to the project. It was better that question/answers by team members be added to the documentation but it was not. Documentation could be more up-to-date and be more structured.
  6. I forced to implement soft delete in the system tables but after a while I realized that we were not really needing it. All in all that customer wanted was logging record changes. I am not sure that call it bad communication or letting product owner to take technical decisions.
  7. Not using full featured ALM tools was causing negative impact on productivity. Having a tool to publish latest versions automatically based on each git push could help us having more up-to-date test server.
  8. Not all team members were comfortable with written culture of remote working environments. In a team spread in several cities, it was important that any activity logged in Jira, Slack, Emails, … Any member should be able to have information about other works and tasks. This is more important when team members common time are not very large.
  9. As a team that works in different time zones with different work schedules we had a bad problem that was long wait time between actions. Member A books a bug in bug tracking system, hours or even 1 day later member B want to resolve the bug but need more info, he adds comments but member B see it 1 day later and it is going on. You see resolving a bug can take several days. One of members A or B could have solved this bug with higher problem solving skills. Member A could be able to understand the possible bug by trying more inputs and putting system in more states. And member B could be more successful by thinking on the behalf of A and try to solve the issue with less round trips.
  10. Team organization was not so ideal. Breaking team to web part and mobile part caused tracking issues harder. We could be more agile if 2 parts was able to run other parts code by themselves. But when in a small team, works are passed via test servers not in source code, then more time is needed to test an even small task.


I believe that this kind of issues have almost 3 roots. Cultural differences that forces us to have different impressions of team roles. For example, from scrum master or back-end developer. Another root is not putting enough time for controlling the team and take actions on weaknesses. And last one in my point of view is that the team has not worked with each other before this. A team needs time to reach its full power. Team members need time to get acquainted which each other.


For a technical review on this project, see here and here.

How Iranians look as software outsourcing contractors?

A good conversation between Dave Hecker from SourceSeek and Vasili Yavorchuk CEO of an outsourcing company from Belarus shows interesting factors that are important for customers and vendors of software outsourcing. Customers tend to divide outsourcing companies by their country. Then try to predicate their behavior by noticing their country. In this conversation we see that American customers loves to see outputs soon but Belarusian developers tend to be more patient. For more info see original blog post here.


I wonder how a typical outsourcing Iranian company would appear for international customers. How customers will encounter while working with an Iranian company. During sanctions and long periods of isolation currently there are few software outsourcing companies in Iran but there are hopes that this will increase soon as world need more affordable prices and higher quality software.


First thing first Iran is well known for the world because it is placed in Middle East and because it is always in the news because of its political issues and nuclear crisis. IT and computer is in first ranks of student population in Iran universities. So many computer/IT graduated can be found in Iran. Iran has copyright law but this is not considered seriously so Iranian software companies are mostly focused on custom software development not product development. Another bad result of not having copyright law is everybody can buy MS Windows, Visual Studio and MS SQL Server for less than 10 USD. As proprietary software is almost free, people and developers does not consider Linux and open source very much.


Computers, smart phones and tablets are widely accessible in all over cities in Iran, in homes, work places, universities and all other places. This is also true for Internet access. Internet in Iran is slow and expensive but exists in everywhere via ADSL, GPRS, 3G, Wimax, etc. Enterprise software development have good market in Iran. Because government agencies and banks are large customers of IT companies. Consequently many developers in Iran have good knowledge in Java and Microsoft .Net. Along them PHP is widely used. Iranian developers love to work with foreign customers but English language may be a problem for them.


Despite all negative points, Iran could be a nice software outsourcing target for international customers as huge amount of developers lives in the country and among them very good developers could be found. Developers in Iran are more satisfied with their jobs than developers anywhere else according to 2015 survey by