Category Archives: Posts

boat going fast

Twenty Years of eXtreme Programming: Interview

I met eXtreme Programming(XP) in 2001, it was love at first sight. That time I had around ten years of developer experience and I finally something that not only goes beyond coding, but gives remarkably timeless advice.

I was reading the book “XP installed”. How thrilling it was to find real usable methods! Urgent medicament for the partially ill software industry. A machete in the jungle of innovative and conflicting ideas.

I was looking for books about programming and this one was said to be practical. I’ve read it online first and then I ordered it on paper and read it again. That time I had like ten years of development experience and it felt like the writers had at least 20-30 years each, way beyond everything I’ve seen. I couldn’t agree more on certain ponts

  • the one who programs it, estimates it
  • eXtreme Programing “circle of life” 1 Define story -> 2 Estimate -> 3 Choose value -> 4 Deliver
  • well defined user stories

extreme programming core cycle

I hereby thank the authors: Ron Jeffries, Ann Anderson, Chet Hendrickson and of course. May they live happily as long as they want together with the first creator of eXtreme Programming, Kent Beck.

Kent Beck 2015 Lean IT summit
Kent Beck 2015 Lean IT summit

Basics

There is a gradient between two extremes:

  1. a project that has been done millions of times (for example moving an apartment/office)
  2. something that has been never done before (landing on Pluto, creating a new type of submarine, or just creating a computer program with specific new needs)

If your project is near the former, then you don’t need eXtreme Programming(XP), you can stop reading now… If however your challenge is something that was seldom – if ever – done before, it’s worth considering Agile Methodologies like eXtreme Programming as a way of completing it.

Practically all major internet companies like Facebook, Google, Amazon use eXtreme Programming tools each and every day: TDD, fast iterations, user stories, … .

How do you know you need these tools?

You are practially drowning in maintenance and support work and your clients are more and more dissatisfied with it. Developers are leaving, it is difficult to find anyone who can or wants to handle your technical debt for a fair price. You can not hold the speed of the competition.

Your boat looks like this:boat sinking

Instead of this:speedy military boat

Practically all developers know about SCRUM, but very few know about eXtreme Programming. So to change this I was thinking of an article to commemorate the twentieth anniversary. (Kent Beck says XP eXtreme Programming started in March 1996, you can check the video below. )

Interview with Csaba Szegedi Evosoft Hungary

On a Budapest Agile Meetup I met Csaba Szegedi, who has years of XP experience and he kindly agreed to an interview.

 As far as I know you have years of XP developer experience also with pair programming.  What were your main sources of information regarding XP?
www.extremeprogramming.org. An XP coaching cooperation with Pivotal in London. I’ve read many articles about it.

Let’s start at the beginning, do newcomers to your company know XP?
Usually not.

Would it be an advantage if newcomers would know XP?
Yes, even better if they would have XP work experience.

Newcomers know SCRUM I  guess.
Mostly yes.

Are XP and SCRUM enemies?
No, they work well together.

What are your perceptions of these concepts?
XP is good for Quality
SCRUM for the clear roles and ceremonies
KANBAN for agility (fast reaction times)

Can a project with fixed scope and time limit be agile?
No.

What are the advantages of XP in your company?
Knowledge sharing: with pair programming and changing pairs there are always more than two devs having expert knowledge about a subject.  We have microservices architecture. So a certain team can be expert in a service, but everyone can change it. The experts may review it afterwards.

We have over 80% unit and intergration test coverage and this gives us stability.

Less bugs are introduced into the system. We have little technical debt, low maintenance costs.

Customer pays more in the beginning because two pair programmers deliver less than 200% code, but maintenance work will be much less and easier.

After years of development it is still easy to add new features, our system stayed flexible.

What are the disadvantages of XP?
Short term it can cost time and thus money. If you need to train people they will be less efficient in the beginning.

People don’t know it and they have to get out of their comfort zone to do pair programming for example. Developers are conditioned to work alone and pair programming goes straight aganst this. As engineers we have many introverts so we need communication skills.

