Hi, I'm Szabi.
Software Engineer.
I build data driven application for the web, supported by maintainable and testable back-end solutions that excel in code quality.
My Expertise
Software Engineering
Experienced in Procedural, Functional and Object Oriented Programming: TypeScript, JavaScript, Python.
Excited about code architecture and refactoring.
Front-End Development
Passionate about UI/UX and Application State Management.
Skilled in Semantic HTML, CSS, JS, React, Next.js.
Agile Ways of Working
Over 6 years of experience working in Scrum, Nexus and Kanban frameworks where fast moving teams have to deliver on time, meet the requirements and ensure quality.
Professional Experience
Mentor @ School of Code 2021 - 2023
@ School of Code
November 2021 - January 2023
Throughout my career I have had a few official/unofficial mentors who guided me on my software engineering path and I felt that it was my turn to give back to the community.
School of Code is a 16 week intensive tech bootcamp that focuses on web developer skills, design, and agile ways of woking. My responsibility as a Mentor was to guide the bootcampers on their journey not only from a technical perspective but also from a professional one.
I helped three people from different backgrounds to understand the fundamentals of JavaScript, JSX, the mechanics of React such as props propagation, conditional rendering, state management and common hooks. On the backend we looked at RESTful APIs in the popular Express.js framework and some basic SQL queries. Finally, I supported them to deploy their solutions on Netlify and Heroku.
Along side the technical challenges we had discussions about the different types of tech organisations out there and finding out what would be the best first step in their careers. I provided my professional experiences as an example to describe what it means to work in the software engineering industry and what are the roles within an Agile team.
This side job was a great experience and I am looking forward to mentoring junior to mid level developers in the future.
JavaScript ES6ReactJestReact Testing LibraryCypressNode.jsExpress.jsPostgreSQL
Software Engineer
@ BJSS
November 2018 - December 2021
Up until this point I was working mainly with start-ups and smaller companies and I wanted to learn how a well established consultancy does things in the engineering and project delivery space.
My first project at the company was a digital transformation, Driving Examiner Services, that currently allows driving examiners across the UK to conduct driving tests on an iPad saving hundreds of thousands of paper each year. The application makes driving examiners' lives easier by digitising the exam process and the exam itself smoother for the candidates, reducing weeks of delay between the tests and results.
Short video about the project: DVSA Case Study: Transforming an 85 year old paper driving test.
The client's requirement was for us to use the Ionic framework for building the application, and our solutions architect chose a serverless, microservices architecture in the AWS cloud. At the time Ionic was only supporting Angular so we bit the bullet and got the most out of the framework that we could. The application had to deal with a complex state, handling 12 different categories and working in situations where the device did not have internet connection, so we picked NgRx as the central nervous system of our solution. TypeScript was used to build a robust schema oriented codebase.
I was working very closely with the Product Design team, first to understand their User Research and make sure that we are building the right thing. And second, to implement our component library that followed the Government Digital Service guidelines.
To deliver the product MVP, we worked in a scaled Scrum environment that we called Nexus, held a demonstration event every two weeks to keep our client in the loop and gather valuable feedback. As a team, we built our repositories open-source; reviewed and merged multiple Pull Requests each day.
After 18 months of hard work, the client's in-house software engineering team took over the development, inviting me to join them for 6 more months and complete the project handover.
Hands down this project was my favourite and most successful work in the first 5 years of my career. And I consider myself lucky for having the opportunity to work alongside extremely talented people.
For my final year at the company I tried to switch things up so I moved to Birmingham and participated in a few small to mid scale projects, developing solutions on the front-end. One project in particular had a very well designed CI/CD pipeline so I had the chance to experience the benefits of such a process.
After 3 years into the consultancy business I decided to take a brake, focus more on my health and fitness, reconnect with old friends & family and build a few projects for myself (including this website), so I handed in my notice.
TypeScriptNext.jsReactIonicAngularReduxNgRxMaterial UINode.jsExpress.jsAWSJestJasmineReact Testing LibraryCypressWebDriver IOGitHubGitLabnpmyarn
Full-Stack Developer @ RightIndem 2017 - 2018
@ RightIndem
February 2017 - September 2018
After realising that my previous adventure will not succeed and looking at my back account to see a one digit figure only, I quickly started to look for opportunities around Nottingham City Centre. RightIndem was a perfect fit for me at the time because I could still stay in the start-up space but also utilise my freshly acquired front-end skills.
At the organisation, I was responsible for building a One Question Per Page front-end solution in React v15 and work with our bespoke, in-house CQRS system. Furthermore, I took part in discussions about the technical details of our system, product roadmap and design decisions. And occasionally, organising darts competitions, pool tournaments and staying super late to finish a feature for the next day release.
A few takeaways from this job:
- It is almost always better to pick an off-the-shelves framework for doing the heavy lifting on the technical side of your project because other people already have had similar problems to you and they developed a solution that is well thought out and tested. Focusing most of your efforts on solving domain specific problems that are unique to your business is a much better use of your time.
- TDD works best when building features with well defined requirements and most of the underlying technical details are fleshed out and solved. It can be a very polarising topic so it's good to enter in discussions about it with an open mind. The Red Green Refactor approach can be very satisfying.
- Agile teams are all different and while the Scrum or any other framework specification is a good place to start you don't want to stick with something that doesn't work for you. Iteratively improving the ways of working, listening to your mates and having fun is the core of any high-achieving, high-trust and fast moving teams.
JavaScript ES6ReactReduxStorybookJestEnzymeC#ASP.Net Web APINUnitMoqVSTS
Co-Founder @ Wraptime 2016 - 2017
@ Wraptime
September 2016 - February 2017
A friend of mine had an idea to build an application for allowing recreational football teams to find additional players and players to find teams. Later on we realised that the app was going to be useful for any team sport. We called it Instaplay.
This opportunity came at the right time as I just finished with my previous job and wanted a challenge. I moved to Nottingham, lived with my three co-founders and we worked pretty much every day to release the Application by the time the University of Nottingham, our first and only client, started their football and netball leagues.
I insta realised (pun intended) that if we want to achieve our deadline we need to break down the features into bite-sized tasks, then estimate and prioritise them. So I was eager to apply my Agile skills and knowledge that I picked up so far. ZenHub seemed a great tool for this as we already had our code and issues on GitHub.
We used React Native to build the application. At the time React Native was heavily in development, sometimes we needed to rewrite parts of our codebase to keep up with the latest framework version. Implemented a RESTful API using NodeJS and stored the data in a MongoDB instance. To support the app, we developed a Portal website in React and Bootstrap where league organisers could configure the system.
At its peak, the application had over 1000 active users and served to run the football and netball leagues for one season at the University of Nottingham. Throughout this project I acquired relevant experience in JavaScript, Node and React while learning the ins and outs of the Redux sate management library.
JavaScript ES6ReactReact NativeReduxNode.jsMongoDBDockerGitHub
.Net Developer @ Branded3, ComKnow 2015 - 2016
@ Branded3
April - August 2016
This was my first job in the UK and first time working in a Agile environment where we had regular stand-ups and other Scrum ceremonies.
My role was to support a used car sales website that was built using .Net technologies and powered by Sitecore CMS. As a back-end developer, I got introduced to Docker for the first time and used RabbitMQ to execute our reoccurring data import procedure, MongoDB for storing data and ElasticSearch to query that data.
Because of the rigorous release process that we used, I had to learn the Git version control techniques, some of which I still use today.
Sadly, the project that I was hired for fell through, so I decided to move on. Before that I had the pleasure of getting a new developer on board and teaching them about all the processes and technologies involved at the Software Development department of Branded3.
C#ASP.Net MVCASP.Net Web APIEntity FrameworkRabbitMQElasticSearchMongoDBDockerGitJira
@ ComKnow
August 2015 - February 2016
Fresh out of University, I was eager to start my job as a .Net Developer. Coming from a C/C++ background I was excited to build real world applications using the C# language, version 6.0 just came out at the time.
At this company I was introduced to the 3 Tier Architecture (Presentation - Business - Data) that gave a standardised approach to most of the projects that I worked on. I quickly realised that the Data Access and Business Logic layers were highly coupled and made it very difficult to test our code.
After doing some research, I found that this issue can be solved by implementing the Unit of Work and Generic Repository Pattern and with that we had the necessary abstractions to isolate and test our layers. We also made our code more easy to change for any future client requests.
In the meantime, I dipped my toes into the world of Front-end development and started to get familiar with JavaScript (well, as familiar as one can get with the language before ES6) and used jQuery to make the UI more interactive and handle AJAX requests.
A few funny things at this job:
- We used TortoiseSVN for version control and spent so much time merging our changes.
- We manually copied files to this FTP Server and called it a release.
- We used Spread Sheets for managing our Development tasks.
C#ASP.Net MVCASP.Net Web APIEntity FrameworkSQL ServerJavaScript ES5HTML5CSS3BootstrapjQuery
iOS Apprentice, Student @ Reea, Sapientia University 2012 - 2015
iOS Apprentice @ Reea
March - April 2014
On a local meet-up I talked about gamification, the term was relatively new at the time so a representative of Reea approached me and offered a spot as an iOS developer at the company. We've built a small scale application for a nearby media event.
Even though Reea wanted me to stay as a full time employee after these two months, I decided to keep focusing on my final university year. And to be honest, I did not fall in love with Objective-C, but I gained some valuable experience in terms of seeing how a Software Agency operates and what a professional work environment looks like.
Objective-CXCode
Student @ Sapientia University
October 2012 - June 2015
Bachelor's Degree with first-class honours in Computer Science.
AlgorithmsData StructuresOOPC/C++C#JavaSQLHTML5CSS3
Projects
Habit Tracker
A CLI tool that I use to track my habits. It is based on a well defined file parser.
Szabi.space
My personal website that showcases my work, hosts my blog and describes my past software engineering experience.
Authentication in Single Page Application
A proof of concept for implementing authentication using the MERN tech stack.
Stopwatch
Measure your performance against time with this simple, intuitive app.
Quote Analyser
A funny little app that uses public APIs to take a quote apart and defined the words that are present.
Todo List
Basic todo list application that persists your list so that you can make sure to complete every task.
Blog
Babel, a JavaScript Compiler
Babel is one of those tools that made JavaScript development in the 2010s approachable and contributed so much to the state of the language today.
Refactoring User Input Importer in My Habit Tracker CLI
Writing self-explanatory, maintainable, testable, scalable and DRY code is difficult, specially when the requirements are still a bit cloudy and the product is still evolving. Follow me on this journey where I refactor my Habit Tracker CLI code.
Contact Me
I am curious to hear about your current, or next Web Project and hopefully help out with the engineering side of things.
Send an e-mail to szabikr.dev@gmail.com and let's talk about the details.