Contact us

To be sure for 100% that Codein is the partner you are looking for and that Codein will satisfy all your requirements to a development team –  write to us and ask yours question you have after visiting our site.

1
If you are ready to create a requirements list for your information system upgrade but have little experience – talk to us.
2
If you want to find out what are the best technologies to use for your tasks – write us.
3
If you have a startup idea but have no hands to implement it – talk to us.
Maximum file size for upload: 2 MB
Does a startup need to outsource software development?

Does a startup need to outsource software development?

Every single startup goes through the same stages of development. And sooner or later, one of the main questions arises: Is it time for some tech help?

While, in most cases, the budget for the startup establishment is quite limited, it is still not the main criterion to consider, trying to answer the question. The most important metric is whether technology is a part of the core value proposition of the product, or is it a vehicle to solve a growing business need.

How do startups actually work?

Let’s try to understand it in a real-life example. easyweddinggeorgia.com is a Dubai based startup, offering wedding solutions in Georgia for the residents of the GCC region. In this case, the core value proposition is a paperwork service and a memorable experience. The technology here plays a secondary part. Diving deeper, we can see that the company is going through the same stages as any other startup:

1. Concept and research

During this stage, the idea was born, and the potential target audience has been carefully studied, during the market research. The main goal of this investigation is usually to find out if people actually need the product/service and what problem it would solve for them. It is important to invest some time into analyzing the competition to understand if the idea is already being sold by other companies, and if the answer is yes, to understand what their strategy is.

2. Commitment

Here is where the company puts the research into practice. At this stage, the company has secured the funding and developed a clear offer and product along with setting up the marketing base to initiate some brand awareness.

3. Traction

At this stage, typically the first year of any startup, the company got the word out about its products and started gaining its first customers. The traction stage often gets mistaken with the growth. However, they play different roles. During the traction period, the main goal is to grow the customer base and to reach the product-market fit researched earlier. 

4. Refinement

The refinement stage is where the given startup example currently is. The company got the feedback from the early adopters and is ready to refine the products in order to find a better market fit, offer a better customer experience, and to become more efficient in general.

5. Scaling (this is the growing stage we have mentioned earlier)

Typically at year 2 or 3, the company moves into the scaling stage. It would be the next step for our case study. At this stage, the company usually grows its customer base and its offerings. The marketing strategy gets optimized for a better conversion rate, and the tasks start being delegated to the new growing team of employees, supporting the business. This is when the company hierarchy is being set up.

6. Establishment

The final stage every startup dreams about – when they are no longer just a startup, but an established enterprise. It usually comes during year 3, or later. At this stage companies usually experience considerable growth (although not as dramatic as during the growing stage) and customer loyalty, while constantly working on their development.

At which stage do you actually need to outsource the developers?

In a given example of a startup, the technology doesn’t play a big role during stages 1 to 3. The basic set up has been made by the company’s founder and just a couple of hired employees. 

However, reaching the refinement stage, it has become clear that in order to become a perfect fit on the market, it is necessary to restructure the offer.

In this particular case, to match the demand of the target audience, the products and services have to be divided into subcategories, making it easier for potential customers to find the best solution for their problem. To make it happen has been decided to build an umbrella of the companies (the directory website) where every potential customer would be able to find a personal solution, regardless of how complicated their problem is. This decision requires the software development the company is no longer able to have done by the in-house workforce. And that’s when the outsourcing comes in place.

Generally speaking, the more technology-orientated your startup is, the earlier the stage it needs the outsourced development help. Some companies that offer tech-savvy solutions may require it as early as the commitment stage starts, to be able to develop a proper offer.

Therefore, answering the initial question: yes, pretty much every startup at some point needs outsourced support of developers (unless the founder is a developer himself). 

10:00 19.08.2020
Oleksii Sannikov
The system is developed and implemented. What's next?

The system is developed and implemented. What's next?

When you are hiring a team for some Web application or software development, the first thing that interests you is the development time and the total project cost. Besides, you should think about how your IT system will work at the beginning of the project, also take into account development technologies, architecture, etc.

Quite often it turns out that the system is in a stage of active development and modernization for a very long time. During this stage, the concept of support and development is unclear for you as for system representative or system owner, all the system support should be as background of basic system development.

Introduction

Client: Reporting statistics stopped working, besides for some reason there are no transactions that should passing through payment terminals. Would you be so kind as to check what has happened there?

Developer: Excuse me, but your system support agreement has expired for more than six months ago. System development and its upgrade also stopped for a long time ago. We don’t have the required resources to service your system at this time.