With pair programming teams should be ready at the same point in time. Latecomers (after 11:00 for exmple) often cannot start with a pair. Pairs depend on each other during their cooperation.

muppets pair programming

What complementary skills would you advise for extreme programming development?
Soft skills, assertive communication.

What issues did you have while using eXtreme Programming?
We didn’t have enough ownership earlier. We had an official architecture team that interfered with developer teams. Now it got better we have more freedom now.

Earlier we didn’t have domain knowledge. Our product owner was in Germany. PO was not in the team. This caused some waste. (Picture: I go find up and find out what they need and the rest of U start coding!)

aaeaaqaaaaaaaairaaaajgzknzbkn2njlty5zgytndlhys04oge0lwzjnwnlzwi1ndk5yq1

To progress effectively we needed the necessary people on board. Luckily our managers are good partners in this regard.

How do you handle if a customer “always present” starts to micromanage every detail?
We let him sit in the retro part – meeting for reflection after a sprint – and tell him how we feel about this.

Do you measure return on investment in eXtreme Programming?
We do not yet measure ROI on XP. Our project alway had XP, so we don’t know how much it would have cost without it. We have some legacy services written without agile methods and it is quantifiable that these services have higher overall defect/bug count. This we do measure.

Does eXtreme Programming generate more or less code?
XP generates less code. Because of refactoring and pair programming the code will be nicer and nicer.

Can you tell me some more about your pair programming practices, maybe even technical details?
One PC, two monitors, keyboards and mouse. We advise daily pair changes, but sometimes pairs stay together for a feature (one or two weeks).

What would you advise to XP starters?
Start with a coach or someone with XP experience. You will get performing much sooner. For example PIVOTAL coaching was very useful. Read extremeprogramming.org and follow it.

How do you manage support and DEVOPS with these methods?
Unfortunately an urgent error can break the SCRUM sprint, but this happens very rarely.

Our teams take responsibility for the support and maintenance of our software (concept called DEVOPS) and this is also included in the general process. Generally you write readable and good quality code because you never know when you meet it next time.

What additional guidance would you need regading this subject?
How to manage more than 30 people?

Pair programming schooling? What are the good pairings? (Senior – junior, with our without domain knowledge, …) How to get pairs working well?

Going beyond eXtreme Programming how can we improve?
We can advance in feature coverage.

Behaviour Driven Development is a useful concept for us, we started implementing with it. (gerkin, cucumber)

Csaba, thank you for these answers!
You are welcome!


End of Interview

I’ve found a great session from Kent Beck about the birth of eXtreme Programming:

Getting Things Done: David Allen in Budapest

Yesterday – 4.12.2014 – we had an amazing presentation from David Allen, author of  Getting Things Done (GTD). He had drunk a bit of our famous Hungarian white wine and said, that he would be direct. Indeed he was 🙂

UPDATE DEC 2014:
He also had a keynote on STRECH 2014 conference, titled “The Art of Stress-Free Productivity”. You can watch it here.

UPDATE JAN 2015:
There is an excellent course available on this subject on LYNDA.COM.

My primary takeaways

  1. As soon we leave the room, his speech will be “prehistoric”. (Apparently not, I am still writing about it 😉 However this may be true for many very wise speakers.) This statement in itself represents for me decades of teaching experience.
  2. Life will hit us with a fire hose every day. Our management skills are really tested in special situations, like a move, marriage or divorce. In critical situations, we usually have no chance to act in an appropriate way, unless our life is well organized.
  3. If you care about the newest and loudest, you are in a dark tunnel. There is no light at the end of that tunnel.
Tunnel of newest and loudest
Tunnel of newest and loudest (background tunnel picture is from Vladimir Agafonkin)

David spoke about the immense clarity that awaits us after writing down everything from our heads. Our heads are to have ideas, not to hold them. You also cannot do it halfway: either you hold your stuff in your head – humanly impossible – or write everything down. If you have only some stuff left in your mind, it will bog you down. Unload your mind.

