My name is Andrei Soroka.
I've been developing since 2012, taking on roles across the spectrum in tech: from backend and frontend development (with a focus on the latter) to DevOps, Product Ownership, Team Leadership, and Technical Leadership.
Important
Important Note for Potential Employers Considering Test Assignments (Click to expand)
I'm open to discussing test assignments under the following conditions:
- Your Company Is Exceptional - Let's talk more about it and make a short call before 😄
- The Task Is Unique, Not Routine - I appreciate challenges that are out of the ordinary. While I'm capable of working in various styles and patterns (you can check my GitHub for examples), I'm not interested in standard business logic tasks.
- Opportunity for New Experiences - I'm all for trying new things. If it's something I haven't done before, like working with a new technology or framework, I'm interested. However, I'd prefer to avoid revisiting familiar ground.
- Short Assignments Only - I'm willing to consider brief tasks that won't take up too much of my time.
- Public Sharing of the Assignment - I reserve the right to publish the assignment and its outcomes because it involves my time.
Question: Points 3 and 4 imply that you won't be able to fully showcase your best code, is that right?
Answer: Any "best" code you have becomes outdated within a couple of months. And what is the best code without code review and team collaboration?
Please don't misunderstand me. I'm not trying to be difficult. I'm just trying to be honest and transparent.
Let's connect and discuss how we can collaborate!
Best, Andrei Soroka
Fun fact: In 2023, I completed a couple of test assignments in different styles. For the first one, I quickly put something together, but for the second, I aimed to craft what I considered the best code for that year.
(Click to expand)
- Code: https://github.com/AndreiSoroka/chat-app-react-node
- Stack: Node.js, React, MobX
- Development log: https://github.com/AndreiSoroka/chat-app-react-node/blob/main/doc/DEVELOPMENT_LOG.md
I decided to log my process of development. Just read it before you start judging me. 😄
Unlike the previous task, I just started doing it, without thinking through the work.
- Code: https://github.com/AndreiSoroka/cart-component/tree/master
- Demo: https://cart-component.andreisoroka.com/
- Test coverage: https://cart-component.andreisoroka.com/coverage/
- Playwright report: https://cart-component.andreisoroka.com/playwright-report/
- Storybook: https://cart-component.andreisoroka.com/storybook/
- Description: A simple shopping cart component.
- Stack: React, TypeScript, Redux, SCSS, Jest, Playwright, Storybook, Vite, Docker, Eslint, Stylelint, Prettier
In this task, I wanted to show how the development and testing process can be automated. I went a bit overhead and just enjoyed it :) Aside from the fact that the last time I worked with React was in 2018 (and even then, infrequently, and now it's 2023).
I also decided to try out FSD. It took me a while to really appreciate it, especially after finishing this task.
P.s. I understood FSD only after a few more projects, but not here.
(Click to expand)
- Code: https://github.com/AndreiSoroka/weather-history-canvas
- Demo: https://weather-history-canvas.andreisoroka.com/
- Description: A client application for visualizing data from a web service, which archives temperature changes and precipitation levels over the last 120 years in one of the cities of ***.
- Stack: HTML5/CSS3, JavaScript without the use of third-party libraries and tools.
This was an interesting task since I wasn't allowed to use any libraries.
(Click to expand)
I don't remember when it was...
- Code: https://github.com/AndreiSoroka/concentration-game
- Demo: https://concentration-game.andreisoroka.com/
- Stack: Vue2, Webpack
- Description: A game where you need to flip cards and find matching pairs.
It was just a fun task. Nothing special.
- Code: GitHub Repository
- Demo (2 hours, branch master): 15-puzzle-game
- Demo (3 hours, branch redux): 15-puzzle-game-redux
- Stack: React, Webpack
- Description: A classic 15-puzzle sliding game, implemented in React. The game involves moving tiles in a grid to organize them in order, with one tile missing.
This task was unique as I had a time constraint: of 3 hours. And I'm not primarily a React developer. So, with the documentation by my side, I demonstrated my ability to work with it.
- Code: GitHub Repository
- Demo: openexchangerates-calculator
- Stack: Vue2, Vuex, Webpack
- Description: A compact app that allows for the comparison of cryptocurrency prices.
The task specified that the calculations should be error-free. The catch, which one could easily miss, was that for Bitcoin, you need to use 8 digits after the decimal. Try executing
console.log(0.3 - 0.1)
in the browser, and you'll understand.