A full-stack software engineer with over 14 years of experience.

I have maintained, developed and launched multiple projects from scratch, carrying the development of its' back-end and front-end codebases.

My current toolset includes Elixir Language & Phoenix Framework, JavaScript & TypeScript (Node.js as well), Ruby & Ruby on Rails, React, Redux, Angular, Kubernetes, Docker and all the other various frameworks, libraries and technologies related to them.

I can help you with all the sides of your project:

  • verifying good UI/UX design,
  • leading/co-developing the back-end and front-end,
  • setting up the CI/CD,
  • mentoring the team,
  • estimating tasks,
  • researching possible techs,
  • leading, launching and monitoring the project.

Call me a Swiss Army Knife in terms of software.

Front-end Web Development

I specialize in applications written in both React and Angular. Recently I became also a huge fan of one-way data flow and Redux-like architecture and also typed languages, e.g. TypeScript.

My current experience and skills in front-end includes:

  • lead TypeScript/JavaScript development: bootstraping, refactoring, improving the structure, reliability, build setup;
  • full integration of front-end development using tools like Webpack with features like automatic code reload, code minifications, multiple environments support, CI/CD, Storybook components library, automated testing of accessibility, server-side render and visual snapshots,
  • good sense of design and UX,
  • huge experience in almost all of the JS ecosystems, by having used in the past many libraries like Next.js, React, Redux, Redux-Observable, RxJS, Angular, Ionic Framework, Backbone, jQuery, Lodash/Underscore and many else.
single page applications launched in Angular or React
talks given about front-end development
co-founded ng-poznan, Poznan Angular meetup group

Back-end Web Development

In back-end development, my current stack involves Elixir & Phoenix, NodeJS and nest.js, and Ruby on Rails.

Nearly every app I have launched in the past had the back-end done also by me. In order to improve the development speed, performance and reliability, I have changed languages and frameworks already multiple times, from PHP, Ruby to Elixir and Node.js; configured servers using just the shell, then Chef/Ansible, and now Docker and Kubernetes.

The lessons I learned while doing all these apps will be useful for me forever, no matter what framework I will use in the next project.

What I can do for you at that side is:

  • lead development of backends in Node.js/Elixir/Ruby,
  • splitting the back-end into separate domains and microservices,
  • cooperation with APIs, remote data synchronizations, cloud servers, asynchronous workers,
  • using different types of databases (like PostgreSQL, MySQL, Elasticsearch, Redis)
  • dividing the servers into different machine nodes / docker containers; database sharding; load balancing,
  • refactoring existing applications, by improving code readibility, separating concerns into separate functions/classes/modules, taking the business logic out from your request/response layer into separate modules (DDD), and moving the app architecture into an event-based one
  • writing unit and e2e tests

What about dev-ops, design, UI, project leadership, team mentorship ?

During my time I have created and released tens of websites.

Thus, not only I have coded their back-end and front-end codebases, but often I also had to care about other things needed in a successful web application project:

  • good planning of UI and thinking how it affects the UX;
  • consistency in design and typography;
  • Search Engine Optimization;
  • launching, deployment and monitoring the app after the release;
  • recruiting, onboarding and mentoring team members;
  • in cases where a good Project Manager was missing, fullfilling his role, in order to save the project from losing time on unneeded things.

If your initial thought is that I can’t be the best in everything, it's okay. Send the design job to someone else, and I will take care of all the code development, or whatever other role you see me best in.

In cases when you already have an existing team, but you would still use some help, contact me as well. I’ll fit in very quickly, I promise.