
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 |
| 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:
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: |
Bibliography
Links |
|
| 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 |