Developer's Topics

Topics for all software developers - the psychology of software development

/dev/topics
Preface If you are a software developer or a project manager who manages software developing, this site is for you. There are a lot of sites which concentrate on the technological aspects of software engineering. We will deal with the working environment, the management, the creative process and other meta-aspects. Our goal is to describe how to improve the quality of the software developing process and how to have more fun creating software. Next chapter

Table of contents

Help needed! We are just at the beginning, and we need your help. If you have ideas, criticism, hints or any other kind of contribution, you're welcome. Please send your comments to this address. We'd also like to hear from you if you have any questions concerning this project. We don't know a lot of other sites which concentrate on these non-technical meta-aspects of programming. May be we overlooked something... it would be nice if you send us a note.
Because this is work in progress, most of the links in the table of contents will not be linked to anything. Sorry. But if it is a link, that chapter exists.
Content first I will start to improve the design of these pages when I have enough content. As you might have noticed, the words "...guide to better projects" has two different meanings: first, it can help you to improve the quality of the project you're working on. Second, it can help you to find a new project (or a new company, or both).  We plan to create a checklist that you can use in an interview on a job to find out if the new company will suit yourself. And if the new project is worth the change.
Why? How and why this idea was born: 

I (Volker) studied psychology at the University of Hamburg. Programming just was my hobby, and I made it my profession, earning my living as a software developer in a small company. You see, some day it was inevitable that I stumbled at another conjunction of psychology and software development than AI or creating a (G)UI. It took just so long because I was very satisfied with the company I'm working for and my own development. Since this has faded, I started asking questions. You know, as long as everything works like expected, you don't ask too many questions. But the very day something goes wrong that changes. This way, you never start too early asking questions...

Confusius, he says:
We don't know who detected the water, but we are sure it weren't fish.

Besides that, it is a field where we haven't gathered much knowledge, have we?

Another motive for this articles is: I want to show to non-programmers what are the specific characterics of the software developing process, because for some people programming is just a boring method for crafting tools. We know that this is far from the truth, but laymen often do not share this point of view.
 

Table of contents Theory: about people
Teamwork Building a team
The team: the center of the software universe
Communication: the essentials
Different people, different needs
Conflicts and other mishaps
Mediation
Rules for teamwork
Building software Creativity
Software as a creative work
Why fun is important
How to be more creative
Brainstorming
Mind mapping
Ceativity and chaos
Environment It isn't all in the gene pool
Why is environment vital?
How the environment influences creativity
Distraction: the one big obstacle
Management PHB's and other managers
Why management can be trivial
When management isn't trivial
What is the task of a program manager?
What is the difference between good and bad management?
Communication skills: the good, the bad and the ugly
Managing your manager
Problem solving Process modelling
From status quo to the desired goal
Aetiology
Decision making
Risk analyses
Controlling the success
When everything fails
Software Design Bad design causes bad programs
Why the design process is crucial
Good programmers are not always good designers
Interfaces: the more, the worse
Open standards
Death March Projects Too little time, to much to do
What is a death march project?
Why are death march projects so common?
How to avoid death march projects
Success and failure
Working for a company Politics
How to choose the right company
Your goals and the company
Improving your work
Lifetime education
Working environments
The Peter principle
What to learn from Dilbert
Open software What a difference a Ray(mond) makes
Self-organization
The Cathedral and the Bizarre
Linux: lessons learned from Linus Torvald
Free beer, free speach (about freedom)
Tools and technology At last, but not at least
Software metrics and behaviour
Entity Relationship
Programming environments
Choose your weapons
Miscellaneous What isn't covered (yet)
Why we create software
A fool with a tool is still a fool
Users and other obstructions
Deterministic and non-deterministic systems
Fun
Words of wisdom
Further readings:
Back to the top Next chapter
Confusius, he says: Show me your table of contents, and I tell you how confused your ideas are
Copyright: Volker Dittmar
Created: 1999-12-18, last modified: 2000-10-26