Sunday, April 20, 2014

Weekend Reader, Week 16

IMG 0163

About the Software Architect:

"Software Architect" places in the top ten of most annual surveys of best jobs, yet no clear path exists from Developer to Architect.

Do we really need that path? Is anybody expecting a clear path from plumber to architect in the construction analogy?

Are architects just a concept to offer developers a career path?

I have been in the industry for a long time now, and I did not see two companies/projects where “Architect” had the same interpretation. But do we really need architects? I am sceptical … I would argue that we need people that care about stuff. And not everybody can care about everything, so the “Architect” should care more about the high-level, holistic perspective while others care more about low-level perspectives. But I doubt there should be a clear path that leads from the one to the other. It’s just an agreement that somebody should care about this and somebody else should care about that.

And the role of an architect in Agile is another interesting topic:

Putting an architect in a scrum team is like putting mayonaise in cake - Christin Gorman from Roots conference on Vimeo.

 

About the Foreman

Uncle Bob (Robert Martin, one of the authors of the Agile Manifesto) has some come up with an interesting interesting idea: Software projects needs a foreman. In the initial proposal of Uncle Bob, the foreman is the only person that commits code to the project, other developers send him pull requests. In a follow-up post 'Oh Foreman, Where art Thou?’ Uncle Bob relaxes his initial proposal a bit: The foreman has the ultimate responsibility over every commit, but others might commit directly.

For me this is a drastic departure away from the notion of an empowered, self-organizing team that is the foundation of Agile software development. In my opinion, if we introduce the notion of the foreman, then we build a big obstacle in fostering an intrinsically motivated, self-organising and responsbility-embracing team and take a big step back towards tayloristic understanding to work and responsibilities. I don’t believe the tayloristic approach fits an industry relying on knowledge workers.

 

The obligatory quote of Steve Jobs: 

Great companies have to be run by ideas not by hierarchy. Otherwise good people won’t stay.

 

However it seems a bit contradictory to the general myth of the management style of Steve Jobs vs. Bill Gates, i.e. voiced in episode 963 of .NET Rocks:

Steve Jobs ruled by dictatorship while Bill Gates ruled by committee, which allowed Apple do do things that Microsoft could never do.

 

The demise of "The Enterprise" 

In Consumerization of Computing (german) Philip asks how long the enterprise will still be relevant for vendors like Apple and Samsung.

'The Enterprise’ has lost its grace big time in the last decade. When I started my career over a decade ago, the big challenges for a programmer seemed to be in big enterprise systems. Nowadays the big challenges and innovation seems mostly to be in consumer facing applications on the web and in mobile.

The most tragic manifestation of the descent of the enterprise is the “Enterprise Mode” in Internet Explorer 11, which basically allows enterprises to remain in the stone-age of Internet Explorer 8.

The notion  of "the Enterprise" already became a running gag in the industry:

Jeff Attwood on Stackoverflow Podcast 41.

In corporate environments the product don't have to be good. Sometimes they don't even have to exist ... if you are a thoughtful developer, you are in the wrong place!

 

The Story of Ashton by Joel Spolsky:

On the morning of his two year anniversary at the cubicle company, Ashton was driving to work when he realized something.
Not one line of code that he had written had ever run.
Not one thing he had done in two years of work made any impact on the world.

 

It Takes 6 Days to Change 1 Line of Code

It's the first Enhancement in the Developer Queue, after 14 Bug Reports.

 

Herding Code 102:

Scott: What is the penetration of Node.js into the "enterprise"? 
Tim: It depends on what you mean by "enterprise"?
Scott: Large, slow moving corporations.

 

Martin Fowler defining Enterprise Systems:

Business rules are given to you as they stand, and if you want to change them you need sixty-seven meetings and three vice-presidents retiring.

 

Final Gem: Mr. Hanselman is just a great presenter:

Saturday, April 5, 2014

Weekend Reader, Week 14

WeekendReader14 9

