I envision a world where software is helping us enjoy our lives. I plan to achieve this by helping companies and their teams build better and high quality software.
It is a mission that encompasses all aspects of the software lifecycle, from product discovery, design, software engineering, delivery, operations, and maintenance. Through a combination of theory, process, practices, and tools, working with people and systems.
Building software is an expensive and complex endeavor. And if not done well, it can result to bad user experience or very costly to maintain. This is where i can help. I don’t claim to have the silver bullet nor the answer to all the problems that will come up, but i’d like to use the models that i have learned, and apply them where needed.
Be Agile
The model of software and teams i follow, is rooted from the concepts of agility and lean. Agile in practical sense and applied all through the lifecycle of software. I am a fan of the concept in continuously building the right thing, and building it right.
Fortunately in this age of software, there’s no need to design or start from scratch. There are a lot of ideas and tools that can be learnt and adopted to achieve agility, that have been tested and proven by many software teams.
Achieving agility is a company wide objective, and will involve not only the software engineering team, but also the other teams in the organization. These can be in executive management, product development, customer support, and even sales and marketing. The dependencies with these teams, is often the source of conflict during the transformation.
My approach
My approach is to have a lasting impact, beyond the time i am engaged with your team. I intend to encourage the team to adopt good habits, and help develop the capacity to grow it themselves. For any transformation to succeed, it is not enough to just know the best practices, but also to live and grow with them in your journey.
Of course, this requires change to be wanted. If i observe an obstacle preventing change to happen, i will identify and communicate it, and if it is unavoidable, i will try to find ways to go around it. However, if i am not successful, i will find a graceful way to end the engagement. A good alignment is needed to successfully implement the changes, and i will be glad to stop, if that is not met.
Consulting principles
I follow these principles in my work:
- My clients decide the focus and pace of my engagement
- I design systems and software with users in mind
- I see and service the entire software lifecycle
- Be entrepreneurial and consider a holistic approach to ideas
- Be valuable and strive to be an expert
Models and methods
I use the following model, when envisioning the lifecycle of software, from idea to a production system:
- Innovation phase
- Design phase
- Implementation phase
- Maintenance
Further, we can break down the whole software ecosystem into 5 different areas:
- Software architecture
- Software delivery
- Software maintenance
- Software craftsmanship
- Software engineering
Other related areas are:
- Product discovery
- IT service management
The following concepts and movements, inspires and guides me, when working with software:
- Agile manifesto
- Lean software development
- Software craftsmanship manifesto
- Disciplined Agile
- XP practices
- Kaizen
- SCRUM and Kanban methods
- 12 Factor App
- Continuous Integration
- Continuous Delivery
- DevOps
- GROWS method