====== Allgemeines zum Thema Softwareentwicklung ====== **nach \cite{Cockburn2008}** * Softwareentwicklung besteht aus * Handwerk * Disziplinen: Entscheidung, was gebaut werden soll; Personalführung; Modellierung; Design der Außensicht und der internen Struktur; Test der getroffenen Entscheidungen * Können, mit bestimmten Materialien zu arbeiten * lebenslanges Lernen * Anfänger, Fortgeschrittene und Experten gehen an neue Techniken unterschiedlich heran (Shu-Ha-Ri-Wegstufen: Shu: Erlernen einer Technik, Ha: Techniken sammeln, Ri: Techniken erfinden und miteinander kombinieren) * kooperative Spiele * Spielzüge: Erfinden und Kommunizieren * Spielnachlass: saubere Architektur, Tests, Dokumentation, Bereitschaft des Teams, sich von Mitgliedern zu verabschieden und neue aufzunehmen * [[agilesoftwareentwicklung|schlanke Prozesse]] * der Kunde entscheidet, was er will * Lean Manufactoring: große Zwischenlager sind ungünstig. Daher: kleine Arbeitspakete (Inkremente) an nächste Stelle übergeben * (Software-)Ingenieure sollten ausgebildet werden in * Terminologie ihrer Disziplin * Prinzipien und Techniken von Erfindungen und Kommunikation * Grundlagen schlanker Fertigung * Strategien für den Umgang mit dem Arbeitsfluss * Manager sollten ausgebildet werden in * Reduzieren von Arbeitspaketen * Qualität der Kommunikation, Motivation und Gemeinschaftsgeist ihres Teams steigern * Unterstützung des Teams beim Verbessern ihrer Fähigkeiten * Motivation der Mitarbeiter, auch in anderen Bereichen Kompetenzen zu erlangen ===== What makes a good developer? ===== **nach \cite{Wood2009}** * Process: Follow a well defined process like Scrum, XP, or even Waterfall. Just follow any process! Testing should be a big part of the process. * Passion: If you don't love what you do, you will never be good at it. * Experience (language and algorithms): Experience comes with time and by learning new stuff and sharpening your skills. * Initiative: Be active and start new projects or learn something new. * Involvement in the community (blogs, conferences): Speak to other developers about your profession to get new insights. * Communication skills (with business people and in written documentation): You not only have to be able to program but to get your ideas across to other people.