Regrettably, in this case it’s your problems! The development company simply doesn’t have an ability to hold employees in case of "and suddenly you need something"...

Was it forced cooperation or necessity?

When you are hiring a team for some Web application or software development, the first thing that interests you is the development time and the total project cost. Besides, you should think about how your IT system will work at the beginning of the project, also take into account development technologies, architecture, etc.

Quite often it turns out that the system is in a stage of active development and modernization for a very long time. During this stage, the concept of support and development is unclear for you as for system representative or system owner, all the system support should be as background of basic system development.

It is very important to understand the difference between these two processes, and here’s why:

Before the system will be launched into production, the developer’s main idea is to create architecture, build a scalable web application, create functionality, qualitative software coding according to the certain deadlines. Testing web application according to the test cases and automated testing allows you to find bugs or defects of the logic of work according to normal mode and liquidate them according to plan, preparing a software product for release.

After release, there is happening actual testing of the system. At this moment, quality of incidents play center stage, their classification and response time (fixing). The quality of support will be determined by the speed of incident response and total change of incidents quantity of different types. At this stage, the team's priorities and loading conditions are changing.

In order to avoid problems with understanding tasks importance or bugs-fixing time, you need to clearly separate these two activities during software deployment to production environment.

All additional modernization, implementation, etc. is basically have the same principles as the previous core development. With regularly and calmly software testing. All maintenance tasks are described in a separate agreement, with task classification and deadlines. Consequently, you will not depend on the conditional terms for publishing the next sprint's functionality in terms of system performance. You don’t have to make a decision "publish now or wait" - all such cases will be described in the agreement.

Subsequently, the support agreement, it’s not an opportunity for your technology partner to “tie” you to himself/herself. It’s a tool that will allow you to specify and regulate your cooperation more clearly in the future. This agreement will help you to control system survival and its development.

How to calculate support cost and not overpay (maintenance costs)?

Your system can consist of many components.

This is the hardware (servers) and installed software environment on them, which controls them. These are additional systems that support the work of your project. Yes, and the project itself. It is conceivable that in such a complex configuration, an error can occur at any time and everywhere, especially at the first time after system deployment. In addition to this, all your ideas on the system development stage, its modernization should be evaluated and described into understandable tasks for engineers. This is a job for the business analyst and project manager, which should be paid.

You, as a business person, cannot be in abeyance, you should have specific numbers of expenses monthly of your system support. But if you rely only on actual requests, then you will not have a harmonious system of expenses. It may be that you don’t have an incident for a long period of time, and then occurs a critical one that will require an urgent reaction, or occurs an idea for implementation that has never existed before.

For this case, we have such type of an agreement, which helps the parties to determine the resources that hypothetically may be necessary to maintain or fix the maximum limit of such services on a monthly basis. Service-level agreement (SLA) is an agreement between a service provider and a user about a service level. It contains quantitative and qualitative characteristics of the provided services such as their availability, customer support, bug-fixing time, etc.

Having clearly defined SLA terms and conditions, you can plan your expenses. If you notice that the service levels according to the SLA terms are not achieved, you can effect another deal or reconsider an agreement.

Automation support

This section provides more tips and tricks for improving the efficiency of your system support. If the support team doesn’t have its own automation practices, then you should move forward them to automation practices or find another support team.

Basically, the most important part of system support is to get information about what, when and where had happened. There is no point of losing a certain part of the profit and, in addition, customer loyalty just because you had problems with free space on the server from which the system stopped working normally.

That is why, Codein company uses the following techniques:

  1. System logging. All information about data exchange between the system modules and external systems, report of abnormal system conditions and errors, and store all these information mentioned above. This allows you to get a complete technical description of the error, and an opportunity to reproduce it and ability to analyse the system during that period when error is occurred.
  2. Auto cast. Depending on the prescribed services in the SLA, you can activate weekly auto cast to the support team about errors reports. Such reports are analyzed and, if it’s necessary, these errors are fixed in reports. All this work is agreed with the client.
  3. Automation Testing. There are standard tests that verify the operativity of the main system functionality after its updating. This allows us to understand at the first stage whether we got a working system or not. In the case of failed tests - the system is required to get back to development stage.
  4. Automation Control and Monitoring Systems. We use a system like Zabbix. This is a very powerful tool that allows you to monitor automatically the current system parameters, such as checking of free space on the server’s harddrives, the RAM resource, the work of server services and individual subsystems of your project. In case of such a situation, which recognized as incident or planned situation, Zabbix will automatically send you a message, for example, in Telegram. Therefore, you will find out that your server is not working after minute, when such an incident has happened.

