Scroll To View More
Mateusz Jedrzejewski, Domain-driven Design (DDD) Developer in London, United Kingdom
Mateusz Jedrzejewski

Domain-driven Design (DDD) Developer in London, United Kingdom

Member since February 6, 2017
Mateusz is a highly motivated software engineer with versatile skills and a lot of passion. He has deep understanding of both running computer systems and the software development processes. He loves challenging work, learning new things, and that feeling that he can make a difference. Apart from focused, result oriented engineering experience, he also has a scientific background, primarily in image recognition.
Mateusz is now available for hire

Portfolio

  • Nordea/LTI
    Java 8, Spring Boot, Angular, REST Microservices, Devops, Scrum, TDD...
  • DWP UK
    Java 8, REST, MongoDB, Dropwizard, Kafka, Buck, TDD, Kanban, pair programming...
  • HMRC
    Scala, Play, REST, MongoDB, Docker, TDD, Reactive Programming, Kanban...

Experience

  • Agile, 5 years
  • REST, 5 years
  • Domain-driven Design (DDD), 5 years
  • Microservices, 5 years
  • Test-driven Development (TDD), 5 years
  • Continuous Delivery (CD), 4 years
  • NoSQL, 4 years
  • Java 8, 3 years
London, United Kingdom

Availability

Part-time

Preferred Environment

Intellij IDEA, Vim, Git, Jira

The most amazing...

...project I've worked on was building a greenfield video playing platform. It was amazing to watch something I have created be used by millions of users.

