Blog

This is our blog. Enjoy reading :)


About transferring project

How to cooperate with “comers”? A piece of advice for a client :)
Oleksii Sannikov

How to understand that it is time to change a team?

In truth, primary thing that you should start with is your strategy and goal.

  1. Planned reduction of expenses after the product have been released to production. For example, if you wanted to get the product as soon as possible, you have sufficient funds and you have hired a very professional team. After product launching process, probably you would like to overview your expenses, because the main work is done. But you should remember about support, in other words, make sure that it will continue to work as it should be. Paying for support its total value is not economically feasible, so it's a chance to receive a new arrangements or find another team. In this case, you can conclude with the current team a consulting agreement and contact them in developing critical functionality.

  2. Quality degradation of software development, non-compliance with time arrangements. If you have noticed that with the full implementation of the arrangements from your side, the speed of development process has decreased, or quality has fallen. Mostly, typical reasons: leading developers can be transferred to another project, and they are replaced by people with less experience or less understanding of the specifics of the project; your top-of-the-range specialists on the project left the team; the contractor's management decided to increase marginality and replace your developers with others specialists with lower rate.

If it’s time, don’t be afraid of changing your system development team. If you think that the team you start with has great competences, understands your business and you are in a certain comfort zone. If you worried that there is no alternative. Just think about your current results and your cooperation with a team, weigh all the pros and cons and make your choice.

Transferring project

Well, you’ve decided to change your team. Do you remember what we have advised you at the beginning of the cooperation with previous team? You should start from organizing the maximum documentation of all the solutions and elements of the system.  If you succeeded in doing this, the project documentation will greatly simplify the introduction of the new team. Besides, the significant question will be: “Who is accessing data to source code and project documentation?”. If you have these accesses, then no questions asked. If  these accesses in the current team, then you need to arrange about documentation downloading, specifically:

  • description of the web architecture and functional use of parts of the system
  • descriptions of interaction protocols between system parts and external systems
  • descriptions or process schemes
  • descriptions or user story schemes

Even, if you have all the accesses, but you are extremely dissatisfied with the work of previous team, it’s not a reason to repudiate a claim of some work that they made for you. Apart from the fact, that it can spoil your karma as a whole, also it’s not very good from the point of view of business ethics. There is still a point: that you won’t be 100% ready for the system “surprises”. Your new team will need some time to learn all the system features, and by this time you can get unpleasant moments and blocked business, through some small issues that the previous team would correct it in a few minutes.

Due to this, it is important to split with developers on a good terms, in order to stay not as best friends, but at least in neutral relations.

What is important to do for a quiet and seamless introduction of a new team:

  1. Give an opportunity to learn the existing documentation of the project and audit the code before they start their work on specific tasks;
  2. Make an arrangement with the previous team about consulting services for a specific period (depends on the complexity of your project). During this period, you can involve your previous team to help in finding out the details of system activity, which are not described in the documentation;
  3. Clearly agree with a new team according to the cooperation scheme: periodicity of payments, financial structure;
  4. Plan together your further cooperation in software development process, or just explain your previous plan to developer if you do not change anything;
  5. Don’t forget to take an active part in software development as a product owner.

Important! You must take into account that effectiveness of your new team can not be on 100% for the first couple of months, in comparison with the previous one, because they will need some time to sort out all algorithms and system processes which were created by other people.

Now you are ready for the transferring.

Good luck in business and constructive cooperation with IT companies!


Active phase of software development

How to cooperate with “comers”? A piece of advice for a client :)
Oleksii Sannikov

Cooperation with developer

The best way for professional engagement and interaction is when both parties are “in the process.” in other words, you as a client must participate directly in making important decisions and in the software development process, you should know the stage of the project its execution and understand all the features of its implementation.

Honestly, this is more expensive way for you. You (or your collaborator) will spend plenty of time for sketchy knowledge of web-technologies, which are necessary for the project implementation, you must regularly contact the representative of the development team, and you should think through all the problems, which are team facing on the project. But as a result, you will not have any surprises, there will be more optimal control over budget spending, better understanding of the technical capabilities of the system as a whole.

Another option is to relay the terms of reference and simply respond to the project manager's messages or to business analyst. This approach will allow you to do your own business, but gives a lot of questions to developer that in further can affect on the properties of the system. For example, the developer can choose more expensive method of implementation, which could lead to cost over-run budget, but will make the system more stable working.

For example, let's say you have chosen the option of working with an outsourcing development team on a hourly rate basis (time and material).

In this case, project manager and business analyst will divide set of tasks from terms of reference among different specialists and create for each of them their own tasks in management system (for example, Jira). You just need to agree with a team that you will have an access to this system - this will allow you to see what stage of project is implemented and gives you an opportunity to formulate a report.