“Share anything of value you’ve gleaned from this with someone
else. (It’s the fastest way to learn.)” says the book. Luckily we have a GTD meetup group in Budapest, so everyone, who wants to organize his/her life properly is kindly invited.

GTD workflow
GTD workflow. I got this picture from zendone.com (http://help.zendone.com/images/gtd-workflow.jpg)

 

How to minimize JavaScript development costs with SAP OpenUI5

Each line of code costs money. Not only writing code, but also maintaining it later on. As SAP turned toward the OpenUI5 environment a huge need emerges for JavaScript skills. In this article I discuss aspects of JavaScript programming in SAP and my subjective view on how to optimize this process. It is aimed for SAP developers and project managers.

Costs

In his 1981 book Barry W. Boehm stated that an average of 60% or more of software costs is maintenance. This experience is still valid as discussed in “Frequently Forgotten Fundamental Facts about Software Engineering” by Robert L. Glass (an article in IEEE Software May/June 2001).

I would argue that maintenance costs and risks even increase while using a relative new and changing development environment like JavaScript or responsive design. So before starting costly projects it’s worth looking around for solutions.

Apps

Meanwhile “SAP’s OpenUI5 JavaScript Library is Surprisingly Well Done”, there is an ever growing need for responsive apps that can run on phones, tablets and on the desktop as well. For example business would like to have access to service orders on phones and tablets. How can one deliver such apps without sacrificing hundreds of hours of development time?

ABAP versus JavaScript

Let me give a very short comparison of ABAP and JavaScript:

Of course JavaScript brings a lot of new cross-platform functionality and new paradigms. It runs on billions of computers and many companies pour millions of dollars into JS development. I don’t mean that it is not a usable tool; however I have some issues regarding some aspects of it.

JavaScript Technical Issues

Some programming details are mentioned here, you can skip this paragraph if you don’t have interest.
Who coded a JS app more than a few hundred lines long might know this line ending: …”)}})()”
You have a multitude of closing braces of different types. This is the result of flexibility of JavaScript:  expressions usually have return value that are used for the next step. JS hand coding works for small apps, but if you have any issues with something thousands of lines long, you can spend frustrating hours and maybe days until you solve it. This whole issue gets exponentially worse the larger JS code base you have. I don’t want to paste screens of code here, because it would distract most of my readers. However basically you will need more than one full time JavaScript developer fixing these issues and working on new transactions.

Browser Wars

There was a “browser war” between Internet Explorer and Firefox starting around 2003. This “war” costs millions of dollars and as of 2014 is still raging on between current browsers. SAP OpenUI5 tries to cover these issues, but a certain JS function suddenly not running in some browsers might cause headaches.

Retrain ABAP developers?

One possible solution is to train conventional ABAP programmers to develop in JavaScript. I consider it like retrain truck drivers to drive sport racing bikes. (I am an ABAP dev too, so I may say this 😉 ) It is not impossible, but the tool itself is totally different: Way faster, way more error prone, especially if you want to carry products on it.

What then?

So to stay with the truck-bike metaphor I propose another solution: let’s put self-driven electronic bikes into those trucks to deliver packages to their end customers. What does it mean in development terms? It means that it is possible to generate JavaScript code using predefined application structures.

OpenUI5 without the JS-headaches

You can have this:

Instead of this:

It is just 1300 lines, but if you have spent hours – if not days – looking for a mistyped character in it, you understand the difference. All this code will be generated for you from the application screen you see above.

So basically you don’t need to build up a separate Eclipse environment, you just need your conventional ABAP/Web Application Server stack and everything will be generated for you.

Video

This video was made by Neptune employees and shows the generation of apps.

Conclusion

Before investing in new projects in your country or in any other outsourced country I would consider using a code-generating solution like Neptune. It has costs, it is only an assumption of mine that generally it has a ROI under two years. You calculate your numbers yourself. I don’t know if any other similar generative approach is out there, I was looking for it, didn’t find it yet.
Disclaimer: I have to tell, that I got a two day course in my company about this system.

