Software Design – Know your business domain

Knowing how to code isn’t sufficient. Mastering only programming languages or operating systems isn’t sufficient. You need to dive into the domain of business you are in.

When starting a software project focus on the business domain it is operating in. Software should fit the domain it is designed for. “Software needs to incorporate the core concepts and elements of the domain, and to precisely realize the relationships between them. Software has to model the domain“[1, p.12]. If there is insufficient knowledge about the business your software will be incapable to enhance the daily business of your customer. It will lead more likely to malfunction, chaos and failure. Furthermore how to choose the right tools for your project if you don’t know what the real purpose of the software is?

Knowing your business means being able to speak your clients’ language [2, p.32]. Communication is and has always been key.  Being able to understand the client is priceless. It will make your work easier. You understand why they need a certain thing, you know how to tell them why something is a bad idea. And in the end you will be able to know what they need. Even Henry Ford knew “If I had asked my customers what they wanted they would have said a faster horse”.

Knowing your business enables good software design. Software design is the foundation throughout your project. Code design signifies the details. Software design is like the architecture of a house and code design the paintings on the wall within the house [1, p.14]. Correcting bad code design in a later stage of the software project is no big deal. But bad software design can ruin everything. Those errors will haunt you throughout your project. And they will cost much money and time. Knowing how the business will work will enable you to see the big picture to calculate risks.

You want to solve your client’s problems. If you want to be able to solve problems you need to state and understand a problem [3]. You know all the facts, the context and constraints that come with this problem. This will make communication way easier, as you are able to  concretely state what is wanted.

How-tos

  • Schedule lunch or settle for coffee with a business person. Ask about their daily work. Ask how technology supports them or slows them down on their daily work.
  • Look at trade magazines, industry websites for your company’s or your client’s industry
  • Browse the internet for big news items that are associated with your business
  • Never be afraid to ask if you have questions. Fear being ignorant but never to ask questions.
  • Learn to state problems shortly. No abbreviation, no weird words. If you are able to state the problem in simple words, everyone will understand it. Sometimes people use difficult words and long sentences to cover lack of knowledge.
  • Use visualization to make complex issues more tangible
  • Think about abstraction, Model Driven Design and Domain Driven Design for your project. It will help you understand the domain and you can construct an internal representation of the target domain.

Great technology and coding skills are important. They are your basis. So never neglect to master them. But your client isn’t in need of a code robot, they can get those everywhere. So in order to be (and stay) relevant invest time in the business domain.

References

[1] Avram A., Marinescu F. (2006): Domain Driven Design quickly, InfoQ- Enterprise software Development Series, ISBN: 9781411609259

[2] Fowler, Chad (2009): The passionate programmer- creating a remarkable career in software development, ISBN: 9781934356340

[3] Hickey R. (2010): Hammock Driven Development, 1st Clojure Conj, in Durham, North Carolina

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s