Blog

This is our blog. Enjoy reading :)


Security, usability and budget economy - choose any two characteristics for your project.

Oleksii Sannikov

Need Help Fixing a Hacked Wordpress Site!!! This howl of despair I came across on freelance website publication today.

We, as a team, that earns daily bread by developing different soft, including web projects, when the time has come, also came to the question “What should we choose to built our website?”.

Having wide range of competencies and a list of technologies to choose from, the issue was extremely complex. We have contracts, and to find some extra resources for development of our own website - that was a challenge.

It should seem, that here it is - your solution, built on WP. You just need to buy a good theme and maybe customize.

Cheap, fast and convenient. Yes!

But it was not as so, as it seemed.

During first six months of website existence on WP, it was hacked three or four times, and our technical director used gross language as a longshoreman and persuaded us to stop using WP. After the last hacking, we have run out of patience. We put a block on the website, allocated resources and rewrote it, in our opinion properly.

Conclusion:

Popular platforms for creating websites, especially those, that are made by website builders, draw a heightened attention to crackers. Commercial themes can also be vulnerable (accidental or intentional). Plug-ins that are greatly increase platform opportunities is another security hole.

What should you do:

  • If you decide to use such a platform - pay attention to security issues and try to predict all the expenses on specialized professional.
  • Web projects, that are built as custom solutions usually have higher security due to the fact, that they do not have standard security vulnerabilities. If you have an opportunity, then order your project development from scratch selecting an adequate developer.

Keep in mind, that the Internet is not as safe as many people think.


Product or Solution?

Oleksii Sannikov

You have got an idea how to improve quality of work of your company or an idea of online breakthrough service, etc. First of all, you are going to find a developer who will help you to implement this idea. You will found websites of some developers and every website will have different sections, like services, products, expertise, solutions... How to understand what exactly you need, product or solution? Which company is better to choose that offers services, products or solutions?
Calmly, take a nice deep breath and slowly breath out - now everything is going to be at its own place.

One of the easiest way is to get out from your specific needs.


  • Do you need to develop something from scratch, maintain code refactoring or implement some idea, that will extend the functionality of your software? 
  • Then you should choose “Services” section.
  • Are you looking not just for a contractor, but for someone, who already has dealt with problems similar to yours and understands the essence of business which is involving your Software?
  • Then you should choose a tab “Services” or “Expertise”, also “Experience” or “Successful Projects”.
  • You are looking for a contractor not just for his or her experience, but for his/her specific offers - see the section "Solutions".
  • Do you want something like “production-ready” to fix your problem at one stroke and get an additional functionality? See "Products".

Usually, one of the most popular approaches is when a customer chooses a contractor with a set of his or her own decisions, from which he or she can build one flexible, integrated solution to solve customer’s problem.

If there is no such contractor, then the customer analyzes the facility of product usage (product cost + implementation + support) and compares with the order of the personified solution from developers, who simply have experience in this field.

And the most extreme case is to choose a developer, who has a general expert determination in implementation such projects. This may require an extensive resources of time and money, because potentially could be possible, that you will spend a lot of money on studying issues, technologies, finding optimal solutions and their adaptation.

I am sure that this little guide will up you to the task and will manage your work correctly. Please be reminded, that Codein has its own developments in several fields, such as: betting and online casino, fintech, cryptocurrencies and telecommunications. And, we are ready to develop all available "best practice" in your project.


.NET CORE. One more reason to use .NET

Oleksii Sannikov

Previously, according to our opinion, we wrote “Why” is building a serious solution on .NET have a sense.

We have mentioned about:

  • active community;
  • good compatibility with the environment, which is built on Microsoft solutions;
  • high reliability of applications under load;
  • multiple programming languages support in the environment and their compatibility with CIL (Common Intermediate Language), also known as MSIL (Microsoft Intermediate Language), or simply IL;
  • popularity and development resource availability, its support on the market.

One of the main "disadvantages" of .NET is stricted reference to Microsoft technologies (server, database, etc.), which leads to value enhancement of system support, such as solutions of this vendor are licensed. Consequently, you don’t have an opportunity to use all technology advantages of .Net for the project and thus use a Linux-based environment.

So, Microsoft decided to fix this situation.