Feedback

I always think from the viewpoint “if it would be my system” what would be the best solution. However I might have been totally wrong about this. Please feel free to point to alternative solutions or give some constructive critique. Trademarks like “SAP” and “ABAP” belong to their rightful owners.

Poker Programming Challenge

Last week Saturday, 26.April 2014,  a few curious developers gathered together at the Morgan Stanley offices in Budapest to learn about a new type of challenge: Lean Poker.  Everyone was excited and after a short introduction the game started. The croupier was already dealing out cards, collecting responses and measuring points. One thing was missing though: not one program was yet able to respond to any move requests. All of them were just sitting there frozen.

You find the event on this link:

Lean Poker @ Morgan Stanley

Saturday, Apr 26, 2014, 9:00 AM

Morgan Stanley Business Technology Centre
Lechner Ödön fasor 8.

17 retreaters Went

English:Due to the success of the new Lean Poker format we will do one more event this spring. Lean Poker is a continuous delivery and lean startup workshop built around a robot poker tournament. You don’t need to know poker, will teach you in the first half an hour! There is no price for the winner except for a round of beer the other teams may …

Check out this Meetup →

Background

Let’s get back to how it started: What is LeanPoker? It is a workshop for developers to practice and improve coding skills, especially agile development and continuous deployment. Participants are divided into groups and competing with one another using algorithms in different programming languages.

These type of workshops existed before, just they were not as competitive and exciting as Lean Poker. The father of Lean Poker is called Coderetreat, although in itself it is also just a few years old, existing since 2009. Rafael Ördög organized many such events and came to the idea to iterate it further using the poker rules for a poker robot competition. Thus Lean Poker was born in January 2014.

At least 60-70 developers participated in Coderetreats in Budapest already, so it was not difficult to find 13 coding heroes for this event. Only one of the following language was required:

  • C++
  • Go (Under review)
  • Groovy (Under review)
  • Haskell
  • Java
  • JavaScript
  • Perl
  • PHP
  • Python
  • Ruby

Actually not even these programming languages were required, a few participants came just to enjoy the fight and have a great time. A casino for developers and math fans.

Preparation

I can program in C++, Javascript and PHP, but for this purpose PHP seemed the most comfortable tool I could think of. So Attila, Gergely and I formed the PHP team. Gabor joined later on and we choose the name “AllLean”. (For non poker players this refers to “All in”, a term I will describe later on.)

One “sit and go” looks like above. It means that all the teams grab 1000 USD and start to play.  They play until only one player has any money left. Then the first player gets 5 points and the second best get 3 points. This measurement system leads to a few interesting strategies you will see later on.

Teams:

  • AllLean: PHP
  • Charlie Firpo: Java
  • Cppoker: C++
  • Grandious: Groovy

Each point in the chart represent a “sit and go”. The point average is deducted to clearly see the differences between the teams. In real life all the programs went up to above 400 points.

Beginning Phase

After seeing the charts starting we realized we have to do something quickly not to loose too many points in the beginning. We posted a basic player and so until 10:47 we took the lead. Basically all other clients were just setting up their coding environment and we had this half an hour to our advantage.

First fight

The Java team “Charlie Firpo” realized, that these minutes meant 30 points already, so they pushed out a simple player. This player was doing “all (money) in” all the time, no matter the cards. Like a blind player, betting all his fortune on the game, even without seeing his cards. Interestingly this tactic was winning, because if all other players just bet a certain amount and then fold, the bluff just wins the game. And they won big time, especially since we pushed in a buggy player. Our player was frozen until around 10:45, they took the lead around 11:05 and were most of the time first until 12:05. We realized our mistake around 11:10 and quickly pushed in a version to simply fold all the time. This player could never win, but it became the second from 11:40 till about 12:12 all the time. Second place means three points, what is much better than loosing all the time and having zero points.

Other teams rise

Finally the Grandious team with Groovy language set up their environment and started to play actively. They had an excellent series from 12:15 till 13:45. Then they saw 2-3 lost games and pushed in something. This new version couldn’t really compete against the other players and they lost quite many games until 14:30.