Employment

  • Senior Java Developer

    2018 - PRESENT
    Nordea/LTI
    • Worked on a large tool that manages deployments and configurations of almost all software in the organization.
    • Transitioned a large monolith application into microservice architecture.
    • Implemented brand new Microservices with Java Spring Boot back-end that nonlinearly corresponds to functionalities in the previous generation application.
    • Implemented a UI based on Angular 6.
    • Created and maintained a continuous delivery pipeline that runs automated deployments and testing procedures on environments.
    • Participated in the architectural design of new components being developed.
    • Followed scrum-based development process and working towards sharing experience to make the process smooth and genuinely agile.
    Technologies: Java 8, Spring Boot, Angular, REST Microservices, Devops, Scrum, TDD, Continuous Delivery
  • Senior Java Developer

    2017 - 2018
    DWP UK
    • Participated in digitalization of complex Social Benefits system business processes for social care agents and claimants in UK used by milions of people across the country.
    • Planned and designed the solutions that support and automate various processes (from payments, to housing verification, etc.), involving input from User Research and UI design.
    • Implemented REST web service back-end and front-end for the developed platform Platform.
    • Utilized TDD, strong coding practices, pair programming, and other Agile principles both in implementing new features and refactoring legacy code.
    • Maintained and gathered statistics for the working production system (splunk, grafana).
    • Solved issues and bugs concerning the running production system.
    • Participated in Kanban whiteboard based development with close relation between development and QA.
    • Implementation of highly available third party-system communication with Kafka queues.
    Technologies: Java 8, REST, MongoDB, Dropwizard, Kafka, Buck, TDD, Kanban, pair programming, Splunk, Grafana, Jira
  • Senior Java Developer

    2016 - 2017
    HMRC
    • Designed, implemented, and supported crucial government platform components used directly by millions of tax payers.
    • Created reactive REST services used for customer messaging, profile management, and authorization.
    • Participated in release management for microservices deployed on a custom built, Docker based platform.
    • Used a fully agile development process - Kanban, strong tesing/quality assurance procedures, heavy use of pair programming.
    • Maintained, monitored, and analyzed usage patterns on running production systems with Kibana and Grafana.
    Technologies: Scala, Play, REST, MongoDB, Docker, TDD, Reactive Programming, Kanban, Continuous Integration, Continuous Delivery, Kibana, Grafana, Domain Driven Development
  • Senior Java Developer

    2014 - 2016
    Sky
    • Reimplemented crucial components of monolithic video player back-end application in a new REST microservice architecture from the very beginning of the project to production release and later support.
    • Contributed to all levels of software development (planning, development, functional testing, NFT testing, deployment, infrastructure configuration, maintenance).
    • Worked in a very agile development environment (constant pair programming, strong TDD, extreme emphasis on quality assurance and testing, full Scrum - later Kanban).
    • Designed, implemented, and constantly improved continuous delivery pipeline including fully seamless deployment scripts that could deploy do production without any disruption.
    • Provided real-time monitoring, maintenance and on-call support of heavily used (up to 2k TPS, 10 mln userbase) video application back-end.
    • Prepared demo applications (Angular frontend) and showcases for other teams and non-technical business representatives.
    • Designed and implemented custom Angular-based application fine tuned for monitoring running backend on all environments.
    Technologies: Java, Dropwizard, REST, Cassandra, Kafka, Angular, Docker, Ansible, AWS, ELB, Grafana, Kibana, TDD, Domain Driven Development
  • Senior Java Develper

    2013 - 2014
    Gamesys
    • Developed core components of the back-end for an online Game platform with millions of active users.
    • Worked on both a legacy monolithic application and a new REST microservice oriented architecture for new components.
    • Contributed crucial ideas and making them work both on architectural and on API design levels.
    • Utilized quality assurance, testing (TDD), and agile Scrum-based methodology.
    • Maintained and supported live production components with Splunk.
    Technologies: Java, REST, Dropwizard, Spring, JMS, Angular, Domain Driven Development TDD, Splunk, Scrum, Git, SVN,
  • Senior Software Develooper

    2012 - 2013
    Intel through Sii
    • Implemented automated USB device testing platform as a SOA based system.
    • Performed low-level interactions with Linux USB devices.
    • Designed and implemented web UI interface for management of different parallel testing executions.
    • Introduced Test Driven Development techniques to the project.
    Technologies: Java, C#, C++, SOA, JNI, USB, Git
  • Software Developer

    2010 - 2012
    Gdańsk University of Technology
    • Participated in innovative project for automated disease recognition on endoscopic images.
    • Analyzed and implemented latest scientific developments in medical image recognition.
    • Contributed to preparation of scientific publications summing up the work and outcomes.
    • Implemented the UI application for medical specialists to perform automated video analysis.
    Technologies: C++, C#, Java, Image Recognition, WPF
  • Java Developer

    2007 - 2010
    Wolters Kluwer Poland
    • Implemented innovative web interface application for legal system workers (lawyers, judges, etc.) to search for legal documents and company information.
    • Integrated with back-end services to gather data to be displayed.
    Technologies: Java, GWT, Javascript, HTML

