Siarhei Krukau

Software developer

Personal profile

I am a 28 years old experienced but still open-minded software developer. Currently, my level is senior to lead, although I don't like titles. I have a strong technical background but I don't skimp on a soft skills as well. I am eager to be challenged in order to grow and improve myself. Imperfection (of everything) is my motivation.

My strengths: I am an INTJ. I learn quickly. I am agile (i.e. I can work with pretty much any stack / technology / methodology you want).

My weaknesses: I am an INTJ. I am a perfectionist. I am selfish and sometimes intolerant to others. I am not willing to concede in some situations.

Experience

May 2018 – present : Banuba Development, Ltd.

Software Developer / Social & Fun domain

Senior developer in a small team of two.

My responsibilities:

  • Designing a backend for a social mobile app on AWS Lambda stack
  • R & D in real-time bidding domain

Key technologies:

  • AWS Lambda
  • AWS API Gateway
  • AWS DynamoDB
  • AWS Congnito
  • AWS IAM
  • AWS EC2
  • AWS Redshift
  • AWS SSM
  • Apache Kafka
  • Apache Flink
  • Siddhi
  • Netty
  • Spring 4.x
  • Docker
  • Bitbucket Pipelines
  • Ansible

Jan 2018 – May 2018: EPAM Systems, Inc.

Lead Software Developer / Travel & Hospitality domain

"That guy"

My responsibilities:

  • Supporting multiple projects & streams

Key technologies:

  • Spring 3.x
  • JAX-WS / Apache CXF
  • Pivotal Gemfire
  • RedHat JBoss Fuse
  • Docker

Feb 2015 – Jan 2018: EPAM Systems, Inc.

Lead Software Developer / Travel & Hospitality domain

Working in "Continuous Delivery" team. I consider this part of my career as a darkest one yet and a total failure.

My responsibilities:

  • Designing Jenkins pipelines
  • Supporting Jenkins cluster
  • Extending Jenkins with custom plugins
  • Writing and supporting Chef deployment scripts
  • Writing and supporting internal tools for statistics & monitoring
  • Dockerizing existing applications

Key technologies:

  • Jenkins
  • Chef
  • Spring 4.x
  • Spring Boot 1.x
  • MongoDB
  • Docker

Jun 2013 – Feb 2015: EPAM Systems, Inc.

Senior Software Developer / Travel & Hospitality domain

Implementing administration & monitoring tool for hotel IT infrastructure upgrade project

My responsibilities:

  • Designing new functionality
  • Implementing REST services
  • Implementing UI screens

Key technologies:

  • Spring 3.x
  • Pivotal Gemfire
  • Angular 1.x

Apr 2012 – Jun 2013: EPAM Systems, Inc.

Software Developer / Travel & Hospitality domain

Working on internal SDK library

My responsibilities:

  • Refactoring existing monolith library into pieces

Key technologies:

  • Spring 2.5.x
  • JAX-WS / Apache CXF
  • MyBatis

Oct 2011 – Apr 2012: EPAM Systems, Inc.

Junior Software Developer / Travel & Hospitality domain

Implementing front-desk application for hotel network.

My responsibilities:

  • Fixing defects
  • Occasionaly implementing new features

Key technologies:

  • Spring 2.5.x
  • JPA / Hibernate
  • JMS / ActiveMQ
  • JAX-WS / Apache CXF
  • GWT, ExtGWT

Jul 2011 – Oct 2011: EPAM Systems, Inc.

Junior Software Developer / SAP domain

Customizing and maintaining SAP-based supplier relationship management system.

My responsibilities:

  • Fixing defects
  • Implementing customizations for various clients
  • Developing ad-hoc extensions for SRM installation

Key technologies:

  • Pure Java 4 stack
  • Beanshell
  • Proprietary frameworks and libraries

Education

Skills

Programming languages

  • Java: I pay my bills coding on Java since 2011.
  • Kotlin: My secret love since 2014.
  • Groovy: It's hard for me to use it now, after Kotlin.
  • JavaScript: I don't mind coding on JS, especially on ES 2016, however, I am not very proficient in backend JS (Node.js).
  • Ruby: I'm not very fluent in Ruby, just using it for Chef.
  • Python: I've never read PEP 8, but I can write simple scripts in Python to automate routine.
  • Go: Tried it once in a personal project. Didn't like. Ironically, this blog and CV runs on Hugo, site generator written in Go.
  • Bash: I can do pretty much everything on Bash with Google.

Libraries and frameworks

  • Spring: This is the framework I'm mostly working with. Since 2012 I've touched most of it's modules, like spring-data, spring-jms, spring-orm and so on.
  • Spring boot: I like Spring boot and I'm trying to start new projects on it since 2015.
  • JPA / Hibernate: I've used both somewhere in 2012 — 2014 and didn't have much fun.
  • MyBatis: I've completed one small production project using MyBatis.
  • Apache Camel: I've used Camel pretty actively during 2013 — 2018. Then I burned out and had to change the job.
  • TestNG: I prefer TestNG over JUnit 4.
  • JUnit 5: I prefer JUnit 5 over TestNG since 2018.