Social Engineering

Seeing Charlie Firpo getting almost always a second place I figured they do an always folding always second place tactic. Cppoker had quite bad performance at the beginning, so I’ve even tried some social engineering: So I went to the Cppoker team and I explained, that for both teams AllLean and Cppoker would be beneficial, if Cppoker would always fold. Then they would be second half the time with an average of 1.5 points, what was better than their performance until 12:00. And for AllLean it would be good to decrease the folding points of Charlie Firpo from a single folding player three points to a second folding player 1.5. Of course this move is debatable, because to advance among players one needs an algorithm with more two points on average. (Sorry Csaba, if I influenced your team in a wrong direction. I thought you were below one point average. Moreover I admit, that first of all I wanted AllLean to advance against Charlie Firpo.)

This is an important takeaway for me: If I advise anything to any other team, especially if they are not doing so good, it can cause some personal emotions and mistrust. And good performing teams don’t need my advice anyway, so I should better keep them to myself in this case 🙂

Hardball

At around half past two all language envirnoments were working well, basic algorithms were in place. The real fighting started. Charlie Firpo saw a decline, what was not really a decline, but simply other players getting active. They invented a new routine in a rush, but then a real decilne for them started. Grandious seemlingly choose an always folding algorithm first and then they started to implement new better and better algorithms. Cppoker was also getting better and better. I would not be surprised if they would have won the game, had it been started only around 14:00.

Final struggle

Around 15:30 push came to shove, teams just wanted to win, as many points as possible. Any “always folding” or “always all in” strategies caused a long term decline. For a short time starting around 15:40 we – the AllLean PHP team – tried an always folding tactic. We saw, that all other teams became very agressive and thus a sure three points were above the possible five ( 5/3 = 1.67 I would count, if we would have the same winning strategies). But we knew, that we cannot win with always fold, because another always folding player immediately puts our robot to an 1.5 average, what is way below the remaining player average: 5/2 = 2.5. So we implemented a pointing system with a special shortcut: If we didn’t have pairs or cards above seven average, we fold immediately.

Finals

Interestingly team Grandious with the Groovy language caught the wave and in this final half an hour their performance was better than any other team, but they didn’t have enough time left to outperform us.


I wanted to change our basic tactic, but my team members just hushed me down and said that they would rather go have coffee for half an hour, so we cannot make any rushed and buggy changes :). We brought in around 2.1 points on average, what was enough to first catch and then overtake Charlie Firpo. They had serious technical problems around 15:30, what lasted for half an hour.

Conclusions

Winning is clearly not rewarded by the organizers, because it is not winning what really matters. It is the effective learning what matters, what you will do differently afterwards. Answers to these questions became imprinted to our minds, we cannot forget anymore:

  • What does continuous deployment really mean?
  • How can one devise and use a simple algorithm until one comes up with something better?
  • What is the attitude necessary to survive and thrive in a constantly changing environment?

So I personally thank Rafael Ördög (Devill) for taking his time to realize this great competition. I honestly wish this becomes a great championship with international gatherings.

Also thanks for the office and lunch for Morgan Stanley.

For more info on Lean Poker, check leanpoker.org

View from the office terrace.

总结 / Summary in Chinese

我们组织了一次扑克电脑挑战。在此我们分小组,每小组用不同的程序设计语言,如:C++、PHP、Java、Groovy。我们设计了可互相玩儿扑克的程序。
我们的小组,”AllLean”用PHP语言赢了,但是重要的不是赢输,而更重要的是经验“持续部署”(continuous deployment),各两分钟,以及对其他小组进行的策略。比如,我们经验了“上市时间”的重要性。
我感谢Raffael Ördög为了准备和组织这次活动,并感谢摩根士丹利为我们提供办公室。

Short Summary in English

(if you want to study technical language in Chinese)