Conclusion

Of course, the cost of system maintenance will be significantly influenced by the technology which you have been chosen, the necessity to pay for certain licenses, the cost of server’s infrastructure maintenance and, even, the architecture of the solution. Because, if the architecture is ill-considered, then there can be a situation that you cannot fix the problem because you should “break down half of the system”.

In any case, Codein is ready to help you in maintaining your system, optimizing it and reducing the cost of it!

Please contact us.

10:01 26.12.2019
Oleksii Sannikov
Do we really spend our time for nothing or it's a part of something bigger (next big thing)?

Do we really spend our time for nothing or it's a part of something bigger (next big thing)?

Recently, a very interesting article has come across my desk by Ukrainian scientist who studies abroad computing clusters and other interesting things in reference to the pure science.

His main message was that mankind have chosen the wrong way in developing project network and paid excess attention (in his opinion) to various consumer services. We went to develop consumer culture instead of moving science forward - that was his main idea.

We cannot overlook the movie "Idiocracy" with plot of a story about Earth which collapsed in a mountain sized garbage, where people have a very low IQ, mainly because distinguished scientists of the past didn’t get enough financing to develop fundamental things, but instead of this, there was a massive financing for research hair preservation and potency.

In actual fact, when you take notice of startup’s financing, wherefore people afford the high expenses on “Kickstarter” or another platforms like this, it may be a little dizzy, because it's all so far from dreaming of conquering the universe and getting cosmic space, where people dreamed of it in the 70-80s of the last century.

You must admit that those things which SpaceX is testing right now aren't much like the selfie coloring app…

In the late 20th century, the mainspring of scientific revolution were State governments which were involved in armaments drive. Fear is not less effective motivator for moving, even more effective than finding pleasure. But bipolar world is gone together with the large financial appropriations for defense research. The standard of living in many countries of the world has increased substantially and in the general population there have appeared funds that are comparable to state budgets.

It is clear that this money could not fail to notice. It’s a resource which must be used, but how? In the Soviet Union they did it quite simply, they hadn’t paid one salary and just said that it was transferred to the Peace Fund. They would spend this money on the next R-36M (SS-18) development. But in the world of “damned capitalism” that’s not the way, for this reason is required another way.

There is a well-known joke that the first 40 years of childhood are difficult for men :). Basically, we are the same kids who have learned to pretend to be adults. All of us like entertainment, extreme, interesting and bright things. Mankind is so structured that be fond of pleasure. Most effective teaching methods are built on the game. Almost all modern training techniques are also built on the interactive method, which is actually the same as a game. People are willing to pay for participation in the game, regardless of their own intellectual development and IQ.

Let’s think about an interesting industry as the porn industry or gambling. Despite the numerous restrictions and prohibitions, people around the world continue to watch “adult movies” and gamble. These areas have considerable incomes and form an integral part of the economy. It is a big secret that modern video streaming technologies, fast payments, and many other convenient things have roots from these industries.

Modern startups are a good tool for obtaining financing from people who would never have invested in the development of science or technology. Some of them, perhaps, have never heard the word “investments”... But people are looking for more comfort, entertainment and impressions. Therefore, the whole variety of new digital inventions, mobile applications, network technologies right now is fighting for banknotes in your pocket or on your bank account. And this money is used to move mankind forward. Because, this is no longer a direct dependence, but an indirect one.

How many programming languages do we have for developing software? Or do we have the same development process as before? Who remembers assembly code debugging? How much is it differ from creating projects using a high-level language and frameworks with libraries?

You buy an application with augmented reality and you are testing a technology that in the future can be applied in the helmet of an astronaut who landed on Mars. You are watching porno in HD quality, and in this way you stimulate the development of streaming video, which can then be used in telemedicine, you are entertained by 3D printing of various unnecessary things, but this technology will create the necessary things for the colonies of mankind in the Universe.

All these things have appeared not because of targeted financing from corporations and governments. They appeared mainly, in order to quickly meet the consumer needs. Thousands of startups that compete for your attention, use the latest technology, challenge and compete for the right to entertain you better and more conveniently. Competition and natural selection on the market right here creating following perfect solutions that will increase the computational capability of machines, create an artificial intelligence, and provide the next scientific revolution.

Therefore, when throughout the centuries (at least 19th and 20th) all the mainly used disruptive technologies have got through commercial market resulting from conversion and removing of the heading “confidential” on military inventions, so now, in my opinion, there will be observed backward diffusion of commercial solutions to military applications and their adaptation for the needs of pure science...