Usually, the developer planning his work in a such a way, that the entire software development should be divided into 2-3 week periods (sprints), during which should be developed certain functionality, and at the end of each such sprint he can turn out whether the goal was achieved, was it good or not, and what should be corrected in development plan. Your task here is to participate in formulating the goal of the sprint, also take part in analyzing the result and adjusting the project plan.

Documentation of software development process

If the information on the basis of which the software development process is limited by client’s scenario patterns or prototypes, then developer firstly should execute some extra work:

  • Analyze your wishes and understand what web technology is necessary to conduct in the development process
  • Design the general architecture of the system, system modules, what information and how these modules will be exchanged
  • Decide which external systems can be involved in business processes and how they will be integrated.

As you can see, even for Agile's development there is a place for design and planning. All taken decisions should be documented in the form of protocol description, interaction patterns and other schemes.

I have an experience communicating with a client, who didn’t understand how exactly the processes in his system were built. The document formulated by him on the basis of interview was 40% invalid towards the real processes. During software development process we have realized that some information is invalid and started to make changes to the newly created documentation …

Why has it happened? Because the previous team hasn’t documented any changes in approaches. They didn’t report it to the client or client just kept it in perspective.

That is why, all further taken decisions should be documented and all document versions should be updated. Besides, all the documents usually downloaded to shared network resource, where you can track changes in versions. You must either have access to such a resource or copies of such documents.

The key element: your agreement with a team will make all the difference of documentation quality and whether it will be at all. Very often, developers are limited with minimal documentability and it allows them to have more time for development. Changing the team you will have critical deficiency of system information. As a result, the new team will take a long time to learn the code and figuring out how it works. This will cause their working efficiency decrease and the budget increase for support.

To be continued. Next time we will speak about transferring project from one contractor to other.


Pricing methods & Project models

How to cooperate with “comers”? A piece of advice for a client :)
Oleksii Sannikov

Pricing methods

If you made a choice of outsource development, then your next step is pricing method.

Currently, we have two types of pricing method:

  • Fixed price
  • Hourly rate

In the first case, you clearly fix the functionality that you are expecting to receive for a fixed price, as a result of your cooperation. In this instance, you can’t be bothered with what the contractor does and how - your task is to pay for your finished product at the proper time.

This scheme is very convenient and even desirable for many clients, as it allows you to plan your budget and expenses.

The disadvantage of this scheme is that the price of software development will be higher approximately from  30% to 100%, because this price will include all of possible risks, which probably could be in the future.

This scheme is best matched to the "waterfall" model, which is described below.

In the second case, you will get a clear hourly rate for every developer and specialist who is involved in the project. Hereafter, you will get forward estimation of the tasks and regularly reports of how much time was spent implementing a task. Usually, this information is available to the client at any time in specialized administration system, like Jira.

The advantage of this scheme is that you will get lower price of the developer's hours than with fixed price, as well as more adaptive project management.

Agile model and Waterfall model

There are two models of Project Planning and Project Organization

Waterfall model is a classical approach for managing project. The main point of the model is during project preparation, to specify not only all business requirements, but also maximize the description of technologies which are used and implementation approaches. The best analogy for this approach is the architectural design of a building.  When a builder starts his work - he has an accurate project, instructional implementation sequence and completely understandable result. In this approach, there is almost no place for some researches or improvisation.

Usually, such an implementation starts with the fact, that you are ordering the creation of such a project, based on your business requirements and this is a separate work for which you will pay.

Following such a project it is very convenient to run a competition or seek a tender, and choose the best price offer.

Absolutely, this approach is the best for a "fixed price" calculation scheme, because the potential is unknown and the risks in this case are minimized.

Agile is a more modern method of software development. The key benefit of it, it is not necessary to create a detailed project. Usually, it is enough to have accurate business requirements, thereafter a business analyst’s and developer’s collaborative work will help to determine the methods, approaches and web-site architecture. According to agile method building software product should have step by step process, it gives you an opportunity to adjust the project at any stage, depending on the results of the previous stage.

But this progressive method has its downsides. One of the most reasonable downsides is the inability to estimate actual quantity of work, because software development is accompanied by constant research and testing of new approaches, which can lead to cost over-run because of spent time toward the previous evaluation.

Its primary benefits is that you will pay exactly as much as the developer worked out, even if the estimated time of the specific task was twice longer. In addition, you can set a task right off the top according to business requirements.

Agile method allows you to start the software development as soon as possible and kick off the project. It is well suited for startups and not very large / heavy services.

To be continued. Next time we will speak about active phase of software development.


A few words about choosing developers

How to cooperate with “comers”? A piece of advice for a client :)
Oleksii Sannikov

You have several different options to choose from outsource and outstaffing (“borrow” full time worker from another company) to form your own team.

Today, there are a wide variety of outsource developers. But as always, it’s all about three factors - cost, timeline and quality.

