Software design
Commercial software development is more than just „write the code we tell you to write“.
Creating software that can be sustained for years while adapting to changing markets and developing business models requires an understanding of evolutionary architectural approaches.
Architecture cannot be designed to remain the same when circumstances change. While there is no such thing as architecture that can withstand years of development, there are ways to design architecture that can handle changes.
Team leadership
Personally, I prefer leadership to management. You want the people on your team to think for themselves and eventually become a self-managing. However, they need a leader to guide them.
Leadership means possessing the skills, decisiveness, and values that inspire others to follow.
Organizational structure
What is your company optimized for? Is it optimized for middle management and bureaucracy? If so, delivering value will suffer.
What organizational constraints are limiting your productivity? Focusing your organizational structure on the value your company creates will make your people, customers, and CFO happy.
Software development strategy
There's a difference between designing an MVP, software that you'll develop for three months and hand over to the customer, and software that you use internally or a software project that you want to maintain for years and sell to customers.
Developing software to find a market fit is different from developing software that already has 10,000 customers.
Understanding these differences is essential for success and requires strategic thinking and specific changes in development stages.