The intent of this post is to describe the main contents and goals of my blog and what I will be posting about.
Main Topic and scope
As the title of my Blog states, the main topic covered is "Business Oriented Software Solutions". It's all about delivering fast time to market, good quality software that answers to business needs and result in a return on investment.
The type of software projects that are in scope of what I call "Business Oriented Software Solutions" are commercial projects, and are not included research & development, educational projects and any other projects for which there is no associated direct business profitable value. However, all posts that are technical and about development methodologies and quality are still applicable to all projects.
Also not included in "Business Oriented Software Solutions" are all RAD projects and disposable software applications. Disposable software applications can be proof of concept prototypes or software application that are intended for a single, on-off purpose, and discarded away after use. "Business Oriented Software Solutions" are software applications that are designed and intended to be used on the long term and will most probably have to evolve and integrate new or changed business needs.
This Blog being about software development, there will be a great deal of technology talks. Even though part of the posts will be technology agnostic, another part will be specific to Microsoft and Microsoft partners technologies. This is because I made the choice of using Microsoft centric technologies for the implementation of my software projects and it is therefore the technology platform I am expert on and will be posting about.
This blog will cover all activities of a software development project and therefore is targeted to multiple audiences. Depending on your level of implication in software projects, you might be interested in certain posts only. Click on your profile below to filter posts of most interest to you.
Posts for business owners: As a business owner you will be interested in posts that reunite software solutions and business and explain how software solutions can bring your business added value and exactly fit to your business rather than your business be constrained and limited by a software solution. These posts do not require specific technical knowledge and yet give a nice and clear understanding on software and technical matters from a business perspective.
Posts for technical project managers: As a technical project manager you will be interested in all technical and process & development practices posts
Posts for functional project managers: As a functional project manager you will be interested in process & development methodology posts and business related posts. You will be especially interested to read about how to drive a project in a feature driven way and through highly iterative delivery cycles.
Posts for developers: As a developer you will be interested in all technical posts and in the process & development methodology posts that are related to your daily activities. May be of interest for you two to quickly go through all other posts to get an overall view on how you job fit in the total project landscape.
Posts for software architects: As a software architect you will be interested in all technical posts and especially these posts related to software architecture, development practices, tools and frameworks and design patterns.
This blog is about "Business Oriented Software Solutions" or: how to deliver fast time to market, good quality software that answers to business needs and therefore result in a return on investment.
This could seem quite obvious and not relevant to be the object of a complete blog: after all, who wants to build and late deliver bad quality software that is useless, not driven by any business case and not bringing any added value? Well, yes, one could tell that software development can be an exclusively creative and fulfilling, passionate activity for some individuals, but as stated above, less focus here on software developed as part of a commercial company strategy. And still: as a passionate individual you may don't care of your creation bringing any added business value and keep it useless yet exciting, but you most probably still want to efficiently produce high quality code!
So obvious answer is: NO, of course no-one wants to create these useless, expensive, poor quality software applications, so why this blog?? Thing is that developing and delivering these Business Oriented Solutions can prove to be tricky and the purpose of my Blog is to gather and consolidate information to provide guidance on how to best choose, use, re-use and compose processes, technologies, patterns, frameworks, tools and applications to deliver fast time to market, feature oriented, high quality, robust and performing software solutions.
I believe that the key to efficiently build Business Oriented Software Solution is to concentrate and excel in two complementary directions:
- Define the goals to aim at and set these goals as your priority
- Clearly understand the various areas of expertise you need to cover to achieve your goals and make sure you have skilled individual on board in each of these areas.
And for our matter, Building Business Oriented Software Solutions is a real big challenge and the difficulty is to succeed in three main goals: create solutions that are business driven, high quality and fast time to market.
And building Business Oriented Software Solutions involve mastering complementary skills in three areas of expertise: the business domain/functional space, technology & development practices and management & project methodologies.
The three goals for success
One can list more goals to aim at to successfully deliver Business Oriented Software Solutions, and this list can depend on the specificity of a project and/or business domain. However I believe than the main three goals to achieve that are essential and drive success in most cases are to build solutions that are:
- Business driven/feature driven: solutions answering a real business need and seamlessly adapting to the business changes and evolutions.
- High quality: solutions technically properly designed and implemented making the solution robust, performing, maintainable and seamlessly welcoming evolutions and new features.
- Fast time to market: solution that have the ability to be delivered or more be iteratively delivered as fast as possible, in order to compete efficiently on the market place.
The difficulty comes from the interdependency between these three targets. It is for instance easy to understand that reaching fast time to market result while keeping a high level of quality is not so easy to achieve. This is part of the reason why it's common place to have software that are early on the market place but of poor quality, or software that are of good quality, delivered on time but not aligned with the business requirements and priorities, or even worth: software that is not answering the business initial needs, of poor quality due to the pressure involved by fast time to market constraint and delivered very late as a consequence of the two first problems.
The posts will be written with this in mind and will be oriented toward solutions and guidance to succeed in meeting the three targets.
The three areas of expertise involved
Various disciplines are to be conducted as part of as software project and these disciplines require different set of skills and abilities that we can distribute in three areas of expertise:
- Business domain & Functional space: Know and understand the functional space and business domain that is yours. Should not be constrained by technology or methodologies, as business need is the driving force.
- Technology & development practices: Excel in efficiently using technology and composing the right frameworks, tools and patterns to answer a business need in a robust and flexible way.
- Management and project methodologies: Master appropriate management and project methodologies to efficiently and iteratively delivery software with accordance to business needs and technology constraints.
Please note that in a software project there are more disciplines than areas of expertise. If we take RUP as an example, the disciplines are: business modeling, requirements, analysis & design, implementation, test, deployment, configuration & change management, project management and environment. RUP is the IBM iterative software development process (http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process) .
You need to be aware that no matter how small or big is your team you will have to master skills in all these three areas of expertise. And the challenge in succeeding in all three areas lies in the inherent difficulty of cross-cutting these three distinct aspects of a software development project that require complete different abilities and most usually different persons who need to communicate and understand each-other and each-other concerns.
Outcome of the posts
Each of the posts that are relevant to creating Business Oriented Software Solutions will be started with tables indicating what goals the discussed topic can help achieve and what area of expertise is concerned and the posts will be tagged accordingly. This way the reader will have a mapping between goals and areas of expertise and a set of relevant posts, ideas, and guidance to succeed in efficiently building Business Oriented Software Solutions.
So here we start, I will now start blogging, I hope you will enjoy the ride!