Author Image

Hi, I am Attila

Attila Fejér

Software Engineering Expert & Technical Coach

Versatile Software Engineer and Technical Coach with a comprehensive skill set spanning 15+ years of experience in software craftsmanship, Java development, and cloud architecture.

With over a decade of experience, adept at designing and implementing scalable solutions in cloud environments. Known for expertise in Agile methodologies, including Extreme Programming, and a strong advocate for best practices such as SOLID principles, design patterns, and clean code. Proficient in Spring framework, containerization technologies like Docker and Kubernetes, and cloud platforms, including GCP and AWS.

Accomplished in mentoring and coaching teams, having impacted over 10,000 developers through training programs and consultancy roles. Has a track record of improving DORA metrics.

An accomplished author with a portfolio of technical articles.

Eager to leverage leadership and technical acumen to excel in lead/architect positions.

Skills

Experiences

1
Software Craftsmanship Coach, Developer Advocate
IBM ISSC Hungary Kft.

2023 - 2024, Budapest, Hungary

Responsibilities:
  • Collaborated with decision-makers to modernize and standardize software development methodologies, processes, and tooling.
  • Shared strategic decisions with the global community and helped teams overcome migration and refactoring challenges.
  • Utilized behavioral engineering and coaching techniques to elevate teams’ software delivery performance.
  • Empowered over 10,000 developers with advanced technical skills, including software craftsmanship, Extreme Programming, and DevOps.

Technical Advancement Lead of Hungarian Site
IBM ISSC Hungary Kft.

2022 - 2023, Budapest, Hungary

Responsibilities:
  • Established a robust feedback mechanism, collecting insights from mentees and leadership through periodic DORA assessments, facilitating data-driven decision-making.
  • Advocated for emerging technologies and best practices, serving as a thought leader and catalyst for innovation in software development methodologies.
  • Collaborated with cross-functional teams, aligning software development efforts with business objectives to achieve strategic organizational goals.
  • Improved employee engagement by delivering tailor-made upskilling solutions targeting their pain points and elevating their technical mastery.
2

3
Architect of a Database Archiver Application and a Car Fleet Management Tool
IBM ISSC Hungary Kft.

2020 - 2022, Budapest, Hungary

Responsibilities:
  • Led the design and implementation of scalable cloud-based software solutions, optimizing system performance and enhancing user satisfaction.
  • Refactored existing monolithic applications into scalable cloud-native solutions, enabling new feature development and improving maintainability.
  • Guided teams to improve software development practices, fostering a culture of continuous improvement and accelerating project delivery.
  • Engineered scalable cloud solutions, boosting system performance and user satisfaction.
  • Increased application throughput by more than 500%.
  • Accelerated project timelines by fostering a culture of continuous improvement.

Lead Software Developer of E-learning Platform
Apertus Nonprofit Kft.

2017 - 2019, Budapest, Hungary

Responsibilities:
  • Led cross-functional teams in all stages of the systems development lifecycle, ensuring alignment with project requirements and timelines.
  • Conducted performance tests and optimizations, resulting in improved system performance, increased client satisfaction, and reduced reported issues.
  • Acted as a liaison between technical and non-technical stakeholders, effectively communicating project progress, challenges, and recommendations for improvement.
  • Created an engaging learning environment for end-users while optimizing CI/CD processes to accelerate software delivery.
  • Collaborated closely with stakeholders to gather and analyze requirements, translating them into actionable development tasks and deliverables.
  • Provided technical leadership and guidance to team members, fostering a collaborative and innovative environment conducive to achieving project goals.
4

5
Contractor Trainer of Java, Spring, and Software Engineering
EPAM Academy, Pentaschool, Ruander, Masterfields, Számalk

2013 - 2017, Budapest, Hungary

Responsibilities:
  • Maintained consistently high scores in student satisfaction measurements.
  • Evaluated student progress and provided constructive feedback.
  • Adapted teaching strategies and materials to accommodate diverse learning styles and skill levels, promoting inclusivity and accessibility in the classroom
  • Conducted classes on programming languages, architecture, and methodologies.

Co-Founder, CEO, Software Engineer
Just Another Company Kft.

2012 - 2015, Budapest, Hungary

Responsibilities:
  • Provided strategic leadership in executive and technological domains, shaping the company’s vision and direction.
  • Implemented effective strategies that led to significant increases in company income, profit margins, and client base expansion.
  • Cultivated a culture of innovation and excellence within the organization, fostering continuous improvement and creative problem-solving.
  • Led the successful delivery of solutions for over 20 partners, ensuring quality in project execution.
  • Implemented initiatives to enhance client satisfaction and elevate Net Promoter Scores through attentive service and quality delivery.
