About this site
Do you know the purpose of the code you currently write?
Do you know how that code takes you and your employer closer to your objectives?
Is that code the optimal code, in the sense of functionality, quality and customer satisfaction, for the long run and not only the simple short term solution?
Are you conducting the best possible software business given the your current constraints?
The purpose of this site is to convey my personal thoughts, reflections and ideas around the subjects of software engineering and management, especially the combination of the two.
I am an experienced and entrepreneurial software designer and project leader with an interest in business. I have been working in the software industry since 1999 and have worked in a number of software related roles such as team leader, analysis, design, implementation and testing.
My vision is to work with an organization that will make use of my personal strengths and to work with interesting people.
The goal is the journey it self, not the final destination.
My personal strengths include being able to figure out how all of the pieces and resources can be arranged for maximum productivity. I am also futuristic/visionary and I try to inspire others. I takes responsibility for my actions and I am committed to stable values such as honesty and loyalty. I have a desire to learn and want to continuously improve.
The main corner pillar of my personal values is to ”treat others as you would want to be treated by others” (also known as The Golden Rule or ethic of reciprocity).
By showing respect, honesty and loyalty towards others I hope receive the same.
Software Development Principles
Working with software development I have come to follow a number of principles which I believe make me better at what I do.
These principles include the SOLID, DRY, KISS and YAGNI principles.
KISS stands for ”Keep It Simple, Stupid!” and it aims to keep the design as simple as possible.
DRY is an acronym for ”Don’t Repeat Yourself” and it aims to reduce duplication of e.g. code, data or any information in general. I.e. ”Every piece of knowledge must have a single, unambiguous, authoritative representation within a system” which is closely related to the single responsibility principle.
SOLID stands for
- Single responsibility – every software entity (object, module etc) should have only a single responsibility.
- Open/closed principle – every software entity should be open for extension, but closed for modification.
- Liskov substitution principle – closely related to design by contract and it means that objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.
- Interface segregation principle – many client specific interfaces are better than one general purpose interface.
- Dependency inversion principle – a software entity should depend upon abstractions and not depend upon concretions.
YAGNI stands for ”You Ain’t Gonna Need It”. This means that you should ”always implement things when you actually need them, never when you just foresee that you need them” as Ron Jefferies wrote.