<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox where print preview displays the noscript content */
noscript {display:none;}
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

Also see AdvancedOptions
Working as XML consultant and trainer, I wanted to provide a very compact (about 120 pages) introduction and overview book to all these XML technologies gathering around in our daily work, magazines etc.
I hope it is useful to all "hardcore techie" people who do not have the time to read tons of pages before getting hands on a technology - that's the way I had to be most of the time.

[<img[XML kompakt|xml_kompakt_reduced.jpg]]

//Table of Contents://
# XML introduction, application areas, history, ~W3C
# XML documents (elements, attributes, prolog, XML declaration, character sets, processing instructions, comments, CDATA etc.)
# XML namespaces
# XML schema
# XML processor ~APIs (SAX, DOM)
# XML addressing and selection (~XPath, ~XQuery)
# XML presentation and transformation (CSS, XSLT, ~XSL-FO)
# XML linking (~XLink, ~XPointer)
# Complementing XML standards (~XBase, ~XInclude, XML Fragment Interchange, XML Information Set)
# Short overview of XML applications (web and multimedia, e-commerce, security, web services, science)
To be done ...
Projects can be a tremendous area of entrepreneurship, professional and personal development, learning, personal and economical success or horrible death-marches frustrating everyone involved, burning tons of money - and everything in between.
The project manager role for this reason is a very responsible one, both in respect of economics and ethics.
During the last 15 years I have been part of various IT projects in several positions.
The "handcraft" of project management (called "body-of-knowledge" by e.g. the PMI - Project Management Institute) often was missing, leading to project or sub-project problems or complete failure.
A good project manager can even compensate team and upper management weaknesses to a certain degree.
In contrary a bad one can produce problems even with a good team and upper management in place.
Unexperienced project managers are often very nervous and try to allocate as much budget as possible and also do spend it because they think it is a good way to minimize their risks (sometimes it is the contrary). 
Given these observations it is strange how often important projects with huge budgets are led by unexperienced project managers - people often experienced in other areas, maybe domain experts but unaware of all the dos and donts of project management.
Companies tend to employ too few project managers, maybe because their salaries are a little higher and there could be times without enough projects to fully load all of them (this is never the fact because in each IT Shop there is an endless need of organizational tasks).
External sourcing can be a solution to this problem, in my eyes it is much better to have a good external project manager than an unexperienced internal one.
An external project manager will suffer from missing relationships, lack of knowledge of company culture and problem persons.
This lack of integration can be softened by an internal resource accompanying him (and being developed during the project period).

If you are new to software / IT project management and if you are responsible for an IT project the first time, I recommend for example the book  "Software Project Survival Guide" by Steve ~McConnell (he has written a lot more, see [[Publications]]).
Some (IT) project managers tell you that (IT) project management is something you can only learn by experience (which for you means trial and error) and from watching experienced others.
My opinion is that for starting with (IT) project management you should prepare yourself as broadly as possible by reading, talking and searching the internet for experience. 
It is not only you who will suffer from a poor PM job but also at least your customers and your team, some partners etc. 
Still there is a lot you will have to learn by long-year experience. 
But you can do a good job without such experience too - but you surely will not feel as relaxed as an experienced project manager and your risk may be much higher.

If environment is suitable, I prefer to use software processes which center people not process. That is why I signed the "Agile Manifesto".
But often environment is not suitable (culture, many different parties, embedded software / hardware projects, other established organizational process models, project size too large etc.).
In these cases I recommend to take whatever process is already installed or fits the situation. Most important for project success is in my eyes not the process methodology but people, a highly skilled and motivated project team steered by an equally highly skilled and motivated organization and management team which is able to seed and keep alive a driving project spirit.
All these basic resources are then influenced by the chosen project process / methodology. 

Every project has a different environment and scope, so it is very hard to give general advice.
At least the following things in my eyes can be recommended for every IT project:

* identify and integrate all your projects stakeholders
* do the best scope analysis possible, everything starts from there
* do a very good project communication management job
* think a lot about project rollout into production, plan, train, communicate rollout early and thoroughly
* hire the best team you can get: business analysts, requirement engineers, developers, system architects, quality managers, project managers, database experts etc. you can get; each single person will be more expensive, but you will need much viewer staff which will build higher quality software, which interfaces much more efficiently and the overhead to manage your staff also decreases a lot.
* if possible, take an existing team (be aware of "forming, storming, norming, performing" which takes some time for every freshly assembled team)
* Build small teams up to 7 persons at most; each team interfacing in defined ways / processes / contracts with others.
* Let your teams swear that they do not only analyze / architect / code the "good case" but also take in mind and do something for the "bad cases" (missing input, no connection, record not found etc.).
* Do architecture and code reviews of modules and sub-systems (made or bought)
* Source (dont build) components which are not in the focus of your "core competence".
* Think of the future operation already in the beginning: how should the product be operated, how its implemented business processes be measured, what if it will have twice or three times the today amount of customers, which components / modules might break down in which ways and situations etc.?
* Think about going into production early with a "pilote" - start with a few well known customers; the "pilote" in production will mature like a small child which suffers from some deseases, gets more imune, grows up ...
* quality assurance / testing is not a job which requires no skills at all - this team has to be analytic, systematic and working-hard
|1/2007 - today |[[TeamBank AG, Nuernberg|http://www.teambank.de/]] |Head of department Internet / Intranet development, IT quality management |
|4/2005 - 12/2006 |[[norisbank AG, Nuernberg|http://www.norisbank.de/]] |Head of department Internet / Intranet development, IT quality management / production support easyCredit software platform (ITIL concerns: incident / problem / change / release / availability / continuity / financial management) |
|12/2003 - 3/2005 |[[norisbank AG, Nuernberg|http://www.norisbank.de/]] |Head of development Internet, Intranet and self-service systems (easyCredit, online banking, peripheral back-office systems, EAI systems, internal and external web sites) |
|2002 - 2003 |3SOFT ~GmbH, Erlangen<br>(merged to [[Elektrobit|http://www.elektrobit.de/]]) |Project manager and system architect for embedded system projects (Java, C, C++) |
|2000 - 2002 |Branch manager MATHEMA AG central office, Erlangen<br>(today: [[MATHEMA Software GmbH|http://www.mathema.de/]]) |Project and architecture supervisions, technical risk management, effort estimations, lead for central branch office |
|1999 - 2000 |Manager of development and project manager BEANS AG, Starnberg<br>(closed) |Java E-commerce projects, development of commercial standard product (E-commerce framework) |
|1995 - 1999 |[[MATHEMA Software GmbH, Erlangen|http://www.mathema.de/]] |Consulting, project lead, software development and training (Java, OO, CORBA, XML) |
|1993 - 1995 |[[IGZ (Innovations and Founders Center), Erlangen|http://www.igz.de/]] |Project support, public relations |
|1990 - 1993 |Entrepreneur<br>(~GbR, up to three persons, mostly students) |Software development, training, system assembly and administration |
|Studies |Dipl.-Inf. (Univ.) computer science,<br>minor economics,<br>~Friedrich-Alexander University<br>~Erlangen-Nuernberg, Germany |[img[image of me|thilo_rottach_cropped_50percent.jpg]] |
I only comment books I recommend. Sometimes my comment may be German. I divided this list into //IT books// and //Others//.

!! IT Books

|"Project Management Body of Knowledge" (PMBoK) |The PMI (Project Management Institute) standard material. Like other standard documentations not very good to read but illustrating the complete point of view of PMI regarding the role of a PMP. Should be read addtionally to e.g. "PMP Exam Prep" (see below). |
|"PMP Exam Prep"<br>Rita Mulcahy |The most often used PMP (Project Management Professional Certificate by Project Management Institute, PMI) preparation guide, very useful, should be possible to pass the examination after having worked through this book and having some experience as project team member. |
|"Code Complete"<br>Steve ~McConnell |This book (and me) regards software engineering as a craftsmanship whose basics one has to be aware before jumping into the first project. This book is the perfect overview on the whole bunch of activities a software engineer in most cases has to perform: requirement gathering, project planning, designing, coding, testing, integrating and team working |
|"Software Project Survival Guide"<br>Steve ~McConnell |Read this book or an equivalent one before jumping into your first project as project manager (original words: "how to be sure your first important project isn't your last"). It is not a promotion for some special process but describes common sense in project work. |
|"Agile Software Development"<br>Alistair Cockburn |A very good overview on agile processes and the ideology behind. In my opinion Agile Processes surely do not fit any project but often they are more appropriate to a project than the "traditional software engineering approaches". At least if applyable, they are a lot more fun to the participants. |
|"Concurrent Programming in Java"<br>Doug Lea |If you are new to thread programming (you do not know Windows or POSIX threads) in my opinion you should not start of with Java threads without reading a good book on this topic. Java seems to be very easy (despite of this most projects fail in Java too) and thread programming in Java seems to be very straight forward - but in fact I did not see much Java thread code which was free of deeply hidden faults which will appear one day. |
|"C++ ENTPACKT"<br>Herbert Schildt |All you need to know to start of with C and C++. Includes a complete overview of the standard C function library and the standard C++/STL class library. Very comprimated, explained as simple as possible. When you have finished this book all you are missing is the ~OS-specific API of some Windows or Unix platform. |
|"Refactoring"<br>Martin Fowler |Subtitle: "Improving the design of existing code!" - Refactoring means the application of patterns to turn code with "bad smells" (much of the code in large projects which exists for a long time) into well-designed, readable and reusable code. A must read for every earnest software developer. Especially useful for novices. |
|"Patterns in Java, Vol. 1"<br>Mark Grand |For novices I recommend this one over the famous ~GoF (~Gang-of-Four) patterns book because it is written in easy Java and less academic - thus this book can be scanned in very short time. Pattern purists and perfectionists hate it because not all implementation alternatives, known consequences etc. are contained, there are typos and the example code is somewhat incomplete in several cases. Because of these critics the newest edition contains a lot of corrections and you should look only for this one. |
|"Unix Network Programming, Vol. 1 - Networking ~APIs"<br>W. Richard Stevens |If you know network programming under Unix you should have no problems with other platforms (Windows, Java). This book mentions everything: socket(), bind(), connect(), listen(), accept(), select(), poll(), ioctl() etc. Together these functions make up an interface often called "Berkley Sockets Library". Moreover most of these functions have made it into a POSIX standard. If you think, you have any deficencies in network programming, read it - most of us do not know how to connect, listen, bind and close a socket or handle TCP streams and UDP packets properly. |
|"Unix Network Programming, Vol. 2 - Interprocess Communication"<br>W. Richard Stevens |Inter Process Communication (IPC) should be well-known to anyone who studied computer science and as these mechanisms are so central to most software systems even to anyone who did not. Signal handling, pipes, parent and child processes, threads, shared memory, semaphores, condition variables, OS message queues etc. are explained with a lot of examples. |
|"TCP/IP Illustrated, Vol. 1 - The Protocols"<br>W. Richard Stevens |Most of us have to deal with IP/TCP/UDP/ICMP and its routing sometimes. If everything works fine, IP is easy to explain and easy to handle. Unfortunately seldomly there are timeouts, connection and routing problems, lost packets etc. This book explains with many examples and tool tips how to verify and debug your IP applications. The best book on IP protocols I know. Useful for Administrators and Developers. |

!! Others

|"Winning"<br>Jack Welch | People working in the management team of big companies have a different perspective on things than people working in deeper hierarchy layers (and they must have, every layer has its focus and duties). If you only seldomly get into contact with these managers (like me), here you can learn a lot about the things they have to deal with and the way they might think. A lot of Mr. Welch's management principles are introduced and you can chose if you like to adopt them or not. |
|"Speed Reading"<br>Tony Buzan |Beschreibt Lesetechniken, die "Knowledge Workers" gut gebrauchen können. Man liest nicht schneller, wenn man dieses Buch gelesen hat, sondern die vorgestellten Techniken müssen eingeübt werden. Damit fängt man dann am besten gleich beim nächsten Buch / der nächsten Fachzeitschrift etc. an. Ich wende Speed Reading Techniken an, wenn ich Gedanken / Informationen / Theorien im Ganzen begreifen will (oder ganz einfach nicht mehr Zeit habe). Einzelne Details kann ich bei höheren Lesegeschwindigkeiten (gemessen wird in wpm - words per minute) nicht komplett durchdenken, erspüre aber genug über deren Charakter, um bei Bedarf in der Arbeitspraxis darauf zurück zu kommen. Ebenfalls problematisch erscheint mir die Anwendung auf Lesestoff, der v.a. inspirierend will - hierzu braucht man eine geistige Restkapazität, die beim normal schnellen Lesen noch im Hintergrund vorhanden ist. Dann hat man ab und an einen ~Aha-Effekt, bildet sich eine eigene Meinung oder reliert schon vorhandenes Wissen zu dem neu erfassten. Wer sehr schnell liest, muss hier bewusst ab und zu inne halten, um die selben Effekte zu erreichen. |
|"De Bonos Neue Denkschule"<br>Edward de Bono |Die meisten ahnen, das Intelligenz nur zu einem Teil unveränderbar ist. Dieses Buch stellt Techniken vor, die helfen, gründlicher, unvoreingenommener, kreativer, schneller, multi-dimensionaler, risiko-bewusster zu denken, zu memorieren etc. D.h. es hilft einem, "die ~Gehirn-PS auf die Strasse zu bringen". |
|"Einfach managen" |Ein Plädoyer für die Einfachheit (im Berufsleben), das ich voll und ganz unterstütze. Wie so viele Managementbücher im grunde banal aber dennoch wichtig, um bewusst einfache und fokusierte Systeme zu erschaffen wo man nur kann. Gegenbeispiele meiner Meinung nach: das dt. Steuersystem, Sozialsystem, Universitätssystem usw. Sehr plastisch und hilfreich fand ich eine ~Flaschenhals-Metapher zum Thema Projektmanagement (Führungskompetenz des Projektmanagements und Organisation des Projekts sind der Flaschenhals, der den Output der eingesetzten Ressourcen/Input bremst). |
|Life Leadership<br>Lothar J. Seiwert |Das meiste hat man schon gewusst, wird aber während des Lesens wieder darauf gestossen: es gibt ausser dem Lebensbereich Beruf noch andere (Beziehungen, Sinn und Gesundheit), die mit dem Beruf in Einklang gebracht werden müssen. Wie das gelingt und warum es manchmal nicht gelingt, wird durch verschiedene Thesen vermittelt. 80% des Inhalts hatte ich schon vorher so in meinem Kopf, war mir aber nicht bewusst, dass ein anerkannter "Erfolgstrainer" empfiehlt, so zu handeln. Die für mich neuen 20% bedeuten angewandt auf etwas so bedeutendes wie das eigene Leben natürlich enormes Verbesserungspotenzial. |
<FORM ACTION="http://www.noris.net/cgi-bin/tools/formmail" METHOD="POST"> 
<INPUT TYPE="HIDDEN" NAME="_to" VALUE="thilo.rottach.1@thilo-rottach.de"></INPUT>
<INPUT TYPE="HIDDEN" NAME="_subject" VALUE="Comment on www.thilo-rottach.de"></INPUT> 
<INPUT TYPE="HIDDEN" NAME="_redirect" VALUE="http://www.thilo-rottach.de/"></INPUT>
Your email adress:<br>
<INPUT NAME="sending_email" SIZE="80" VALUE=""></INPUT>
Your text:<br>
<TEXTAREA name="mail_text" rows="20" cols="80"></TEXTAREA>
<INPUT type="submit" value="Send">
<INPUT type="reset">
The following represents my personal experience and attitude formed in about 15 years IT life.
You may agree or disagree with me about certain topics, in either way my statements will make you think about your own professional experience and attitude.

!! Organization and Attitude of "IT Shops"

Technical people working in IT departments are confronted with constantly evolving and sometimes vague project and service demands imposed by their business counterparts.
Given this exposure, depending on the culture of an IT shop, its management influences and steering,  a certain "IT psychogram" is created.
This coexistance could make IT staff "think business", trying to talk, think and explain as their business customers do, organizing IT shops with clear and few interfaces to their business customers, trying to serve business customers as far and fast as possible.
The other extreme would be some loosely coupled IT teams, offering no clear interface and services to their business customers at all, talking, explaining and thinking IT slang, trying to block stressful projects and avoiding contact to this ever demanding species of business people.
I think most IT staff has to be directed and trained towards more customer-orientation. If this is not done, often there is a growing gap opening between modern IT management staff (nowadays very business oriented) and the operative IT workers (sometimes not mature enough for organizational methodologies like ITIL, outtasking and outsourcing).

[[About IT Customer Orientation]]

!! IT Project Management

I am currently preparing my PMP examination because what I found in the PMI ~PMBoK (Project Management Institute, Project Management Body of Knowledge) and the related certification scheme expressed a lot of my opinions about the different topics a good project manager has to adress while initiating, planning, executing, transitioning and finishing a project.
IT profession depends to a considerable part on IT projects and IT projects could profit a lot from project managers being aware of all project management "knowledge areas, process groups and processes" and their best practices.
I chosed to follow the PMI path in favor of IPMA or other standards because PMI / ~PMBoK seemed to be the most wide-spread standard.

[[About IT Project Management]]
This site provides some insight into my professional life, knowledge, interests and projects.
I chosed to maintain it mainly in English language in order to communicate also with my international acquaintances.
//click: open/close//

!![[About Me]]
!![["XML kompakt"]]
!![[IT Lessons Learned]]
!![[Book Recommendations]]
|Further ideas ... |"Be the first to know! Real-time event stream processing in production systems"<br>"The unknown creature: batch-processing in ~J2EE systems"<br>"Mind the gap! Successful coexistance of ~J2EE applications and databases |
|Software Process Improvement 2008 , Marcus Evans, Frankfurt |~Time-to-Market, Quality and Performance  - ~TeamBank IT ~Product-Lifecycle-Model |[[Powerpoint|Vortrag_TeamBank_PLM_SPI_2008-06-04.ppt]] |
|Testing & Finance 2008, Frankfurt |Optimierungsberichte Test/~QM-Center |[[Powerpoint|2008-06-06_Vortrag_TeamBank_Testing_and_Finance_2008-06-03.ppt]] |
|MATHEMA Campus 2008, Erlangen |Testing easyCredit |[[Powerpoint|TestingEasyCredit_MATHEMA_2008-04-11.ppt]] |
|FSLC 2007 |Open Source Development and Running at ~TeamBank AG |[[Powerpoint|FSLC_2007-04-26.ppt]] |
|JBOSS World Berlin, 2006 |Downstream Life - Living successful with the easyCredit system! |[[Powerpoint|DownstreamLifeWithEasyCreditApplication_2006-11-12.ppt]] |
|Spektrum Akademischer Verlag, 2002 |XML kompakt |[[Overview and cover|"XML kompakt"]] |
|Conference on Java, Apache and XML (JAX) 2002 |~J2EE Enterprise Application Integration |[[Powerpoint|J2EE_EAI_JAX.ppt]] |
|IIR EAI Forum 2002 |~J2EE Enterprise Application Integration |[[Powerpoint|J2EE_EAI_short.ppt]] |
|Conference on Java, Apache and XML (JAX) 2001 |~J2EE Projekterfahrungen (~J2EE Project Experiences) |[[Powerpoint|J2EE_project_experience.ppt]] |
|NOKIA WAP Roadshow 2001 |~WAP-Applikationsentwicklung mit der ~J2EE (WAP Application Development with ~J2EE) |(outdated) |
|~JavaSpektrum 10/99 |Deployment von EJB Applikationen (Deployment of EJB Applications) |(outdated) |
(driven by TiddlyWiki)
Home Page of Thilo Rottach
|[[Intro]] |Short introduction to this site |
|[[About Me]] |Short CV and image |
|[[Publications]] |Articles and conference talks |
|[["XML kompakt"]] |Motivation and content of my XML compendium |
|[[IT Lessons Learned]] |My manifesto about IT project management and organizing IT shops |
|[[Book Recommendations]] |Some books I can recommend |
|[[Sitemap]] |This overview table |
|[[Contact]] |Leave me a mail |
Date of birth: 01.10.1966
Born in: Nuernberg, Germany
Married with: [[Adriana Rottach]]
Children: 2
Email: [[Contact]]
I based this web site on just one HTML file - a so called TiddlyWiki file (see http://www.tiddlywiki.com/).
A TiddlyWiki keeps all its content in one HTML file which renders itself by ~JavaScript depending on the user actions happening on its active elements (menu, buttons).
This takes the burdon of writing HTML away from me and thus should make me a more frequent editor of my home page.
There are also two disadvantages I accepted by using this standard tool:
first it is more difficult for me to layout the pages or better I am accepting the standard tool layout,
second the standard usage of this TiddlyWiki file may be a little confusing for unexperienced web users.