Databases

  • Oracle: Used it 2011 — 2018 in production systems.
  • MySQL: Used it several times since 2010 in personal projects.
  • PostgreSQL: Used it several times since 2016 in personal projects.
  • MongoDB: I've accomplished the very first 10gen's (now MongoDB, Inc.) cources (M101: MongoDB for Developers and M102: MongoDB for DBAs) in 2012, since that time I've used MongoDB in various pet projects and in non-critical production projects.
  • Pivotal Gemfire: You may tell me it's not a database, but a cache. And you'll be right. But used it as a primary data source in a couple of projects I had to deal with.
  • AWS DynamoDB: I began using it in production since mid 2018 and it's a great fun!
  • AWS RDS: My experience with RDS is limited to "just using it", because we never had any issues with its fully managed approach.

Front-end

  • HTML: I know the tags!
  • CSS: I know the theory: cascading, specificity, media queries and so on. The problem is: I am really bad at web design, never managed to create a good-looking page.
  • LESS: I prefer LESS over CSS and SASS.
  • Twitter Bootstrap: I've been using it in every front-end project I work on, it's a real resque for me.
  • Angular 1.x: I've completed one pretty big production project on Angular 1.x.
  • Angular 4.x: I know it's concepts and completed several hello-worlds.
  • jQuery: Well, everybody knows jQuery, right?

Build tools

  • Gradle: I am a big fan of Gradle and I'm trying to use it anywhere it can be used since 2013. Check out my Gradle talks below! I even convinced people on my current projects to switch to Gradle + Kotlin DSL. And we don't regret!
  • Ant: I've used Ant several times few years ago.
  • Maven: Maven was a primary build tool on my past work. However I didn't like it since 2013-2014 because Gradle is obviously better.
  • Webpack: I've configured several front-end builds with NPM and Webpack using Google.

Continious Integration

  • Jenkins: I'm pretty proficient with Jenkins Pipelines. Once I used them for three year trying to convince people to adopt CI / CD flows. I also have some experience in Jenkins administration and writing plugins.
    I deeply regret investing my time in Jenkins and it's pipelines. Just ask me if you're interested why (and you have some free time to listen this vague talk).
  • GitLab CI/CD: After spending three years on Jenkins Gitlab CI/CD is a fresh breeze! Since MS aquired GitHub in mid 2018 I'm moving all my pet projects to GitLab and I enjoy using its CI/CD. I've tried almost all of its parts like deployments, environments and dynamic environments, paralles jobs and so on. I sincerely like this approach for its simplicity and I believe it will succeed.
  • Travis: I've used Travis for my Github projects widely till MS aquired GitHub in mid 2018 then started to move to GitLab CI/CD.
  • Bitbucket Pipelines: It's a total copy of GitLab's CI/CD, so I'm pretty familiar with it. I'm using Bitbucket Pipelines on my current work widely.

DevOps tools

  • Docker: I have some Docker & Docker Compose experience.
  • Vagrant: I'm using Vagrant as an auxiliary tool when testing Ansible's playbooks and Chef's cookbooks.
  • Ansible: I love Ansible! I use it to configure all the computers I own (even the laptop).
  • Chef: Currently I'm using Chef on my work to automate deployments.

OSes

  • Linux: Currently, Manjaro Linux is my home distro, I'm using it for about three years now. Before that I've used Linux Mint for two years and Kubuntu (for five years). I am a fan of KDE / Plasma DE. I have experience with server Linux, such as Ubuntu and CentOS, as well. So, I'm pretty comfortable with Linux.
  • Windows: Everybody is able to work on Windows, for sure!
  • macOS: Not my kind of OS, really. I can use, but, you know...

Miscellaneous

  • Git: I think I'm pretty good at it. I am #4 contributor to the "Pro Git 2nd Edition" russian translation (although it is abandoned now) and I've read the whole book several times. I also have some experience with JGit.
  • Liquibase: I know how to use this (and similar) tools, though we don't use it on my current work.

Projects

Doktor

Doktor is a Jenkins plugin for automated documentation uploading to Confluence. Doktor supports Markdown and AsciiDoc documentation and can be used in "classic" builds as well as in Pipelines. Doktor is implemented 100% in Kotlin and Gradle (with Kotlin DSL).

Saberlight

Saberlight is a console app to control smart BLE bulbs produced by Chinese company Zengge. Saberlight is written in Golang.

Talks

OPENRNDR @ BKUG #10

Hobbies

  • Snowboards
  • Longboards
  • Cycling
  • Jogging
  • Vector graphics
  • Trendwatching
  • Science fiction
  • Quantified self
  • Astronomy
  • Photography