Now, when we have .NET CORE, we can use all the benefits and advantages of the technology on Linux-based environment, and even on MacOS. Red Hat Enterprise Linux (RHEL) supports .NET Core, where Red Hat collects the .NET Core from the source code and publishes these collections on the Red Hat Software Collections website. The security and stability of the .NET Core in RHEL have become a common task for Red Hat and Microsoft, and they do their task brilliantly. Almost every month system is upgrading, .NET Core distributions are collected and tested in AZURE as well as other Microsoft products.

.NET Core is a universal open-source platform for developing applications for wide range of devices, cloud solutions and Internet things (IoT). What does it mean for you?

Conclusion:

If you are an investor, who is thinking about a reliable business solution, then .NET Core took a major step to meet you, because with help of this technology, you can build a solution with the load resistance and cut the costs on system support. As an option, you can also port your project with .NET Framework to Core.


Verification of the suggested technology stack

Criteria for choosing a technology stack.

Oleksii Sannikov

If you think about development of your own service, than it is 99.9% that this is in reference to development of product for market. Your project has a commercial purpose, the logic and strategy of monetization and the economic feasibility, that is mean that making any decisions or choosing solutions in the product development is not the last factor.

How to choose the right technology stack?

Your criteria in choosing technology stack can be described below:

  1. Popularity of technology stack in the market. 
    If you choose a popular technology stack, most likely, it will be well documented and high developed. There will be a lot of specialists, who can help you with the system development and support, in a case if you break a contract with development team you have chosen before.
  2. Relevance of technology. 
    The technology can be sufficiently developed, but more modern alternatives may be available already in the market. In this case, you can have a risk, that in few years today's executives will infuse with the new technology method and the support of your project can gradually rise in price due to the lack of experts.
  3. Maintenance cost of server infrastructure. 
    If your application requires licensed solutions, then this will obviously affect the payback of your project. The size of this impact depends on project scope and expected monetization revenues.

This is probably not an exhaustive list of criteria for you, as a client, to verify your project technology stack. Also, you may have additional considerations and arguments, but you won’t miss these key points.

You can get answers on these questions 1, 2, 3 on your own (just made a small desk research) or with the help of the topic experts. As well as, you can make a request to your development team, why they have chosen concrete technology.

Choosing technology stack, there is a risk, that in the future, generally, you may have a problem with a lack of experts in the market and rise of cost of your system support, but it will be reasonable from the standpoint of the technical aspect of software development. Then it makes sense to discuss with the contractor an opportunity to replace a technology stack or conclude an agreement for system support on long-term basis, that will be sufficient to fulfill the key tasks of the project. If you know positively, that suggested stack is not very suitable for you, and developer couldn’t offer an alternative within his/her competencies, then it has a point to keep searching for new developers, who can offer you what you need.


What is a technology stack?

Criteria for choosing a technology stack.

Oleksii Sannikov

The choice of technologies with the help of which you will develop your project, depends on many factors. If there won’t be many criteria for you as a client (most likely, the main criteria will be price, and rightly so), then the developer needs to take a decision based on more than 7 different factors.

When you decide to contact a software company (agency), in other words, development team, the choice of a technologies set (stack) will be made by the Technical Director (CTO) following your project specification, or it will be made by experienced developer who will accept the responsibility.

What is a technology stack?

If you know, that your website built with PHP, it means that there was used only this language, and you don’t need to choose anything else.

Apart from development of server-side programming language of your application (basically, it’s a part of application located on your “special computer” - server, which is perform accounting and other actions, and come next to website performance) you will need to find out the manner in which will be developed client-side.

Client-side is a part of application which is downloaded on users computer and performed in his/her browser (Google Chrome, Firefox, etc.). It includes web-interface which is used for communication between your service and user, also, all the logic and accounting, which makes no sense to send and receive from server, can be available locally.

Moreover, there should be identified:

  • how will be used data stored in the system;
  • How will exchange your system data with other systems on your server or third-party systems generally;
  • how will occur interaction between server-side and client-side.

All these set of technologies are called a technology stack. Today, there already exist stable technology stacks that have been tested and proved to be efficient.

Thuswise, the CTO will choose which stack is better to use. He will take into account such criteria as:

  • code readability;
  • easy application support (maintenance after launch);
  • usage of memory devices (for mobile applications is especially relevant);
  • documentation of the technology properties;
  • running speed of the final product;
  • availability of necessary libraries;
  • completeness of development environments;
  • availability of the developer's resource in the team;
  • presence of specialists in the relevant market profile (which directly affects the risks of loss of development resources, easy support and development, etc.);
  • the licenses cost for the necessary tools, such as databases, etc .;
  • and so on.