L.A.F.A.B.L.E: Large Agile Framework Appropriate for Big, Lumbering Enterprises

I would consider it a very funny April Fools' joke if I would not know how close this carricature actually describes the reality in many enterprise environments.

 

Signs you might be in survival mode

Roy Osherove concisely identifies when a software delivery team is in survival mode. Does it somewhat sound familiar?

 

Agile Adoption is Fool's Gold (and other Stories from the Coal Face)

After initial Scrum successes teams usually find out, that blocking obstacles lie outside of the team.

Scrum is like training wheels. At some time they come off.

 

Enterprise Scrum

Yet another approach to scale agile? Just what the enterprise needs? I have not yet found the time to read the whole 76 pages to make up my opinion ...

 

Radical Management

Nothing really new here, these ideas are taught in most leadership and management courses … but reality still looks different. So the ideas of Steve Denning are certainly worth to ponder over.

However the introductory video makes me think of … hmm …  a cheap tv show blended with advertisements I usually see on shady torrent  pages:

I liked the TED talk a bit better, but I still would have expected deeper insights:

 Finally I am still wondering about the connection to the german book: Radikal F├╝hren by Reinhard K. Sprenger

 

Final Gem: Wow, pair programming has come a long way since ‘83...

BkP0AZOCYAAymiN

Friday, March 28, 2014

Weekend Reader, Week 13

Inspired by Philip, I am going to try a new format: The Weekend Reader - A post every week about interesting stuff I read on the Internets during the past week.

 

IMG 0161

The Problem with Career Ladders

Jurgen Appelo (Author of Management 3.0) identifies the problem with career ladders: Management Bias, the Peter Principle and Linearity do no fit modern knowledge working environments. He has a vision:

Far in the future there won’t be any subordinates and superiors. Just people, working together.

I personally don’t believe that this vision will become generally true any time. But I believe that it can fit some very special work environments, and it’s the kind of environment that a true knowledge worker should try to find.

 

Github Inc. seems to celebrate to be such an environment:

GitHub Swaps CEOs, Proves It Doesn’t Need No Stinking Bosses

GitHub is a company that doesn’t have middle managers. Few of its employees have job titles.

 

A Day of Communication at GitHub

Let’s stay with GitHub: They also have an interesting culture of communication: Zach Holman claims: Meetings are really difficult to get right. Chats have a lot of advantages over meetings.

Ok, I know about the first part… but chats? Seriously? However after reading the article, I am impressed.

 

SAFe: the infantilism of management

About every major figure in the Agile community has now formulated disagreement with the Scaled Agile Framework (SAFe) and similar approaches:

But this lastest critique by Dave Snowden (the authority on the application of complexity theory to organisations) is especially cruel:

SAFe is not only a betrayal of the promise offered by AGILE but is a massive retrograde step giving the managerial class an excuse to avoid any significant change. OK its a obey making machine but the same applies to snake oil salesmen and the South Sea Bubble. People will get damaged by this nonsense and it needs to be hamstrung at least, garrotted at best.

[SAFe is] the failure to realise that software development needs to be seen as a service and as an ecology not as a manufacturing process.

 

Identify the Champion and the Valve Handbook for New Employees

Tudor introduced to me the notion of “championing” as a mechanism for Selection and Prioritization. I am wondering if this would be applicable to work environments that are paralysed by giant backlogs.

It seems that Valve (the other poster child of a flat organisation without bosses) is living a similar notion already according to their Valve Handbook for New Employees:

Other companies have people allocate a percentage of their time to self-directed projects. At Valve, that percentage is 100. Since Valve is flat, people don’t join projects because they’re told to. Instead employees vote on projects with their feet (or desk wheels). Strong projects are ones in which people can see demonstrated value; they staff up easily.

 

What makes knowledge workers productive?

BjhOC2HCQAATdfx

 

Defining Enterprise Applications

13 years after writing Patterns of Enterprise Application Architecture Martin Fowler tries to define the term “Enterprise Application” … not without sarcasm:

And then there's so-called "business logic". When you are writing an operating system you strive to keep the whole thing logical and stive to discover and implement simplifications to keep the software straightforward and reliable. But business rules are given to you as they stand, and if you want to change them you need sixty-seven meetings and three vice-presidents retiring. They are usually a haphazard array of strange conditions that interact in surprising ways. Their insanity derives from a good reason, each one is a case where salesman could close a particular deal by offerring some special one-off condition. Do this a thousand times and you have the complex business "illogic" that lies in the heart of many enterprise applications.

Roy Osherove has his own opinion on the topic:

“Legacy” and “Enterprise” - Two words that mean good things in real life, and really problematic things in software culture.

Sunday, March 23, 2014

JavaScript is conquering the world!

Any application that can be written in JavaScript, will eventually be written in JavaScript.

 

Two years ago I blogged The future smells like JavaScript. Where do we stand today?

This post lists my favourite examples that demonstrate impressively the power of JavaScript.

 

Cloud 9: A complete IDE written in JavaScript:

It’s funny, Adam Bien talked in 2008 in his session "Designing The Boundary - Rich UI Meets Efficient Java EE Backend” about desktop- vs. web-applications. IDEs were his canonical example for desktop applications that will never be replaced by web applications. Yet here we, are looking at Cloud 9:

Screen Shot 2014 03 22 at 23 35 37

And there are plenty alternatives, most noteworthy Visual Studio Online (Project Monaco) by Microsoft. But there are also codenvycode anywhere, eclipse orion and others.

 

Unreal Engine 4

While not yet publicly available, Epic Games and Mozilla have ported the Unreal Engine 4 to the web and it’s running nearly at native speed:


Office Replacements

Google Docs and  Microsoft Office Online are probably the most popular examples how traditional desktop applications are replaced by web applications. Another impressive one is Lucid Charts:

Screen Shot 2014 03 23 at 00 26 57

 

Rather playful examples of the power of JavaScript are the following emulations:

JSLinux: A PC emulator in JavaScript running Linux Screen Shot 2014 03 22 at 21 42 07

http://bellard.org/jslinux/

 

 

Doppio: A JVM implemented in JavaScript 

Screen Shot 2014 03 23 at 00 13 01

http://plasma-umass.github.io/doppio/

 

PCE.js: a Mac Plus emulator running Mac OS System 7

Screen Shot 2014 03 22 at 21 36 07

http://jamesfriend.com.au/pce-js/

Friday, March 21, 2014

Running Node.js applications on the JVM with Nashorn and Java 8

Jjs
I am naively playing around with Nashorn. Nashorn is the new JavaScript Runtime that comes with Java 8 and runs on the JVM.

In this post I show how to run simple Node.js applications with Nashorn on the JVM.

Avatar.js is a project to bring the node programming model, APIs and module ecosystem to the Java platform. Unfortunately Avatar.js does not officially provide a binary distribution and the build process looks quite intricate (involving Python and C++).

There is also Project Avatar, an upcoming web-platform by Oracle. Project Avatar builds upon Avatar.js.

By reverse-engineering Project Avatar I found the necessary artefacts of Avatar.js in the java.net Maven repository. These artefacts can be used to run Node applications with Avatar.js without having to build Avatar.js yourself.

The following steps show how to run a simple Node.js web application on OSX. The steps should be very similar for Linux or Windows.
  1. Download avatar-js.jar from the java.net Maven Repo.
    Current version is here: https://maven.java.net/content/repositories/public/com/oracle/avatar-js/0.10.25-SNAPSHOT/
    Example file: avatar-js-0.10.25-20140313.063039-43.jar 

  2. Download the native library avatar-js.dylib from the java.net Maven Repo.
    Current version is here: https://maven.java.net/content/repositories/public/com/oracle/libavatar-js-macosx-x64/0.10.25-SNAPSHOT/
    Example file: libavatar-js-macosx-x64-0.10.25-20140312.062209-35.dylib
    For Linux you would download the corresponding .so file from ../libavatar-js-linux-x64/0.10.25-SNAPSHOT/
    For Windows you would download the corresponding .dll file from ../libavatar-js-win-x64/0.10.25-SNAPSHOT/

  3. Rename the native library to avatar-js.dylib and rename the jar to avatar-js.jar and put both in a directory called dist

  4. Create a simple Node.js app in the a file called app.js:


  5. Run the command:
    java -Djava.library.path=dist -jar dist/avatar-js.jar app.js
  6. The output should be:
    Server running at http://127.0.0.1:8000/

  7. Navigate to http://localhost:8000/