6

Education

M.Sc. in Electrical Engineering
B.Sc. in Computer Engineering
High School
High School

Posts

Engineering vs Craftsmanship
RockIT 25 Jun 2024

In the world of software development, two terms often arise when discussing the qualities of experienced professionals: engineering and craftsmanship. While we sometimes use these terms interchangeably, they represent distinct skill sets and mindsets. Emily Bache and Dave Farley published the video What Is A Software Engineer? | Craftsmanship Movement Was A “Step Backwards”. It inspired me to write this post with a different opinion: combining the two approaches leads to superior software…

Sustainable Refactoring
RockIT 15 May 2024

In the fast-paced world of software development, maintaining code health while delivering new features is a constant challenge. One strategy that has emerged as a crucial practice is refactoring. However, the traditional approach to refactoring can often clash with the demands of project timelines and stakeholder expectations. In this post, we’ll explore how sustainable refactoring techniques can help strike a balance between code health and feature delivery.

Will Customers Ever Speak Our Language?
RockIT 9 May 2024

Software developers face a constant challenge: the communication gap between them and customers. TLDR: customers will never speak the developers’ language. While both parties strive for the same goal—creating valuable, functional software—their perspectives, priorities, and vocabularies often differ. In this post, we’ll dive into the reasons for this difference, explore the implications, and discuss strategies for bridging the gap.

Replacing Type Code With State/Strategy
RockIT 1 May 2024

Previously, we talked about potential issues switch-case can cause, and what to do when the type affects only data, or behavior, too. Now that we are switch-case ninjas, we can go even further and see how to tackle when the type code and the behavior change dynamically at runtime.

AI Tools and Refactoring
RockIT 24 Apr 2024

Previously in the series, we saw that AI tools have limitations. We also discussed maximizing our productivity by using them to write code - without shooting ourselves in our legs. In this post, we’ll cover one more piece of the puzzle: how they can (or can’t) help us to refactor.

How To Use AI Developer Tools In 2024
RockIT 18 Apr 2024

In the previous post, we saw the limitations of AI developer tools. Yes, they are not perfect. However, they are still able to improve our productivity significantly. This time, we’ll dive into how we can effectively use them to achieve a better development experience, higher-quality output, and faster delivery.

Describing Software Behavior
RockIT 10 Apr 2024

In the world of software development, understanding software behavior is crucial. It’s not just about writing code; it involves various steps and artifacts. In this post, we’ll dive into the different ways to describe what a software product does, showing how they all connect to depict software behavior.

AI Developer Tool Limitations In 2024
RockIT 3 Apr 2024

With the rise of ChatGPT, Bard Gemini, GitHub Copilot, Devin, and other AI tools1, developers started to fear that AI tooling would replace them. Even though their capabilities are indeed impressive, I don’t fear our jobs will go away in 2024.

Replacing Type Code With Subclasses
RockIT 4 Feb 2024

We’ve previously dived into the complexities and maintenance challenges of switch-case and saw a refactoring technique for simple scenarios. Today, we’ll raise the bar a bit and focus on situations when our type code affects behavior. We’ll use pets to demonstrate the concepts.

Replacing Type Code With Class
RockIT 23 Apr 2023

In the previous part, we had an overview of why switch-case could be hard to maintain. This part will focus on the simplest scenario: when type-code only affects data, not behavior. We’ll do this by modeling a pizzeria.

The Dark Side of Switch-Case
RockIT 23 Apr 2023

In a nutshell: switch-case makes code harder to maintain. We’ll understand the reasons to eliminate it and see when its usage is justified.

Tech Content Creators' Responsibilities
RockIT 15 Mar 2023

As online learning flourishes, it’s easier than ever to learn new things. If we search for virtually any technology, we’ll get remarkable amounts of results. In some sense, it’s good, since we have the freedom to choose. But how should we make that choice?

Code Smells
Baeldung CS 27 Jun 2021

Explore ideas how to prevent a codebase’s quality from decreasing.

Refactoring
Baeldung CS 10 May 2021

Learn that refactoring is a natural and essential part of a software’s evolution

What Does It Mean to Program to Interfaces?
Baeldung CS 7 Mar 2021

A quick and practical introduction to programming to an interface.

Object-Oriented vs Functional Programming
Baeldung CS 8 Dec 2020

Learn about object-oriented and functional programming and discover that they are not mutually exclusive.

The General Concept of Polymorphism
Baeldung CS 12 Nov 2020

Learn what polymorphism is with examples.

