søndag den 14. august 2011

Working Title: Organisational/Social antipatterns


Introduction


M. Sc. Software engineering - Aalborg University

PhD-wannabe

Employment: 7 years at SSE, 2,5 years piloting software @Trifork


Disclaimer:


1) This is NOT science. It is based on my 10 years of experience as a developer in the Danish IT business.

2) I'm no better. I've done most of the things mentioned here.


Purpose:


Present some ways (not?) to do software engineering and/or to behave in mutipeer-social relationships.


Real purpose:


To get revenge ;-) of all the times I've been hurt, ridiculed or even worse struck on my alpha-male wannabe ego :-)


Agenda

  1. Introduction
  2. Some Org. Anti-patterns
  3. Side-tracks: Programming paradigms vs. human stereotypes (WIP)
  4. Conclusion


Conflict creator aka. Firestarter


Illustration: 1) Overskyet …. lyn …. frisk blå himmel. 2) To elefanter der slås.


Idea: Let the others take the fight, then you can concentrate on the job at hand. OR Clearing the thick air of despair by a nice fight.


(Examples: Predator vs. Alian Predator. long bath...)


References: Alpha male theory? Organisational Elephants crossing [snapler]


----


OLD NEWS!!!: Work harder not smarter

******************************************


Illustration: ?


Idea: Deadline ahead - plan not ok - lets put more people into the project. Or even worse: lets put 1 person from another country, another part of the organization, and with a different language one (mythical) man month before deadline.


Examples: Red weeks in a wellknown big company....


Reference: Mythical Man Month. Cope, study: perfect work week 16 hours


----


More hats, more productivity

*******************************


Illustration: En jonglør der er ved at tabe den 6. bold


Idea: Get more productivity out of smart people by giving them multiple roles.


Examples: A promising young employee is making good progress on a team. Overtime lets make him: Teacher, Part Development knowledge leadership, test manager and lead developer.


References: Men multitasking. Context-switching. Pleasing everybody is pleasing nobody.


----


Everlasting impression

*************************


Idea: Make a negative or positive everlasting impression. Then you will never be forgotten in an organization. Backfire: - Nagging and ridiculed because of funny stories.


Examples: The Fight of the Red Screwdriver. Get really drunk after 14 days on your first ever IT-job, at the company summer party. (Simon Spies)


Relatives: Bad publicity is better than no publicity.


Conclusion: Antipattern? I don't think so, but it is a dangerous strategy that can backfire. OOOPs wait a minute - that is the definition of an antipattern.


----


More deadlines, more productivity:

*************************************


Illustration: Agurk der skærres i tynde skiver.


Idea: Short iterations, short-terms goals, more productivity


Problem: Stress. Employers never able to have a day of non-productivity at work will get stressed out. First experiences with Scrum The big welknown company: Employer citation: "You have to get used being in hurry all the time"


A.k.a: Agility gone bad?


----


Punish Manager

******************


Origination: Team christmas party. Drunk Simon: "When someone makes serious bad things with the codebase they should be physically punished."


Illustration: Video youtube - HMM.


Idea: Have a crumpy old man which knows the product very well punish fresh green developers each time they make the tiniest small mistake.


Problem: Green developers escape the project and/or company and all their nice new University knowledge is not exploited.


Examples: "You just use SVN-update? Man, you must be crazy you will get your sandbox polluted with all the green developers bad code - Use SVN-synchronize",


----


Scapegoat:

*************


Illustration: Nød der bliver til egetræ.


Idea: Lets as a group select one individual in the group who will be the scapegoat. Could be: The slowest coder. This way we can all feel above him and when anythings goes wrong, we can implicitly insinuate that it was his fault.


Problem: Instead of using this talent we misuse it.


Examples: Hi-knowledge consultants meets crumpy old developers.


Solution: After 35 years of living, I know that the following is not entirely true, but I used to believe the following: "Everyone has a talent. The hard part (for some people) is to figure out which talent". A person can't be all bad. If you give her a bit of confidence, she might very slowly evolve into a decent or even invaluable employee. A metaphor: Try treating other people as plants. If you give a plant (sun, varmth, water and attention) it will grow into a nice flower.


----------------------


Create an enemy:

********************


Idea: Lets make a common enemy. The one we are fighting against. This will make good team spirit.


Problem: Backfires when people interact with enemy.


Candidates: Customer. other subcontractor, other division of same organization, other team on the same project.


