I have extensive experience in software principles,
which
are key in facilitating problem solving, group collaboration, and in guaranteeing a
solution
deliverable to stakeholders. I apply SOLID principles and Object Oriented Programming to
the
code I write, Agile practices to the teams and discussions I have, CI/CD to the review
and
deployment processes, and Domain-Driven Design to the planning of new software. Through
these principles, I can ensure good code, close collaboration, intelligent design and
reliable software delivery.
SOLID has 5 key coding
principles:
-
Single-responsibility: Code should have 1 purpose
-
Open/Closed principle: Open to extension, closed to modification
-
Liskov substitution principle: A derived class should have all the functionality
of
the prototype class
-
Interface segregation principle: Code should be forced to depend on it does not
use
-
Dependency inversion principle: Abstractions should not depend on implementation
Agile principles have most positively influenced my team collaboration. These
principles revolve around frequent delivery, open client
communication, and empowering individuals. I have been fortunate enough to belong to
some
strong teams that have taught me agile practices, and I apply them in every workplace.
Domain-Driven Design
(DDD) is the approach to
software that involves creating diagrams and models around domain knowledge. By creating
a
diagram or model, a developer can understand things that would otherwise only be
understood
by specialists. DDD is the tool to use that can allow people to discuss approaches to
problems before they're implemented.
My experience in
Continuous Integration/Continuous
Deployment (CI/CD) is limited, but the concept relies on a strong process for verifying
work. CI/CD is used to make small changes whenever they are ready as opposed to waiting
for
a deployment schedule.
Finally, Object-Oriented
Programming is the
cornerstone of most modern software. Although initially difficult to learn, they are a
strong
asset for any developer.