Refactoring to maintainability

A personal introduction

My name is Jorge Gueorguiev Garcia, and I am software consultant that has donned a lot of hats throughout my career. I am always learning and trying to improve the value provided by software development efforts.

Ways of working

Communication

By far the most important aspect of software development. Good communication allows to develop what is needed, not what someone thought it was. Good communication produces satisfied users and reduces wasteful use of the company workforce.

Context matters

There are is no solution/approach that is 100% usable on every single situation. Therefore, you need to understand the situation to adapt those solutions.

Coding is designing

From the big to the small, code is design. It is a skill that needs to be developed. And is at the core of what I do.

Domain Driven Design

Code cannot be just generic. Code needs to work within the realms of the company domain(s). Code is a reflection of the processes of a company.

People are important

Because we are in a knowledge based profession, the development and retaining of good people is of extreme importance. Good developers can overcome bad processes. Though using good adapted processes will improve the results.

Pragmatism and Dogmatism

On teams that are too pragmatic, traditionally i have been more dogmatic. While on teams that are too dogmatic, I have tended to be pragmatic. There is a balance that needs to be found for each team.

More knowledge sharing

Technical Practices

  • TDD
  • Trunk Based Development
  • Continuous Integration
  • Continuous Deployment
  • Pair Programming
  • Ensemble Programming

Technologies

This is a non-exhaustive list of technologies I have used

More than one year in production
  • C#
  • Clojure
  • Python
  • Java
  • Typescript
  • Javascript
  • AWS
  • Azure
  • Terraform
  • CircleCi
  • Jenkins
  • Sql Server
  • ElasticSearch
Used on production, or enough experience
  • Ruby
  • F#
  • Serverless Framework