10:01 26.12.2019
Oleksii Sannikov
PSD2 Directive

PSD2 Directive

Introduction

Accessibility of banking services have been admitted for all people as one of the priority tasks together with education, access to information and clean water. The telecommunication infrastructure is very unequally developed in the world, so banking has its own characteristic features in different countries. For example, the African M-Pesa became the first case, when a completely non-banking organization started providing banking services. And all because of non-traditional service access.

This example shows that there is no need in banks with traditional format of service, as itself. Banks are needed as a back office, anyone can have working relations with client and current trends have proven it.

Banks have realized that visiting a financial institution for a client, as a whole, is sometimes rather unpleasant experience, so they tried to use all the time latest telecommunication solutions. There is more than one altruism driven by banks - good remote banking system can significantly reduce bank’s costs on support. Firstly, it was SMS banking system, then web based internet banking, then mobile banking, messenger banking, bots and so on. All of these things have been created around us an interesting hybrid of financial services and the latest technologies, an entire industry, which is called Fintech.

Open Banking API

Today this industry is an undeniable driver in economic development. But since 10 years ago, there have been some factors which are hindering the rapid development of industry - Fintech startups stay dependent on banks. If the bank didn’t want to integrate with startup - the startup had no chance in building service.

In addition, the client also become dependent to the bank, which issued him / her a payment card and opened an account, even if the application didn’t satisfy client according to usability features or quality. Or client cooperates with different banks - he / she has to use several remote banking systems at the same time…

There was one possible way out of this situation - banks should have an open protocol that would allow them to integrate with third-party services.

Realisation of the idea in the world

The idea of an open interface of data exchange in banks was suggested by Germany in 2010. “Open bank project” is an initiative supported by the largest banks in Germany, which provides mutual exchange of data. This initiative is progressing and gives an opportunity to create interesting non-bank financial projects today. Subsequently, the idea began to be implemented in the UK - they also began to create open banking APIs.

And since 2015, the EU has accepted the PSD2 directive, which regulates the bank’s access to client’s database and software interfaces for exchanging data with third parties. The directive came into force in January 2018, according to it, all banks should meet the directive’s conditions until mid-September, 2019: on the first stage, banks should provide developers with the test environment, and give the full access on the second stage. And despite the fact that most banks don’t meet the deadline - the process is going on and soon we will be able to observe the creation of interesting European startups.

There are similar initiatives around the world, if it is not on the government level, then on the level of private business initiatives. For example, in the USA, despite the absence of such an initiative from the government, there is a MINT aggregator. There are also initiatives in Singapore, India, and Russia for creating such open platforms.

Ukraine, as an associate member of the EU, also has accepted the PSD2 directive in 2019. According to that, the wave of new startups will not bypass its territory.

And what’s next? And then, the EU will implement PSD3 directive and anyone who doesn’t get into this process will stay on the wayside of financial flows and in the deep niches, where no retail and small business has gone before :)

So, what are the opportunities will provide an Open API in the world?

First of all, what we are waiting for is forgot about impression “bank client XXX”. Preferably, the client will have access to payment instruments of all banks from one application, and the client becomes just a user of the financial application from which he or she will manage accounts from several banks.

Second, is a significant increase of competitive activity between banks and financial startups, that will compete for user’s attention / loyalty of their applications. Most likely, there will be an interesting situation, where banks will build up loyalty programs with unique services in their applications and non-bank startups will use offers variety from other banks and partner programs.

Third. Clients who have already been logged in, their personal data will be used by other members of the system, such as banks and non-banking systems. This will allow users don’t pass identification every time, when they decided to purchase a service.

Fourth. Previous innovations will automatically bring to result in a situation where banking services will be sold as a prepaid mobile phone provider package, quickly and in a single click. For example, you will have an opportunity to make a deposit in any bank by purchasing a prepaid deposit card for a certain amount.

It is impossible to predict all consequences or evolution of Fintech, we can only confirm that fact, that culture of consumption of financial services will be significantly changed and modernized.

What is client expectations?

The fact of the matter is that banking services is not simple. For that reason visiting banks is not really pleasant procedure for ordinary people, the same as banks by themselves. The best for people to know nothing and steer clear of all these difficulties. People would like to get all these services as quickly as possible, without extra time and energy.

Here rather than elsewhere came into play Fintech. Everyday technologies give us opportunities to simplify our financial services.

