ImpiCode is a software development company located in Warsaw, offering a wide range of IT services with particular emphasis on software creation and development. We operate in Poland and abroad. Our strength is an in-depth knowledge of different kinds of technologies, which enables us to find the best solutions for our clients and their needs. As technology doesn’t limit us, we offer very high flexibility and effectiveness in the implementation of our solutions. Our company creates systems that help to operate and develop our clients’ business. 



Grzegorz Papaj


For several years Grzegorz gained business experience by working successively as a developer, sales engineer, and project manager. A bioinformatician educated at University of Warsaw, he has over seven years of experience in scientific work in prestigious research institutes in Poland and Hungary. 



Piotr Lewandowski


He graduated in mathematics and computer science from the University of Warsaw. For several years, he created and developed new IT technologies with a dev team. He also gained significant experience as a project manager including the design, implementation and effective deployment of a work management system currently serving over 10,000 users. 

The staff

We require from our employees a number of competencies among which, most importantly, ranks excellent programming skills, an aptitude for algorithmic and optimization challenges, and willingness to continual technical as well as nontechnical development.

Team qualifications

At ImpiCode we have a dev team with varying areas of experience, competencies and specializations. It’s easiest to classify them by technology:

Microsoft technology team

Our Microsoft technology team works mainly on the .NET/ASP.NET platform.

Java/Oracle technology team

Our Java/Oracle technology team develops and maintains a number of web and desktop applications.

open source technology team

Our open source technology team works mainly on various web frameworks based on Python, Ruby, PHP, and JavaScript.

electronic systems software team

Our electronic systems software team operates on low (various micro-controllers) and high level (Raspberry Pi, other robotic solutions) hardware.

mobile applications team

Our mobile applications team works primarily with Android, iOS, and recently more often with a hybrid React Native.

How do we work?


The first step in our collaboration with our clients is to assign a manager who will conduct the project. ImpiCode managers are not only the best programmers in the company, they're also endowed with a wide range of competencies; including project management, IT consulting, and business consulting.

The manager is not only responsible for the selection and supervision of the team during projects but also for writing the most demanding elements of code. Understanding the business and organizational needs of our clients is the foundation of our approach to project management. The manager is not only a primary developer but also a business partner and an account manager. We aspire to have our team no longer seen as a provider who needs to be managed but as a stand-alone programming department in full sync with our client's goals.

Needs recognition

The job of a manager as the first person in the project is to identify our clients’ needs. Depending on the situation, it may involve functional analysis, inspection of a preexisting code base or completeness check (technical and legal) of the delivered system, or launching a test environment. The stage of diagnosis is not only to flesh out the project’s objectives but also to make a substantive assessment of the current state and to identify the biggest problems and potential difficulties. Writing a good software requirements specification (SRS) significantly increases the chance that the IT deliverables of the project will meet the client's needs on budget and, more importantly, on time.

Forming a team

After getting a full picture of the project situation, the manager (in consultation with the client) assigns specific tasks to their respective team members. The selection of the right people is a process of establishing the best matching skills and experiences of our developers to the current project's defined needs, thereby ensuring the highest possible efficiency. in our collaboration.

The role of manager, however doesn’t end with assigning tasks. Our kind of work requires of our managers that they pass on the knowledge about the project to the appropriate team members and also at later stages to supervise and properly care for the accomplishment of tasks, as well as scoring the final goal, as expected.

Adaptation to changes

Predefined needs often change throughout the project's lifecycle. It’s not only about changes to our long-range project objectives. We usually face practical changes resulting from the natural course of every project. For example, during the system ageing, the role of designers and computer analysts gradually decreases, whereas the demand for testers increases. However, the work of integrating specialists is needed “point wise” in those hard-and-fast moments in project.

One of the manager's jobs is to monitor current needs and respond by making the corresponding changes to the team. The project manager is a permanent fixture of the project providing consistent vision and knowledge exchange in the team. Thanks to this approach, the team as a whole cultivates a highly flexible and efficient theatre of action.


The project manager is also a key person when it comes to communication with our clients. Such a person reports the status of the project and its work progress, agrees with the client on the closest objectives and actions, while also informing about possible problems as well as proposing feasible solutions.

In ImpiCode, we usually execute projects on the basis of agile methodology, most often in the form of loose scrum iterations. This means that we work in sprints – at the beginning of each one of them, we discuss with our client the current status of the project and together set the objectives for the next sprint. We define the scope of required work, estimating its time consumption and expected result.

Estimating the time consumption

The key factor of the time and materials pricing model used at ImpiCode not only establishes a good communication platform but also engenders close cooperation between the client and the contractor, thereby ensuring total transparency of activity.

In every production sprint, our manager initially estimates the time required for certain tasks and presents these to our client. It’s a key step not only because on the basis of these estimates our client can make decisions about the order of the implementation of the individual tasks. Equally important is that estimates are the primary instrument of control. It helps to built trust, which is an extremely important factor in the time and materials pricing model.

Of course, estimates are always on point. Some projects (e.g. demanding work with someone else's code) might involve surprises of various kinds and because of that, the estimates have to be as light as possible. In the final analysis, the comparison of the initial forecast with the actual duration of implementation lets us determine the long-term effectiveness. In the case of either an underestimation or overestimation, it’s crucial to not leave it without comment. It’s the next manager's job to present the client with an explanation for the incorrectness of the estimates. Our efforts all about rasing our client’s awareness of the project's progress.

Thanks to this transparent approach of maintaining tight cooperation, unpredictable challenges are reported immediately upon being discovered and the client thereby preserves maximal control over the project.

The pricing model of our work

We usually sign a programme contract, which allows our client to place orders for programming work on a specific hourly basis for one or more months. For example, it is possible to order 2,5 person-month (400 hours) for 6 consecutive calendar months.

At the end of every month, we present a detailed work log of accomplished work. When consistent operational communication is used to plan and supervise the current work, the work log provides our client with a strategic perspective to client. Every entry in the work log contains the developer’s last name, timestamp of work performed for specific tasks and a short description of actions taken by our programmer.

The work log is not only the base of settlement between client and ImpiCode, but also between ImpiCode and developer. It’s a fundamental element of our company. We diligent care in using our proprietary work time registration system.

The orders within this framework agreement allow us to plan the intensity of our work. In practice, due to various reasons, the project may require increasing or decreasing our team's engagement over a certain period of time. In such situations, we always try to meet the needs of our client. If a short increase in work intensity is required and we have the appropriate resources, we are happy to responsively assign additional people to the project. Similarly, if work must be temporarily suspended, we postpone its implementation for the following month. As a result, the work continues smoothly, and customers are not burdened with the need for detailed planning.

For more information about our work, check out our process or write to us via contact form.