Experience

  • Crowd Panic Detection on CCTV Videos (Other amazing things)

    This was my masters dissertation for which I had spent a lot of time learning algorithms and methods of computer vision. Also read a few latest scientific articles on the matter. The final solution was implemented in C++ with OpenCV and utilized techniques such as optical flow and my own modification of a gaussian mixture model. It then proved to work on a few video samples I had acquired which gave me a lot of satisfaction.

  • Video Application Back-end in Microservice Architecture (Development)

    I was working on a backend for the video play out application written in REST microservice architecture using Java and Dropwizard.

    It was extremely satisfying to see the applications that I implemented and overlooked from the first lines of code to finally go to production release and be continuously used by millions of customers.

    The project was run in a very agile way (Scrum later Kanban), with strong TDD and constant pair programming.

    I was deeply involved in the project and apart from taking part in planning of work, designing and implementing solutions, I introduced essential parts of the build process. Amongst other things, I worked on ansible configurations, package management, test execution on different environments or seamless deployment process implemented in Python.

    Running production application was constantly monitored through both grafana and Kibana with the use of custom fine-tuned graphs and message logs to have maximum visibility of the running system, I was also one of initiators and main creators of a custom monitoring application written in angular.

    The project involved on-demand support.

  • Web Application for British Tax Payers (Development)

    I was working as a contractor for UK tax office (HMRC) on the website to be used by all tax payers (individuals, companies and organizations) in the UK. It was written in microservice architecture with the use of Scala and Play framework and involved work on both front-end and back-end.

    The project had really good automation process for creating new microservices so I did introduce a proper breakdown of business logic as per rules of REST and Domain Driven Design wherever I could. It also had a very efficient release process that used deployment pipeline and automated testing so I was often able to have my code in production in a few days.

    It also had a strong Agile/Kanban process.

    I worked in two crucial areas of the project - one being messages and alerts sent to the tax payers and another - the authorization system which was used by almost all other components.

    I was constantly monitoring the running system and received alerts if anything wrong happened and the work involved finding and fixing issues on a live production system.

    Overall it was a very satisfying project on which I have learnt a lot - from different details about how the deployment worked, to functional programming with asynchronous I/O.

  • Back-end of an Online Gaming Platform (Development)

    It was a platform for slots and bingo games amongst others and had a user-base consisting of a few million people.

    The main part of the backend was written as a large monolith Java application that exposed APIs to higher levels - the UI and games. The codebase did however follow some patterns of Domain Driven Design and the components were isolated from one another. It was a very interesting time as the company was expanding their business and new components were written as REST microservices with Java and Dropwizard. I worked on some very core and crucial parts positioned very low in the stack that involved manipulation of users funds. My work largely involved implementing new functionalities for existing components and also designing and implementing new components, cooperating directly with the architects and the product owners. I employed strong TDD and clean code principles. It also involved constant support and monitoring of a running production system including tracking down bugs and issues.

  • Web Application for Country-wide Management of the Benefit System (Development)

    This work has been carried out for a different governmental department, was used by mainly Claimants and Job Agents to digitalize the processes needed for managing the benefit system in the whole of UK.

    What was very interesting on this project was the domain, which was very complex. Implementing new features often required hands-on analysis of current manual practices that took place outside of the system, that also had a lot of vague and unclear parts to it, and then trying to design and implement then in the context of an already existing solution.

    Also the codebase was common with a single repository so I have been working in various different areas.

    The project was based on Java 8 and custom framework built on top of Dropwizard. Apart from implementing new features, I was involved in refactoring of existing legacy code, laying proposals of how it can be improved long-term. From time to time, I also fixed bugs and provided support of the running system.

Skills

  • Languages

    Java 8, Java, CSS, HTML5, JavaScript, Scala, C, C++, SQL, C#, Python
  • Frameworks

    Dropwizard, Mockito, JUnit, Spring, AngularJS, Play 2, Django, JNI, Angular
  • Libraries/APIs

    AssertJ, JAX-RS, Jackson, JMS, jQuery, OpenCV, JDBC, Hystrix
  • Tools

    Git, IntelliJ IDEA, Ansible, GitHub, Grafana, Kibana, Splunk, Vagrant, Maven, Logstash, Jira, Gradle, SBT, ScalaTest, Cucumber, Puppet
  • Paradigms

    Agile, Continuous Delivery (CD), Test-driven Development (TDD), REST, Continuous Integration (CI), Pair Programming, Clean Code, Domain-driven Development, Microservices, Scrum, Gang of Four (GOF) Design Patterns, Kanban, Functional Programming, Functional Reactive Programming
  • Other

    Domain-driven Design (DDD), HATEOAS, Image Recognition, Big Data
  • Platforms

    Docker, iOS, Linux, AWS EC2, Apache Kafka
  • Storage

    Cassandra, NoSQL, MongoDB

Education

  • Master of Science and Engineering degree in Computer Science
    2005 - 2010
    Gdansk University of Technology - Gdańsk, Poland
I really like this profile
Share it with others