Freelancers are people, who are outside of staff of your or other company. The level of responsibility depends only on the specific person. Present day selection services of a contractors allow you to overview ratings and reviews of such developers. As an apparent downside of this option, if something goes wrong with life of such developer, more than likely you will get a "pardon" on the email and a fouled up project. Also, you will handle all administrative work. One of the insuring method with such a contractor can be considered the conclusion of a direct agreement with financial penalty, risks and limitations. Even if you will not enforce it because of economic inexpediency, your readiness to demand responsibility under a freelance agreement will definitely add him/her motivation to be more responsive to the fulfillment of the terms of the agreement. And his/her readiness to sign such contract will show his/her business qualities positively.

Also, you should know that you will be responsible for further development and system support, because freelancer is an independent person and he/she can choose when and where to apply efforts.

Small software teams - here you can get a good value for money. The most frequently, such teams consist of experienced developers who do not like the work of big "dev shops". But there were times, when a software team has a couple of really cool developers, and the rest of them are at the level of the juniors. If the development process in the team is not adjusted as it should be, then these juniors will create unattended problem code, which is gonna have to correct ...

Choosing a developer you should request a team description and come to an arrangement about your notifying of any changes in the team.

Considering the fact, that in small software team, you have every chance to become a favorite client, and obtain support and development for reasonable price.

Large software companies - mostly, they can provide well-worked development procedures and grade the diversity of developers level on the project. In other words - you will get excellent business management and most probably in your project won’t be engaged the top workers. You will get the highest price with a sustained development quality, and it will not be a problem for them to provide support and further development.

It is also important to understand the fact that to save key developers, who are not currently involved in projects (which could not be sold), the company pays their salaries based on margins from running projects. It also affects on pricing, but the plus is that the company will keep key competencies and will be ready to enter your project quickly.

Outstaff development for you will be very similar to cooperation like with a freelancer. You will have massively more opportunities to control a such team, it will have higher price than the freelancer, and all the issues management and its process will be your “pain in the neck”. As well as further product support.

Your own team it does make sense, when your project is very long and involves a lot of development and expanded time. However, you do not want to form competencies in your direction outside of your company. In this case, you will have to form a mini software company, with a web-designer, project manager, business analyst, developers, QA. Will it be economically feasible for you? It’s just a question of calculations for specific cases. Furthermore, it doesn’t give you a 100% guarantee, that you won’t have a leak of data or competencies, because serfdom law has been cancelled as far back as 19th century, and developers have a tendency to seek happiness elsewhere if they do not like something.

To be continued. Next time we will speak about choosing of pricing methods and choosing of project management type.


How to cooperate with “comers”?
A piece of advice for a client :)

Oleksii Sannikov

Short hint for a client how to hire web-development company

Sometimes communication between client and development team (engineers), reminds us discussion between two different races from another planets. It’s a really good thing, when both of them are humanoids and can speak with the help of the same “mechanism” :).

So, we have prepared for you, as for business owner (or future business owner) a couple tips and explanations, how to understand and productively cooperate with engineers.

  1. Client, entering project
    1. Project preparation. What should you do when the developer’s time has come? Project organization.
    1. How to choose a developer? How many “types” of developers do we have?
    2. Which developer interaction scheme is better to choose? Working peculiarities of building software and its price impact. What is Agile model and Waterfall model?
  2. Cooperation in active phase of software development.
    1. Documentation of software development process.
    2. Why do you need this and why should you pay for this?
  3. How to understand that it is time to change a team?
  4. Transferring project
    1. It’s a luck that you are prepared.
    2. Split with developers on a good terms.
    3. Introduction of a new team.

Entering project

When you come up with an idea of a great service, it seems that you have a little left to do - just quickly start programming and market in your bag. But here is hiding a common trap -  your wish, to get the product as quickly as possible leads to mistakes in planning, that spill over into deadlines failure, loss of investor’s confidence, mutual disappointment among project participants.

What must be done in providing correct timeline for investors:

  • write a business requirements - the main scenarios that will be implemented in your product, preferably not only positive but also negative (when something went wrong)
  • prescribe a perspective strategy for software development and scaling (please note, that it should be included in building software architecture)
  • create a simple scheme of who are you in need of (designer UI \ UX, web developer, mobile developer, etc.) and when are you needed them.
  • analyze, what events or actions that are not directly related to the development, also, must be implemented and when (for example, certification, agreements signing with partners, etc.)
  • prepare timeline, taking into consideration the key events that can stop the project’s progress. For example,building a website, wireframe missing will significantly complicate the  developer’s work, as according to the logic of the front-end of the website, in a fact, will be implemented without terms of reference, therefore, at least twice.
  • get developer’s estimation of project implementation timeline considering key events

To be continued. Next time we will speak about choosing developers process.