Client says: “I don’t want to go to the bank,” We say - “Choose services remotely by web, mobile”.

Client says: “I would like to get a unsecured loan quickly”, we say - “Please, use our instant online credit systems”.

Client says: “I don't want to pay extra attention and control my expenses, but I would like to avoid extra expenses”, we say “Please, use our financial management system with AI”.

Client says: “I don’t want to install all bank applications, where I have a card or bank account”, we say - “Please, install our generic app and manage all your bank cards there..”

Open API allows us to improve the quality of financial services, their accessibility and usability.

Why are we bringing up this topic?

Our Codein Sofware team, specify Fintech as one of the industries, where we have extensive experience and understanding of business component. We have more than 13 years of experience in banking systems, we’ve participated in implementation of digital banking systems at several banks, participated in the development of several non-banking payment systems and integrated banking APIs, PCI DSS implementation and compliance, also, many other solved tasks, which gave us a right to identify ourselves as professionals in this area.

Confirmation of our professional approach and ability to develop such systems are our successful cases and, in particular, our rating on the Clutch (https://clutch.co/profile/codein-software#review-797472)

If you have any ideas concerning the development of interesting financial service, we are ready to help you! Let’s start our cooperation with a free consultation, where we can help you to choose the right technology, architecture, and stages of system development and implementation. This will help you to save a good part of the budget, and you can spend this money on further implementing of additional functionality or marketing.

10:01 21.04.2020
Oleksii Sannikov
Codein Software Recognized as a Top Ukrainian B2B Company by Clutch.

Codein Software Recognized as a Top Ukrainian B2B Company by Clutch.

Did you know that the average person spends 171 minutes per day on their phones? Taking advantage of mobile traffic can be critical to growing your business. Our team of professionals have been working since 2011 to develop complex mobile and web development projects for our customers. In light of this, we’re proud to announce that Clutch has named us a top mobile app developer in Ukraine in its latest press release!

"We are totally surprised by this award! Our team does its best to satisfy our clients. Several mobile applications and web projects were developed and published, but we really weren’t expecting this...Thank you to Clutch anyway!" — CEO, Codein Software

Based in Washington D.C., Clutch is a leading B2B ratings and reviews platform. Their team collects verified user feedback to rank and evaluate companies. This in-depth market research allows us to show off expertise in our field to customers. Our Clutch profile and list of successful case studies show we are a highly-trusted developer for large and small companies.

You can also check us out on The Manifest, a research guide for prospective B2B buyers. We receive recognition for our work at The Manifest’s Ukrainian listings. Top companies can also be found at Visual Objects, another Clutch sister site. A visual portfolio site where companies can showcase their work, Visual Objects is a great resource for buyers to look through previous projects.

10:01 26.12.2019
Oleksii Sannikov
Security, usability and budget economy - choose any two characteristics for your project.

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

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.

12:24 07.07.2019
Oleksii Sannikov
Product or Solution?

Product or Solution?

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.

10:38 08.06.2019
Oleksii Sannikov
.NET CORE. One more reason to use  .NET

.NET CORE. One more reason to use .NET

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.

11:45 06.05.2019
Oleksii Sannikov
Verification of the suggested technology stackCriteria for choosing a technology stack.

Verification of the suggested technology stack

Criteria for choosing a technology stack.

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.

12:23 10.04.2019
Oleksii Sannikov
What is a technology stack?Criteria for choosing a technology stack.

What is a technology stack?

Criteria for choosing a technology stack.

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.

11:48 11.03.2019
Oleksii Sannikov
Why should you hire experienced specialists and what are the benefits to hire junior developers?

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

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!

11:37 18.02.2019
Oleksii Sannikov
Why is .NET?Criteria for choosing a technology stack.

Why is .NET?

Criteria for choosing a technology stack.

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!

10:45 16.01.2019
Oleksii Sannikov
About transferring projectHow to cooperate with “comers”? A piece of advice for a client :)

About transferring project

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

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!

11:18 24.12.2018
Oleksii Sannikov
Active phase of software developmentHow to cooperate with “comers”? A piece of advice for a client :)

Active phase of software development

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

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.

10:00 25.11.2018
Oleksii Sannikov
Pricing methods & Project modelsHow to cooperate with “comers”? A piece of advice for a client :)

Pricing methods & Project models

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

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.

12:48 27.10.2018
Oleksii Sannikov
A few words about choosing developersHow to cooperate with “comers”? A piece of advice for a client :)

A few words about choosing developers

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

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.

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

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

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.

14:55 28.08.2018
Oleksii Sannikov