Examples: "The customer does not understand why the system is not performing well"


-----------------------


Career paths:

***************


Illustration 1): En gruppe kodekvæg der kigger på en mark med forskellige blomster.


Idea: Lets make some career paths to strive for. Then we can make people have titles like Senior Chief Architect or Senior Project Manager. Problem all the american companies have peoples with longer and greater titles! Solution lets upgrade all our employees with a new title. (Remember: not to mention that this upgrade has no money attached :-)


Illustration 2): En gruppe kodekvæg der kigger på en mark med kun een slags blomster.


Idea gone bad: Lets only make a project leader career path.


Problem (idea gone bad): All the bad developers become leaders. Secondary problem: All the good developers leave the company.


-----


Conclusion:


Antipatterns are as valuable as patterns. Because its stories about ideas that seemed like a good thing but could turn out very bad. Like building an eternity machine by digging a very big whole in the earth an putting a tea pot of water above it.





tirsdag den 9. august 2011

Livets mening m.m.

Da jeg var yngre brugte jeg rigtig meget energi på at finde ud af var svaret var på livets store spørgsmål: Hvad er meningen med livet? Dengang var jeg sikker på at der var et entydigt svar på dette spørgsmål for alle mennesker. Nu er jeg omkring halvvejs og livets mening er rykket lidt i baggrunden. Sagt på en anden måde: Meningen med livet er nogenlunde gået op for mig.

Status: 3 dejlige børn, 1 kone, 1 hus, 1 bil, 1 marsvin, 1 job, 1 familie.

Hvad der bekymrer mig i dag er flere ting og på flere niveauer:

I mit eget liv:

- Mit og konens helbred
- Min søns helbred

I Danmark:

- At vi fortsætter ud af en kurs med mindre demokrati, uforståelig fokus på penge og økonomisk vækst som altings mål. Penge er kun papir!

I Verden:

- Overbefolkning
- Krig
- Sult
- Miljø

Mit håb:

I mit eget liv:

- Helbredelse af min kone og min egen Colitis Ulcerosa
- Styr på min søns fremtid.
- Forening af mine skildsmisseramte forældre. Dvs. at de kan kommunikere.

I Danmark:

- At nogle visionære politikere vinder valget. Politikere der er i stand til at brug balanceret menneskelig vækst som mål.

I Verden:

Det driver jo af kliché men:
- Fred, fordragelighed, religiøs forening, færre våben, fokus på miljø, styr på befolkningsvækst, bedre fordeling af verdens resourcer.

fredag den 4. december 2009

Dan North at JAOO 2009 - Adventures of an Agile Architect

Dan North gave his talk: "Adventures of an Agile Architect". Dan is an excellent performer - and one is quite sure to be entertained by his talks. He had very few simple slides but a bunch of interesting stories.

