Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm currently working as a software developer and studying for a software engineering degree (the former whilst not doing the latter).

I'm confident in my ability to do my job competently, but I feel I could do it better. I know my greatest pitfall is in my business skills; for example, I often don't understand at first why I'm asked to implement something in such a way, because I haven't understood the business requirement behind it.

Does anybody have any good advice on improving my business skills? Or is it something that comes with experience?

share|improve this question

6 Answers 6

up vote 10 down vote accepted

I agree with several others here: it sounds like you need to learn more about how to learn the business domain quickly. Journalists do this a lot.

When I was in your position a long time ago, I picked up a couple of textbooks on journalism and reporting. I learned a lot from them. Background reading is important; in this day and age, Google is your friend. (No Google--no PCs--when I started; the local library was my friend.)

But the main skill for me is intuitive, not scientific. When someone describes a problem (or, more often, the way they're trying to solve a problem), I often know what questions I need to ask, and I know them without having to think about either the problem or the questions. I think this is generally true of journalists, too. And I think it comes from having a lot of experience in learning new business domains. So, like Google, experience (that is, practice) is your friend.

share|improve this answer
1  
great idea with the journalism approach! –  Anders K. Jul 22 '11 at 12:31
    
One issue with Google - no librarian. S/he's not just there to wield the rubber stamp. We do have Stack Exchange and similar sites, though. And Google works a lot better than that card index. –  Steve314 Jul 22 '11 at 13:31

Always try to understand the business domain before writing any code. Read a book on it and talk to the users/domain experts until you are confident you truly understand your task. Depending on the business domain, this isn't always easy, especially in the beginning. But as time passes and you gain more experience you'll be able to craft good software for that particular domain.

Most project difficulties I've experienced were caused by a lack of understanding for the business domain or the ability to capture it in solid requirements.

Further, really great software can only be created when the business domain is fully understood. You needn't know everything, but you'll need fundamental knowledge.

share|improve this answer
    
Sounds like it's a case of asking more questions, then. Thanks! –  AndyBursh Jul 22 '11 at 9:20

I agree with @Falcon, it sounds like what you lack in is not as much business skills as knowledge of the business domain. Business skills are fairly general, while knowledge of the business domain comes with experience and, yes, asking specific questions. Both are useful, but they are very much distinct from one another.

If you are tasked with providing software solutions for a common field of business, you may want to look around for resources to learn more about that particular field.

A degree in software engineering can certainly be good to have, but I doubt it's going to give you much exposure to either business skills, or specific business domain skills.

You may also want to talk to your boss; perhaps there are training classes you can attend that will give you a better understanding of the problems that the software you are writing is supposed to solve? Focus on how such training will help you provide better solutions to the problems you are tasked with (enabling you to provide more business value to your employer).

share|improve this answer

It mostly comes with experience, but you need to ask questions about the details until you understand what's going on. It's very important in making good software to understand the business details that you're trying to implement, otherwise you'll make bad assumptions and have to change it later.

share|improve this answer

Sorry to say it but you probably need to have at least some academic study of business to really take the next step. I did the first half of an MBA & it really helped.

share|improve this answer
    
Sounds a bit extreme for a programmer - especially if you then get a job programming embedded controllers for factory robots, for instance, which certainly involves a lot of domain knowledge, but probably doesn't involve much knowledge of business. –  Steve314 Jul 22 '11 at 10:37
1  
Very extreme for an embedded systems developer; he didn't say he was though and was asking the question. If you're studying for a degree you can often choose a few units and I'm suggesting he does that - pick a couple of business units especially an accounting one so he gets a feel for business. It also helps if you plan to do contracting or start your own company... –  mcottle Jul 22 '11 at 13:08
    
@mcottle, accounting is a waste of time. It does not give you any direction as to what motivates people in business, how to make decisions or what the best course of action is. Economics is a much better use of time. –  sixtyfootersdude Jul 22 '11 at 14:47
    
I wrote business systems for about 15 years before moving into management and I found having the basic accounting vocabulary to be a very fundamental key to being able to have a dialog with business. Maybe your experience is different. If you want a superficial understanding by all means use Google, if you want to make a career of writing business systems you need to study business as well as computing. –  mcottle Jul 23 '11 at 1:52

I have two recommendations for you.

Recommendation One

While doing my Computer Science degree I also did a business minor. For the most part business degrees are made up of trade type skills. Some examples would be:

  • accounting
  • human resources
  • finance

For the most part in these classes there is very little theory. The classes primarily teach you things like how to be an accountant. It is useful to have some accounting skills however I would argue that having accounting skills does not help to understand how business works.

The most important class I took during my business minor was actually Micro Economics. It explains how our economy works and why rational people do things.

Recommendation Two

Read Joel Spolsky. He has an awesome website here:

http://www.joelonsoftware.com/

Start by reading the top ten list on the right side bar.

Joel discusses business (well actually micro economics) from a software perspective. Unlike most micro economic books Joel is very entertaining and fun to read. (I just wish that I hadn't finished reading his blog...)

You can read Joel for free online or you can grab a copy of his book to read on the beach.

enter image description here

Bonus (fun) Recommendation

I just finished reading Freakonomics. It applies economic theories to some interesting situations. It probably won't help to give you a great understanding of economics however it is a interesting read and has chapters like:

  • Information control as applied to the Ku Klux Klan and real-estate agents
  • The economics of drug dealing, including the surprisingly low earnings and abject working conditions of crack cocaine dealers

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.