Difference Between when() and doXxx() Methods in Mockito
Baeldung 8 Sep 2020

Learn the advantages and disadvantages of the configuring a mock object the when().thenXxx() or the doXxx().when() way.

Object-Orientation in the Real World
Baeldung CS 9 Aug 2020

Explore the core concepts behind the object-oriented programming.

Mapping a Single Entity to Multiple Tables in JPA
Baeldung 27 Oct 2019

Learn how to map a single Java entity to multiple database tables using JPA.

Command-Line Arguments in Java
Baeldung 6 Sep 2019

Explore how to configure your Java applications using command-line arguments.

Composition, Aggregation, and Association in Java
Baeldung 3 Aug 2019

Explore the properties and representation of composition, aggregation, and association in Java.

An Introduction to Epsilon GC: A No-Op Experimental Garbage Collector
Baeldung 7 Mar 2019

Learn how Epsilon works, and explore the common use cases.

An Introduction to ZGC: A Scalable and Experimental Low-Latency JVM Garbage Collector
Baeldung 9 Feb 2019

Explore how Z Garbage Collector manages to keep low pause times on even multi-terabyte heaps.

Java 8 Streams peek() API
Baeldung 16 Jan 2019

Learn about the peek() method and explore the lifecycle of a stream.

Mapping a Dynamic JSON Object with Jackson
Baeldung 26 Dec 2018

Explore multiple ways of handling dynamic JSON objects with Jackson.

Remove Leading and Trailing Characters from a String
Baeldung 3 Dec 2018

Explore several ways to remove leading and trailing characters from a String.

Many-To-Many Relationship in JPA
Baeldung 15 Nov 2018

Learn how to model a many-to-many relationship in Java using JPA

Heap Sort in Java
Baeldung 18 Oct 2018

Learn how to implement a Binary Heap and Heap Sort in Java.

Use Criteria Queries in a Spring Data Application
Baeldung 30 Aug 2018

A quick tutorial to using JPA Criteria Queries using Spring Data JPA.

Remove All Occurrences of a Specific Value from a List
Baeldung 7 Aug 2018

In this tutorial, we’ll see multiple solutions to efficiently removing all occurrences of a value, describing the pros and cons.

Using Spring ResponseEntity to Manipulate the HTTP Response
Baeldung 3 Jul 2018

Learn how to manipulate the HTTP response using the ResponseEntity class.

Using Spring @ResponseStatus to Set HTTP Status Code
Baeldung 3 Jul 2018

Have a look at the @ResponseStatus annotation and how to use it to set the response status code.

Spring Core Annotations
Baeldung 7 Jun 2018

Explore the most commonly used Spring core annotations.

Spring Scheduling Annotations
Baeldung 2 Jun 2018

Explore the most common Spring scheduling annotations.

Spring Web Annotations
Baeldung 1 Jun 2018

Explore the main annotations you can use to handle HTTP requests and responses in Spring MVC.

Spring Boot Annotations
Baeldung 1 Jun 2018

Explore the Spring Boot Annotations.

Spring Data Annotations
Baeldung 31 May 2018

Learn about the most important annotations we need to handle persistence using the Spring Data project

Working with Boolean in Thymeleaf
Baeldung 25 Apr 2018

Take a look at how to work with boolean values in Thymeleaf.

Honors & awards

XPFarm Red Belt - Software Craftsmanship Coach
IBM Mar 2023

This award demonstrates a commitment to software craftsmanship, continuous learning, teamwork, the discipline to stick to daily practice, and the passion for knowledge sharing.

Outstanding Technical Achievement Award
IBM Apr 2022

Special recognition for the top recipients for developing technical achievements.

Fivefold IBM CIO Hungary Champion
IBM 2021-2022

This award represents the dedication and passion one has put into making CIO Hungary a better place.

OITM Competition 2018 - Java (Spring, Hibernate) Category 1st Prize

Hungarian National IT Challenge (Országos IT Megmérettetés)

OITM Competition 2018 - Java EE Category 1st Prize

Hungarian National IT Challenge (Országos IT Megmérettetés)

OITM Competition 2018 - Java Innovation Category 2nd Prize

Hungarian National IT Challenge (Országos IT Megmérettetés)

OITM Competition 2018 - Overall 2nd Prize

Hungarian National IT Challenge (Országos IT Megmérettetés)

Scientific Students' Associations (TDK) 2nd Prize

Integrated Development Environment for a Custom Soft-Core Processor

Scientific Students' Associations (TDK) 2nd Prize

Push Notifications for Sensor Networks with Internet Connection

WTW (Win The Web) 24h Programming Competition 1st Place
Jan 2011