(writers note: This post was originally intended for today.jaoo.dk but I thought I'd start by posting it here as a draft since nobody reads this blog anyway :-) Thanks to Rolf Njor Jensen for co-authoring this post!)

Have a shaman - be a shaman

Every team needs a shaman. A shaman is person who tells stories. So, when someone in the team asks "Why the hell is this code like this?". The Shaman tells the story of this partibular piece of code, its past and how it fits into the rest of the stuff.

Strip away everything you can

When you start to strip away stuff that has no real value in your codebase. You of course will get a simpler system. But another advantages is that other unnecessary stuff pops up and becomes visible.

Use transitional architectures

Developing software is performing structural changes on existing bodies of code, occasionally adding new pieces of code and chipping away old, unnecessary code. If you want a nice loosely coupled architecture with good performance but your current architecture is a big pile of crap. Then it might sometimes be necessary to take one step at a time and for instance start by removing all God classes. An architecture with no God classes then becomes a transitional architecture (or you could say a temporary solution). This architecture does not fully fulfil the goal but is one step towards the wanted solution. It is very important that everyone are aware of the fact that the transitional architecture is not the final solution.

Dan gave another example of a transitional architecture namely to get from the current build system to Ivy. Maven was used as a transitional solution. Maven is this obsessive compulsive friend. When you bring Maven on a date it brings all its friends from all over the internet. The obsessive compulsive disorder has one advantage: Since Maven is very rigid about the placement of different parts of the source less duplicated code is created (since developers discover that the needed code has already been developed before introducing a duplicate solution). After Maven had done its tricks the team was ready to move to Ivy. As Dan put it “When bringing Ivy on a date, Ivy asks if he can bring one of his friend who will clean up the house during the dinner”.

Avoid Standup Stasis

Dan gave a nice demo of how daily standups should not be performed. It is hard to replicate in words so I will try with a strip instead:

The team that Dan started working on as an consultant had stopped doing daily scrums. Dan asked how they used to do it and the team did as the above strip tries to explain – i.e. everybody on the team just reported. No one listened and no one commented on others statuses – Scrum Stasis. The team refused to start doing scrums again so Dan did a clever trick. The next day he said “Well I've just had this fantastic idea: why don't we meet each morning and have a chat about the rest of the day answering the question - how we can have the best today?”. The team thought this was a brilliant idea and this way Dan North reintroduced daily scrums (without using the term).

Finally, here is a list of points and citations that did fit into this post:

  • There is always a reason

  • Ensure deterministic deployment

  • You shouldn't "buy" architecture

  • Nice architects listen, and are not-very-self-important.

  • “Take a pile of crap A, take another (larger) pile of crap B, and make them into a nice lightweight group of services.”

torsdag den 5. november 2009

Hvidt i hvidt

Jeg er træt af ikke at kunne have mine trælofter i fred. Hvorfor skal alt tapes til med intetsigende gipsplader. Hvidt i hvidt se det er flot! Naej, hvor er det intetsigende flot, og se alt det lys det giver. Hvad var der galt med et hjem med lidt farver og lidt karakter? Hvorfor skal alt være så pænt? Det gælder sgu også alle de kedelige nybygger kvarterer, hvor det hele skal være åh så pænt og åh så intetsigende. Når kvinderne har fået deres vilje over hele landets indvendige og udvendige indretning, så skal jeg love Jer for, at så flygter alle mændene og det duer jo ikke så...

Tag os sammen!

Det må være slut! Du danske mand, tag dig sammen! Sig nej til din kone! Bestem selv over hjemmet så det ikke ender med hvidt i hvidt.

tirsdag den 29. september 2009

My JAOO 2009 Master Plan

Below is my master plan - it presents which presentations I'm going to attend this year:

Monday
10:15:


13:30

14:45


OR

Something else

16:15


11:30


14:45
OR

something else

16:15

fredag den 21. august 2009

Sprint Ready tilføjet af hvem?

Jeg kunne ikke dy mig og kommenterede på Version2's artikel om Systematics fantastiske effektivitetsforbedring ved hjælp af SCRUM. http://www.version2.dk/artikel/11838-dansk-software-virksomhed-bag-forbedret-scrum-model

søndag den 9. august 2009

Skanderborg 2009 - av mit hår

Skanderborg 2009 - av mit hår


Konen og jeg var på Skanderborg festival i går og det var rigtig godt. Masser af drikkelse, masser af god musik, masser af smukke og glade mennesker og frem for alt ingen børn at skulle være ansvarlige overfor :-)


Drikkelse


Var med på den guidede tour i år - det kan kraftigt frarådes. Vi fik drinks hele tiden så det var svært at ramme den perfekte brandert (den hvor man kun kan se hegnet og har det sjovt...) - med indtagelse af masser af vand og lækkert mad efter rundturen fik jeg noglunde kontrol over min.


Musik


Musikken ville jeg godt have hørt lidt mere af. Jeg skulle have brugt lidt mere tid på at studere programmet - så havde jeg nok haft nemmere ved at ramme det rigtige. Jeg fik hørt Veto og der blev jeg utrolig glad for mit ørepropper. Ikke fordi musikken var dårlig, men fordi deres tunge basgange fik folks bukser til at flagre.

Sidste år på Skanderborg nød jeg rock trilogien Saybia, Carpark North og Kashmir og selvom jeg er stor Kashmir fan var det faktisk Carpark North, der var den bedste koncertoplevelse sidste år. Det var det også i år! Carpark North var for vilde - veloplagte, velspillende og med 10 års fødselsdag gav de den hele armen. Zididada var også en positiv oplevelse dog kun momentvis.


Jeg føler mig gammel.


Jeg føler mig gammel når jeg tager til Skanderborg festival og snakker med folk på under 25 og betragter dem teenagere. Jeg føler mig gammel når jeg har ondt i håret 3 dage efter at have drukket mig kun halvvejs i hegnet.