We organized a poker computer program challenge. Here we were divided into teams and each team used a different programming language:C++, PHP, Java and Groovy. We constructed programs, that could play poker against each other.
Our team, “AllLean” with the PHP language won, but not winning is what matters. More important is the experience with continuous deployment (each two minutes) and employing strategies against other teams. We experienced how important for example “time to market” can be.
I thank Raffael Ördög for preparing and organizing this event and for Morgan Stanley for the office space.

Interface Design Course Summary

The expression “interface design” was so hot that I immediately applied for the course. It was an inspiring eight weeks and now I would sum up my experience right here. If you speak Hungarian, you can check out the basic info here: momeid.mome.hu.

We followed the process how apps and sites are designed. It starts with “needfinding” a process to find both your and your clients needs. Some projects – actually quite many I’ve encountered – fail because of inexistent or poorly executed needfinding.

Then we continued to project brief and use cases. It was revealing to write my own specification and I could clarify the bigger part of the project without executing any direct task. This clarity helped me later on to focus on major user stories.

Then there was a part for wireframes. “No forms or colors please!” was our slogan and now I understand why. I would not do it otherwise myself.

We continued to lectures about typography and layout. As I had some experience with fonts before, so theory was almost nothing new, but the little practice we did helped a lot. Can you imagine, I didn’t really know about google.com/fonts ?

So after fixing wireframes we spent a few hours in Axure(beta). It is easy to handle although it has it’s limitations. You can digitalize your wireframes and even have some mockup funktionality. Still without colors of course.

 

Then came Photoshop, we fleshed out our wireframes. Of course Adobe Illustrator was a big help in creating any icons or UI elements. Actually we started by creating our own UI kit fully vector based of course. Then it was simply copy-pasting UI element into app screens.

One of the surprising values I experienced here is experiencing the different viewpoints of my classmates and teachers. It’s much more than just pieces of information, it is the way people think and speak about projects or designs.

Finally I came up with a zoomable email/twitter client:

 

 

Interaction Design Course

Just a few excellent pictures composed together to communicate the mood of my project
Moodboard for my pet project Zooming Emails

I consider my life mission to “create a better way to use computers”. So I had to take this interaction design course in University Moholy-Nagy:
http://momeid.mome.hu/

We were asked to prepare a pet project and I choose the subject of “zooming emails”. I was discouraged, because it is difficult to design zooming interfaces. However I believe that ZUIs will simply take over windowed interfaces, so I started on this one anyway.

digitalGlassWoman01

User experience, interaction design, app developer are all brand new fields and I think they are kind of difficult to find in formal education. So I was very happy to find this course announced in September 2013. I felt that with my profile it is a must to go.

Of course an eight week course cannot prepare us for all cases, but it can start us on the road. Real life projects and references are the real milestones here, not certificates.

We have “theory” on Monday and Tuesday and practice on Saturday. On the first day Thomas Fogarasy said, that having an idea in itself is like 1%. I agree. The other 99% is planning, preparing and getting “deep in the jungle”.

http://www.flickr.com/photos/tfjensen/8056427807/

Until now we are through some interface design theory, formulated project ideas, created personas and wireframes. I am curious how far we will get.

Here you see an example moodboard, personas and a basic description of purpose and functions:

Download (PDF, 1.48MB)

The one to contact with hot zooming projects: zbalaiemil

Videogames and Learning: An Excellent Coursera Course

I’ve enrolled to an excellent Coursera course on video games and learning. This subject is so hot for me and I believe new generations will use games as major part of their blended learning experience.

videogameslearning-images-kurt-n-constance
Constance Steinkuehler and Kurt Squire are doing everything to give as a great learning experience.

kurt-squire-game-trajectories

I stole this diagram from the course (Kurt Squire). It shows clearly where social context has a role. Newbies or intermediate players are in my experience not the core of these groups. It starts by master players and it continues to designers or game community leaders.

I just started this course, but in my opinion it has surprisingly high quality. (As by the Coursera Gamification course from Kevin Werbach.)

I consider these forms of education as valid as any classroom education and I really appreciate the effort for putting all this together.