Training and Consulting

Experience

During my 25+ years of experience in software development, I have accumulated knowledge and experience that can be shared with others.

As I spent most of my career as a consultant or contractor, I had a chance to work with various business domains, small and large projects, and teams of different sizes. I have experience in designing and building software products from scratch, modernizing existing systems, and maintaining legacy applications.

While I did have a glimpse into different technology stacks, my main focus has been .NET platform, more specifically ASP.NET (Core), and the related ecosystem. Throughout the years, I did have a chance to work on desktop apps, web apps, mobile apps, and even games. I have experience with various databases, message brokers, and cloud providers. I have worked on projects that required high availability, scalability, and security, and I have experience with building and maintaining such systems.

In the last decade or more, I have steadily moved through various roles, from a regular developer to a technical lead, software architect, and software engineering manager. I have experience in leading development teams, mentoring developers, doing technical interviews, working with stakeholders, preparing proposals, analyzing and modernizing existing solutions, architecting large enterprise solutions, setting up development processes, improving the development flow, applying best practices to the codebase, etc.

Training

I can provide training on the following topics:

  • Modern .NET platform, more specifically ASP.NET Core and related ecosystem
  • Software architecture
    • Building distributed systems
    • Modular monoliths to (micro)services
    • Communication patterns between services
    • Building cloud-native applications
  • Software craftsmanship
  • Identity, authentication, and authorization
  • Building production-ready APIs
  • Unit and integration testing
  • Development tools and practices
  • Automation, conventions, and improving the development flow
  • CI/CD pipelines
  • Migrations from .NET Framework to modern .NET
  • And more...

To summarize, I can help with getting your development team up to date with the latest technologies and practices in software development, with a focus on the .NET platform. The training can be tailored to your needs, from a one-day workshop to a multi-day training course. In the past, I had a chance to deliver training to various audiences, from students to experienced developers in companies. One example is the ASP.NET Core 3.0 workshop that I prepared as a self-learning resource with instructions, but also as an expandable platform for in-person events lead by myself or other trainers. A new, updated version of this particular workshop is in the works.

Consulting

Other than a few forays into building software products, I have spent most of my career as a consultant. Here are some of the areas where I can help:

  • Analyzing and improving the architecture of your software system
  • Reviewing the codebase
  • Modernizing the stack on existing projects, like migrating to the latest .NET version
  • Applying conventions and best practices to the code
  • Improving the development flow by automating, creating local dev environments, and setting up CI/CD pipelines
  • Laying the groundwork for new projects
  • Mentoring your development team
  • And more...

I can help you with a one-time engagement, or we can set up a long-term collaboration. I can work individually, or with your team, on-site or remotely, depending on your needs and location. I have experience working with teams of various sizes, from small startups to large enterprises.

Contact

You can contact me through the social network links in the footer, or by sending an email to contact at this domain or my Gmail handle miroslav.popovic.