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.

Say you had to give a talk to non-programmers who were looking to learn something from software development that they could apply to their own functions.

Question: What practices would you preach?

Assume the jobs involve taking basic technical building blocks and combining them in creative ways to solve user-specific problems.

Example:

I'm a corporate financial analyst. I'd have loved it if a software development person taught me about the following ideas when I was younger:

  1. Orthogonality has helped me think about independent analytical tools that can be reused more easily (vs. huge integrated analytics that break the second one piece of the tool is changed).
  2. Code to an interface, not an implementation has helped me think about defining interfaces to my spreadsheets that aren't as dependent on things like independent cell locations, etc.
  3. Test-driven design has helped me to test my analytics on test cases before I roll them out.
share|improve this question

closed as off topic by Mark Trapp May 18 '11 at 17:35

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

8  
Pretty much every software development practice worth talking about is already derived from something much older. Abstraction? Invented with mathematics. TDD? Engineering. Revision control? Publishing. If anything, it's the software developers who need to take more cues from the rest of the world instead of always thinking that they're special. –  Aaronaught May 13 '11 at 0:37
    
@Aaronaught: I have a friend who was a competent amateur sailor when he started working on a robot, and used his knowledge of sailboat navigation to make his robot do some very impressive things. Inspiration can come from places you wouldn't expect. –  David Thornley May 13 '11 at 13:41
    
totally agree with Aaron. We in the still relatively "immature" soft industry have much to learn from other industries who have been here more than 200 years longer than us .. –  Wildling May 18 '11 at 5:43
    
I'm failing to see how a question about what non-programmers can do is on-topic for a site that's for questions about being a programmer. –  user8 May 18 '11 at 17:08
1  
@Mark I agree. We can't possibly cover every other domain that might somehow benefit from programming practices. We're software development experts, not experts in other domains to the point where we can recommend practices there. –  Anna Lear May 18 '11 at 17:23

9 Answers 9

Version control

People in non-programming disciplines are constantly emailing files and relying on their hard drives as a critical store.

share|improve this answer
1  
Commenters: comments are meant for seeking clarification, not for extended discussion. If you have a solution, leave an answer. If your solution is already posted, please upvote it. If you'd like to discuss this question with others, please use chat. See the FAQ for more information. –  user8 May 18 '11 at 17:06

Agile methodology (mindset + management style really)

Actually this goes for lots of sluggish corporate software development departments too. But I think it's even more endemic in non-programming "knowledge work professions".

For some reason Big Business has it in its head that knowledge workers can be managed by being treated like galley slaves. Autonomy, mastery, purpose + small independent agile teams (eg. Ongoing communication vs orders barked from above in a medieval hierarchy) would be a much better way to go in most types of team-oriented knowledge work. The classic top-down pyramid only works well for purely mechanical unskilled mcjobs.

share|improve this answer
1  
+1 for Agile as a business mindset, and another invisible +1 for your name. –  Brandon Tilley May 12 '11 at 23:34
    
I'm implementing an agile card-wall and iterations for my home organization and home-school. –  Eric Wilson May 13 '11 at 0:16

IMHO the three key to software success are

  • TESTING
  • TESTING, and
  • TESTING

For example, I once had some electricians come to my house and install a hot shower water heater. After an hour they said it was all done and packed their bags. I turned on the water and it was not hot. Turned out they ran wires from the heater but forgot to connect the wires at the other end.

When a mechanic says your car is done, TEST IT. When the painter says the job is finished, CHECK IT. When you leave a hotel room, walk though it and LOOK for things you've left behind.

TESTING!

share|improve this answer
    
+1 andy. Testing to limitless extents is one of the soft industry's own indegenious techniques. Its "our" legacy –  Wildling May 18 '11 at 5:46
    
What about formal methods? Proof your system works the way it should! Testing might not look under the couch for your car keys. –  Dibbeke May 18 '11 at 6:40

Stepwise Refinement - It might be known today as refactoring, but I remember it being taught as stepwise refinement. This basically asks you to continually look at the solution you have put in place and see if it can be tweaked or modified to run better or more efficiently. By continually seeking improvement you strive toward excellence. This can become very infectious.

share|improve this answer
1  
Hmm... Could this be interpreted to mean 'micromanagement'? –  Jim G. May 13 '11 at 4:00
    
@Jim G.: It would be hard to interpret it as micromanagement. It's more like some older industrial practices like suggestion boxes and quality circles. –  David Thornley May 13 '11 at 13:43
    
@Jim - The intent was to instill self analasys and self improvement. –  Cape Cod Gunny May 13 '11 at 18:13
    
@David - I was trying to take the concept of code and algorithm review, remove the techno speak and express the concept so that non-programmers could identify with the idea. –  Cape Cod Gunny May 13 '11 at 18:16
    
+1 for mentioning the "baby steps" approach. –  Jay Elston May 18 '11 at 4:48

Pair Programming

Because 2 heads and 4 eyes are better than 1 and 2 respectively. This will improve the quality of outputs and save time.

share|improve this answer
    
No, no, no, you miss the point of the world economy these days. It's about putting a single worker to do the work of two, and not the other way around. Otherwise mega profits will be in jeopardy. We can't have that, can we? –  user8685 May 18 '11 at 7:39
    
@Developer Art: in my opinion, we can, and more companies realize this now. This is very applicable to complex tasks that require full attention to details. Profits will still be in jeopardy (probably worse than that) if you have a single worker doing the tasks of 2 with poor quality. If your company is doing the opposite, chances are you'll have your workers burned out in the long run. –  Joset May 18 '11 at 8:41

Making your decisions based also on rational thought, as opposed to making them only based on gut feelings.

share|improve this answer

Change Management (this is related to the already-mentioned version control, but implies that there is some management over whether a change is made, who needs to know about the change, etc.).

Data Driven Decision Making (not that we use this practice enough ourselves...)

The use of "Patterns" (Design and Architecture).

Separation of Concerns (this is not actually a practice, but a philosophy).

The use of quality attributes in helping to set priorities.

share|improve this answer

Getting Results the Agile Way has various practices taken from software development that can be applied in a more general context that would be my suggestion for a starting point.

share|improve this answer

Stand-up meetings come to mind. My wife works for a company that is crippling its productivity by having nothing but meetings all day.

I sent her some write ups about stand up meetings (in the context of agile) and it seems to have had a positive effect in her group at least.

share|improve this answer

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