Wednesday, March 19, 2014

Performance: Nashorn vs. Node

250x250xJavaScript logo png pagespeed ic I5rUk2FRl9

I am naively playing around with Nashorn. Nashorn is the new JavaScript Runtime that comes with Java 8 and runs on the JVM.

I am using the current Build b132 of the Early Access Release of Java 8 on a recent MacBook Pro (2.3 GHz Intel Core i7)

One of my first experiments is comparing performance with node.js.

I have run the following script with Nashorn and with Node:

The results:

Nashorn:
✔ jjs fib.js
Input: 30, Time: 66
Input: 31, Time: 40
Input: 32, Time: 58
Input: 33, Time: 90
Input: 34, Time: 154
Input: 35, Time: 242
Input: 36, Time: 348
Input: 37, Time: 556
Input: 38, Time: 920
Input: 39, Time: 1483
Input: 40, Time: 2426
Input: 41, Time: 3928
Input: 42, Time: 6360
Input: 43, Time: 10303
Input: 44, Time: 16602
Input: 45, Time: 26802
Input: 46, Time: 43384
Input: 47, Time: 72201
Input: 48, Time: 116425
Input: 49, Time: 188520
Node:
✔ node fib.js
Input: 30, Time: 13
Input: 31, Time: 20
Input: 32, Time: 33
Input: 33, Time: 53
Input: 34, Time: 88
Input: 35, Time: 142
Input: 36, Time: 226
Input: 37, Time: 365
Input: 38, Time: 590
Input: 39, Time: 954
Input: 40, Time: 1530
Input: 41, Time: 2522
Input: 42, Time: 4047
Input: 43, Time: 6534
Input: 44, Time: 10557
Input: 45, Time: 17161
Input: 46, Time: 27712
Input: 47, Time: 46323
Input: 48, Time: 73521
Input: 49, Time: 118905
Pure Java:
✔ java -cp fibdemo.jar FibDemo
Input: 30, Time: 5
Input: 31, Time: 6
Input: 32, Time: 11
Input: 33, Time: 18
Input: 34, Time: 27
Input: 35, Time: 45
Input: 36, Time: 71
Input: 37, Time: 121
Input: 38, Time: 188
Input: 39, Time: 304
Input: 40, Time: 490
Input: 41, Time: 804
Input: 42, Time: 1276
Input: 43, Time: 2067
Input: 44, Time: 3361
Input: 45, Time: 5445
Input: 46, Time: 8901
Input: 47, Time: 14253
Input: 48, Time: 23288
Input: 49, Time: 37160

Out of the box the performance of Node seems to be almost a factor 1.6 better than of Nashorn.

Of course this naive experiment is not representative for real world performance and this is still an early access release of Java 8. It might well be that the performance of the final release will be better. Also the JVM can probably be tuned in many ways unknown to me.

Still I would be interested in thoughts about the findings of this experiment...

Friday, March 14, 2014

Myco for iOS7

Icon170x170

This week I released Myco 2.0.0 for iOS7:

 

5 en identification

 

5 en identification


Of course the app is available in English, German, French and Italian.

We are looking forward towards the next mushroom season. It will be hard to beat the over 60'000 downloads from last season, but we are close to releasing the Android version which might give another boost.

Related Posts Plugin for WordPress, Blogger...