Fork me on GitHub




My name is Ivan Krechetov, and I'm a programmer. I was born in 1979, in Novosibirsk, Russia. I live in Winterthur, Switzerland with my family: a wife and two daughters.

Early years

Before I was 11 I didn’t even care if computers exist. Then, one day I randomly stumbled upon a book about BASIC, the programming language. And then it began… I was totally blown away by the idea that I could create my own worlds in code. I was eager to build smart, beautiful things, which are able to make their own decisions, and be… alive, sort of.

It was a constant creativity bliss: all those small programs and games I made and hardly really finished — because I was only 12, and because new shiny ideas appeared faster than I could code. Since the very beginning I had no doubts at all that I'll be coding all my life.



I've obtained a Bachelor's degree from Novosibirsk State University (NSU), graduated with honors, with 100% excellent grades in the diploma, which makes me one of the top-2% students.

I studied at the department of mechanics and mathematics. We had a lot of Math: mathematical analysis, theory of functions of a complex variable, mathematical logic, abstract algebra, computation methods, discrete mathematics, probability and statistics, you name it. Basically, the curriculum was: all the Math imaginable + the gym class.

In the last two years I did the research work at the chair of programming. My qualification work subject was “Forming the object-oriented data structures tailor-made for the search tasks”. In essence that was a rather simplistic exploration of how one would go about building an object-oriented database.


I continued at NSU, the same department and chair, and obtained a Master's degree, again with honors; however, the grades weren't that maxed-out anymore, as I already had in parallel a full-time job. My master's thesis subject was: “Effective RDBMS usage in an object-oriented application” — exploration on the topic of object-relational mapping. Regarding the curriculum, it was more of the computer science-related courses than during the bachelor's program.

Reference: Dr. Prof. Alexander Marchuk

October 2005—October 2006

I worked as a PhD Associate at the University of Twente in Enschede, The Netherlands. My subject was: “Aspectual Refactoring of Software Architectures” — research in the field of aspect-oriented software development: separation of concerns, architectural aspects, architectural styles, software architecture design process, formalized evaluation and refactoring.

Unfortunately, PhD research work didn't quite meet my expectations. It was too much of writing papers, and too little (almost none) of writing code. While, of course, the educational value was great, and I definitely learned a lot. Thus, in spite of rather promising initial results, I have quit the PhD in favor of a programming job in Switzerland.

Reference: Prof. Dr. Ir. Mehmet Akşit


Teaching and presentations

Professional Experience

March 2000—September 2000: Glance AG, Zürich

Worked as a junior programmer on ActiveFrame and it's applications. ActiveFrame was a framework for the development of document flow support programs, which require rich data management. My part was the code generator, and the enhancement of some of the object-oriented database features. The ActiveFrame application I maintained most of the time was a customer contacts management program.

Tech: C++, Win32, MFC, Oracle.

References: Felix Berger, Hans Bärfuss

Left the position because of the limited period of the Swiss work permit L.

October 2000—September 2001: Auktion24 Development, Novosibirsk

The company is known for creating However, I wasn't in Ricardo team, but rather working on something that was supposed to become “the next big thing” for the company, but never actually has: — a global expert advice system, meant to provide a communication platform for people asking questions and giving answers — via Web, e-mail, chat and telephone. The application supplied IP-telephony and billing, WAP and PDA adaptations.

I was responsible for the data layer, programmed the chat client, and have built an ad-hoc tasks scheduler — crontab appeared to be not good enough for us.

Tech: Java, Linux, Apache JServ, XSLT, Oracle, Java RMI

References: Gregory Entin, Adrian Pfister

Left the position because the project was declared a financial dead-end, and cancelled.

October 2001—March 2002: iNetLab, Novosibirsk.

Tech: Java with Java2D and Swing, C++ on Win32, Visual Basic 5

Reference: Alexander Osipov

Left the position because the company projects situation wan't stable and too promising, which greatly influenced the salary. For me that appeared to be a quick temporary employment after Auktion24 crash. However, I did like the team, and the work was quite a bit of fun.

April 2002—September 2003: Center of Financial Technologies, Novosibirsk

The company is one of the leaders in Russia in providing software and hardware solutions for finance and banking. I worked in the IBSO Platform team. IBSO is a banking applications platform: proprietary object-oriented programming language translated into Oracle PL/SQL, business model designer, screen forms editor, access rights manager, operator's module, and several utility applications.

I was responsible for the maintenance of the existing IBSO modules, implementation of the new features (primarily GUI). Re-engineering, refactoring, integration of the new development concept into the “old” code. Did the analysis, design, prototyping and implementation of the common persistence layer for the IBSO client modules.

Tech: Oracle, Visual Basic 6, C++ on Win32, COM

Reference: Anatoly Lisovoy

Left the position because of a lucrative offer from XIAG AG, and I thought that in a much smaller company, as a project leader, I'll be able to make a difference.

October 2003—September 2005: XIAG AG, Novosibirsk

A custom Web applications development company. That was my first, and hopefully the last, experience as a manager. Not writing any production code for over a year was physically painful in the end. However, I believe I did a pretty decent job as a manager. I controlled multiple projects' progress, communicated with customers, and translated their concerns into engineers' tasks, evaluated the results, prepared the project proposals for potential customers, wrote specifications, interviewed job candidates.

After about a year I became desperate for coding. But I lacked the experience at the time with Web programming, and wasn't much inspired by PHP4 language. Luckily, we found a C++ project for me: a digital photo prints ordering software for Microsoft Windows. It had a custom look, simple image enhancement features, ordering Web GUI integration via an embedded Internet Explorer, network communication with the server for the photos upload, writing orders to CD/DVD for sending by post. When released, it was downloaded and used by tens of thousands of people.

Tech: C++ on Win32, WTL/ATL, GDI+

Reference: Andreas Graf

Left the position to do PhD in Holland.

October 2006—today: XIAG AG, Zürich, then Winterthur

Now I'm working at XIAG AG as a programmer and project leader. I'm taking full responsibility for projects, interacting directly with customers, specifying and estimating the projects' scope and iterations; I'm defining tasks for up to 4 other team members. But most of the time I'm writing code. I led the following Web applications' development from scratch.

Tech: PHP, Silex, Zend Framework, JavaScript, Node.js, Backbone.js, AngularJS, React.js, Redux, jQuery, CSS, Apache, nginx, Linux, SaltStack SCM, SOA, CouchDB, PostgreSQL, Redis, sqlite, RabbitMQ, Sphinx search, SOAP

I also maintained, or implemented new features for the following applications.

Tech: PHP, JavaScript, CSS, C++, C#/ASP.NET, Java, Apache, Linux, PostgreSQL, MySQL, MS SQL Server

References: Andreas Graf, Max Moos

Other small projects (pre-GitHub times)