According to the analysis result, we will offer you the optimal technology stack, if it necessary, there will be several alternatives.


Why should you hire experienced specialists and what are the benefits to hire junior developers?

Oleksii Sannikov

There are a very frequent job publications on freelance web-services, like this:

_“This should be a pretty straightforward Xamarin interface and we have a half-built prototype to show the basic concept. Looking for a senior-level full-stack Xamarin developer who is quick at turning out quality concepts to come in and "rockstar" this one to completion in a few weeks.”_

When I am reading such job publications, I’m curious: “Why are such applications half built and need a completion? And where’s previous team got to?” Another thing, that makes me think is “Looking for a senior-level full-stack Xamarin developer”.

According to my observation skills in multiple work situations, combined with my experience of picking up “Almost done” Projects, I can tell you what’s happening in reality.

The investor, who have an idea, decided to create a concept for a reasonable price and verify its viability. As we are talking about the concept, then an investor had no thought of hiring qualified specialist. That is why, on the freelancer’s web-service among all candidates was chosen developer, who assure that he will create a product prototype for a low price. 

After that, when developer failed to meet a deadline or during the project it turned out that the performed work does not meet the investor's expectations ( or it moves slowly). Conflict. Cancellation of further cooperation with developer. The project is stopped. Looking for someone, who will complete the project. 

The described situation is made worse for investor by the fact, that developers usually avoid projects where needs to work with someone else’s code. Because, there is no information previously: Who wrote the code? How? Is the code well documented and described?

And what will happen next? Then an investor will find another one of the same developer. Perhaps, new developer will be more experienced and force this prototype functioning. But also it is quite possible that the prototype should be rewritten in a large part, because the first developer has made some kind of architectural error. 

As consequence is likely following:

 * Material delay of prototype development

 * The prototype does not meet the investor's expectations

 * Sacrifice part of functionality to deployment

 * Prototype budget overrun, because of code rewriting.

That is why my main advice is not to cut you spending on qualified specialists, even if it's a small project. Usually, the prototype is a base for future development, so it is very important at this stage, to built the right architecture, which will allow you to scale and develop your project in future.

Apart from this I should mention the importance of developer’s experience in a specific field.  If he was dealing with software system in the same field - he could be an additional source of insights and best practice in the field.

The next question is “Why do we need  junior level specialist?”

All of us started from something, it's clear that the Seniors do not appear from the air, so there are exist different approaches, where junior developers can level up their skills and knowledge. 

It is a common practice to involve juniors in large companies, which have separate development programs for juniors, where they can create a code by task and under the supervision of more experienced developers. Their work is carefully checked, all their mistakes are handled and corrected. Through some time, such a person becomes an independent specialist, and there is no need to worry about his or her independent development. 

So, for the best results - hire the best candidates, as far as you have enough budget. Contact us and we will make sure that your developer has the right level and qualifications for your project!


Why is .NET?

Criteria for choosing a technology stack.

Oleksii Sannikov

As you understood there are no good or bad technologies and programming languages. There are those, that are appropriate for your project and those that are not appropriate.

Codein.Software has a powerful competencies in .NET technological stack written on C# language.

How have we got this competency? Because our team and our developers from other projects (often from fintech area) have taken part in developing powerful software systems, where have been mentioned criterias, which are described below:

  • system reliability;
  • zoom features;
  • on-loading operational stability.

.NET technology stack meets all these development requirements, it was created by Microsoft, and it is still supporting and keeps developing.

Due to the fact that Microsoft is the implementer of almost all stack components, there achieved maximum of compatibility and performance reliability. Also, if applications were created with right-side architecture design on .NET with C#, it would demonstrate sufficient operation speed.

Nowadays, there are a lot of developers choose .NET C# as their main specialization, so it’s a reasonable technology for your future project, even in order to search the potential developers for system support or development.

Where is the .NET better to use?

First of all, it's about enterprise solutions, high-load solutions, with a high reliability and security requirements.

For example:

  • ERP;
  • online banking;
  • financial portal with microcredits and payment transactions;
  • large data portal like Stackoverflow.

If you are going to create a project with general big website, private user area for partners, working offline mode, external integration services (like Google Maps), CRM and integration of reporting system, this means that .NET will be worthwhile here.

For more simple tasks there are other technologies, such as PHP (LAMP stack), where Codein.Software can give also good expert evaluation.

If you have additional question, which is stops you from making a final decision, please, contact us! We will help you to find the right solution and start your own project!


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.