I always wanted to do some kind of stuff. When you are a user, it performs kind of magically, and you think: “What is behind the box?”. It always bugs me: “How it works?”

Tell us about your first job.

I actually started my career when I was 16 – 17 years old.
My first job was at applied security systems, not only software, but hardware as well. I’ve got an extensive experience there as well as strong knowledge.
I started from low-level programming such as C, Assembler then Python, a bit of Java.

Actually, my first job teached me doing low-level and high-level programming as well.
When you produce a hardware product you can’t throw it into the market without software support, software tools.

When you start with programming firmware, then you continue with software drivers, software applicative level tools that are intended for end users.
So, you need all of the stack end-user interface interacting with users.

How can you insist on your choice when choosing stack of software for development?

There are a couple of aspects.
In order to know which technigue is better point out to who your solution is better you have to analyze the specs, the business processes to be sure in your point. You can always tell the customer that your solution is better and the key here is to get your choise of software up. They are all interested in your opinion because you are the one who in fact will be developing and maintaining the system.

Most of our clients have strictly business needs. We have startups as clients with extremely new technologies. Most of our clients are people doing business. Time and money are important to them. They are interested in the correct and efficient systems. If you prove that your decision makes sense, the majoruty of the customers will be interested in your decision.

What can you advise other project managers when junior developer brings them not well-written code?

99% of junior developers will show bad code. They just don’t know how to write a good code, that will look good and work efficient. To show the correct example of your own, in 90% of the cases they will catch up. When you see something ugly and then something pretty, then on your DNA level you will know how to make pretty.

Secondly, you may introduce him a formal coding guidelines. You may say: “Put here a bracket, put here a new line” etc., in such case it will be less margin for bad code.

There is a good example of such guideline. PEP 8 proposition Python document shows and explains how to write a uniform and correct code. It is integrated into python community and every experienced developer may estimate: is this a code written by guidelines or not.

You were refactoring engineer at one of your projects. Who proposed such a task: you or the customer?

In most cases it is us both – me and a customer. Client says: “The system is unefficient. It requires a lot of maintanence.” You take a look at the system and see that it is legacy, it’s old and you say: “How about refactoring? It will make your system more reliable and scalable.” This decision must be accepted by both sides.
If you start refactoring and can’t show results and it goes by months.
I’ve seen other PMs who ended badly with refactoring because they can’t show results quickly.

Having in mind NDA, please share the area of your current project.

Nowadays I lead a Java project. We extract data we need, we use multiple servers and make this process efficient.
Challenge we are facing – to automate the processes for uploading, creating accounts.