Couple of years ago I wrote about patching RichFaces 3.3.3 AJAX.js for IE9 and as the browser world has moved on, it's now time to patch RichFaces 3.3.3 AJAX.js for Internet Explorer 11. Of course you could update your web application to JSF 2 and RichFaces 4 or PrimeFaces but it's neither trivial nor free. The issue with RichFaces 3.3.3 still stands, development has moved to 4.x version and they've dropped support for the older versions although at least IE issues could be easily fixed. Fortunately patching RichFaces AJAX.js is relatively easy.
The problem with Internet Explorer 11 is that although you upgraded Sarissa Framework and patched RichFaces AJAX.js file for IE 9 it just isn't enough anymore as IE 11 uses different User-agent string and disguises itself as "like Gecko". The User-agent string in Win 8.1 for IE11 is "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko". The issue is also discussed on JBoss Forums and on Stack Overflow.
The different User-agent string breakes the "rerender" after Ajax Request. For example using a4j:function in combination with "rerender" is not working on IE 11 and the problem is that after Ajax request the result XML can't be correctly append to the body. Also the rerendering is abnormal for h:inputTextarea, rich:modalPanel, h:inputTextarea and rich:calendar.
The other thing I noticed with RichFaces 3.3.3 and modern browsers is that if you use ui:fragment which contains rich:suggestionbox and rerender it, the suggestionbox doesn't work correctly. It gives an error: SCRIPT5007: Unable to get property 'parentNode' of undefined or null reference. For now I didn't have time to figure out the issue and just changed my page structure and function.
Although it's 2015 using JSF 1.2 and RichFaces 3.3.3 is still working quite nicely :)
What could be a better way to spend a beautiful Autumn Saturday than visiting Tampere goes Agile and being inspired beyong agile. Well, I can think couple of activities which beat waking up 5:30 to catch a train to Tampere but attending a conference and listening to thought provoking presentations is always refreshing. So, what did they tell about being "Inspired beyond agile" in Tampere goes Agile 2015?
Tampere goes Agile 2015
Tampere goes Agile is a free to attend event about agile and this year the theme of the conference was "inspired beyond agile". The event was held at Sokos Hotel Ilves and there were roughly 140 attendees. Agile as a topic isn't interesting as it's practices are widely in use, so the event went past agile and concentrated on "being agile". How the organizational level and our mindsets has to change to make agile work. Waterfall mindset eats your agile culture for breakfast. And that's the problem many presentations addressed.
Event started with a keynote by Bob Marshall who asked what's after agile. He has introduced the concept of right shifting where the core idea is that a large amount of organizations are underperforming. We're always more or less prisoners of our mindset and existing ways.
"It's not enough to do your best; you must know what to do, and then do your best." - W. Edwards Deming
Marshall showed his right shifting organizational effectiveness chart where mean is around 1 (0 to 5 scale) and organizations using agile sit around 1.25 to 2. So, what's beyond that? Agile thinking isn't getting us there. What differs the organizations in the chart is their mindset: adhoc, analytic, synergistic and finally chaordic.
In order to improve the effectiveness and efficiency of our organizations, we'll need to be able to imagine better ones. The question is, what does an ideal organization look like? What kind of society we would build if it was wiped out? Starting from clean slate. We should look at the organization as a whole and what Marshall suggest is to use therapy to understand organization health and changing the mindset of the organization to one that's more conducive for high performance.
The ideal model for IT company is built around: people, relationships between people, collective mindset, cognitive function and motivation. And it's good to remember the difference between effectiveness and efficiency: Doing the right thing or doing the thing right.
Doctor, please fix my Agile!
Ville Törmälä talked about how we have seen changes on the method level, organizations are still mostly functioning the same ways as before. Many have tried to become more agile but without much success as there's a waterfall way of doing everything.
Törmälä presented his definition of agile: 1) Make the work better 2) Make the work work better 3) Make lives better. But waterfall mindset eats our agile culture for breakfast so it's about time to broaden our thinking about what really constitutes a long-term success in organizations doing any kind of knowledge work. Agile gives you tools and ideas but organizations can't change or improve by "doing agile" better. If you fail with one agile "method", you probably fail with the rest of them. It's a systemic problem. It's all built deep in to the thinking and structures of the organizations. That is the challenge.
"Every system is perfectly designed to achieve the results it gets". We should change from "project thinking" to "stable teams thinking". To change the power and influence structure from managing people to empowering people and further to liberating people.
One way of doing this is to use KBIs, Key Behaviour Indicators, where you write down examples of behaviour you want to see, think in what kind of environmental it's possible or could happen and then create the environment, write down concrete actions.
"The supreme art of agile is to subdue the waterfall thinking without fighting" - Sun Tzu, The Art of War
In summary, we need to look beyond methods and practices. Organizations change by changing how they think and become better by understanding better how work works, how to create value and how to learn better. We've to work with the system, aiming to understand and affect its thinking.
Pairing is sharing
Pair programming is a core agile technical practice but many people still have reluctance to pair and Maaret Pyhäjärvi talked about the deliberate practice in building up the skill of pairing to allow pairing to take one's skills on other activities to a new level. Pyhäjärvi shared her different stages of pairing and lessons picked up as a testing specialist.
Again, pairing is also about mindset and effective pairing is far from trivial - but it is skill that can be practiced. Pyhäjärvi talked about growth patterns from pairing with peers to pairing and mobbing with developers, from traditional style and side-by-side work to strong-style pairing and to pairing on both testing and programming activities.
Listeners also got to test specific style of pairing, Strong-style pairing, where for an idea to go from your head to the computer it must go through someone else's hands. You really need to think the steps through for the other to manage the given task.
One presented point about pairing was that you must unlearn ownership of ideas and contributions. Co-creation vs. collaboration.
Pyhäjärvi also told that selling pairing to team (of introvert programmers) is hard but Mob Programming has been their gateway to pair programming. It feels safer. You can read more about it from Mob Programming guide book.
Before lunch there was also nice lightning talk about documentation pipeline by Antti Virtanen. He told about Lessons learnt from creating a Documentation Pipeline for Continuous Deployment with Jenkins and other open source tools. His slides are available from SlideShare.
The DevOps magic with Jenkins was more or less standard practice and it was configured to generate documentation from database schema, JavaDocs, test coverage reports, performance test results and API specification. Reminded me of all the work I should introduce to our continuous integration.
3 standard tricks were presented:
Jenkins is the Swiss knife.
Database documentation in database metadata and generating ER-diagrams with SchemaSpy.
API documentation with Swagger.
When quality is just a cost: Useful approaches to testing
Testing is also important part of successful projects so Jani Grönman talked about useful approaches to testing and software quality.
"Software quality is measured by your customer success, not development project metrics and quality processes."
Grönman approached the topic with often surprisingly common attitude towards testing and quality:
"Quality is just a cost and like other costs, it should be avoided or minimized."
"Testing is it just another buffer in project's budget"
"testers are not skilled labor, it’s enough if they can read and write."
"What automation? They can quickly click trough the app can't they?".
And as you know this is all wrong. It's true that testing is expensive but so is development. Can you afford not to test? You should think it as an investment. The presentation went through the reasons and motivations behind the various attitudes and explored differences in views and how to best tackle them using the right technology and approach. He also talked about the schools of testing: Analytical, Standard, Quality, Context driven, Agile.
But overall you should know that testing is skilled activity and part of the development. Testing provides information to the project and you should use mix of techniques like exploratory and automatisation. And think about what testing would be most effective now. You need to choose the right set of QA tools for the job. One size fits no-one.
DevOps: Boosting the agile way of working
DevOps has been quite the buzzword for some time, so it was interesting to hear what Timo Stordell had to say how Devops is boosting the agile way of working. In short DevOps isn't anything revolutionary and should be seen an incremental way to improve our development practices. And talking about revolution, Stordell's slides had nice Soviet theme.
The presentation was more or less what you would expect from a topic covering DevOps and has nice touch to it. In short: Small bangs over a big bang, requirements management meet acceptance testing, standardize development environments, monitor to understand what to develop.
Stordell had nice demo of how they perform acceptance testing using physical devices and automation. They have built a rig of CNC mill run by Raspberry Pi to test payment system.
For those interested about DevOps movement and everything around it there's DevOps Finland meetup group. You can also download Eficode's DevOps Quick Guide to read more about it.
Keynote: Beyond projects
Event's final keynote was by Allan Kelly who spoke about #noprojects. Why projects are wrong and what to do instead. The main point of the keynote was that the project model doesn't match software development and outlined an alternative to the project model and what companies need to do to achieve it. The presentation slides are available from SlideShare. Kelly has also written a book about team centric agile software developmen,: Xanpan, which combines Kanban and XP.
Going beyond projects is an interesting idea as everything we do is somewhat tied to doing things in projects. So, what's wrong with projects? Projects are temporary whereas software is forever. Projects have end dates which in turn is against the defining feature of successful software: it doesn't end. Software which is useful is used and demands change, stop changing it and you kill it. At worst the project metaphor leads to dead software, higher costs and missed business opportunities.
We should think projects more like a continuous flow where it's success isn't determined by staying on schedule, on budget, and with quality. We should concentrate on the value delivered and put value in flexibility as requirements change. This goes against the fixed nature of projects. Also after project you often break a functioning team and start all over again. We should put emphasis on teams, treat team as an unit and push work through it.
The other thing is that software is not milk. It's cheapest in small packages, not in big cartons. Software development has not economics of scale. Big projects are risk. Think small and make regular delivery which increases ROI. Fail fast, fail cheap. Quite basic agile thinking.
So, beyond projects: waterfall 2.0, continuous flow
Now we have #noestimates, #nomanagement and #noprojects. Profit?
It was my first time visiting Tampere goes Agile and it was nice conference. The topics provided something to think about and not just the same agile thinking. You could clearly see the theme "Inspired beyond agile" working through different presentations and the emphasis was about changing our mindsets.
Going beyond agile isn't easy as it's more about thinking than tools. Old habits die hard and changing the waterfall way of thinking isn't trivial. We should start with understanding our organization's health and changing the mindset of the organization to one that's more conducive for high performance. Switch from "project thinking" to "stable teams thinking" and change the power and influence structure from managing people to empowering people and further to liberating people.
The after party was at Ruby & Fellas but after early morning and couple of nice beers it was time to take train back home. But before that I had to visit the Moro Sky Bar with nice scenery over Tampere.
Software development is one of the professions where you just have to keep your knowledge up to date and follow what happens in the field. But as normal information overload is easily achieved so it's beneficial to use for example curated newsletters for the subjects which intersects the stack you're using and topics you're interested at. Here are my selection of newsletters for software developers covering topics like web and mobile development, user experience and design and general topics. For more newsletters for developers you can check what for example Dzone wrote.
The power of newsletter lies in the fact that it can deliver condensed and digestible content which is harder to achieve with other good news sources like feed subscriptions and Twitter. Well curated newsletter to targeted audience is a pleasure to read and even if you forgot to check your newsletter folder, you can always get back to them later :)
Java Performance Tuning News
A monthly newsletter focusing on Java performance issues, including the latest tips, articles, and news about Java Performance. Curated by Jack Shirazi and Kirk Pepperdine.
A weekly round-up of database technology news and articles covering new developments, SQL, NoSQL, document databases, graph databases, and more.
HTML and CSS
Weekly HTML5 and Web Platform technology roundup. Curated by Peter Cooper.
Roundup of css articles, tutorials, experiments and tools. Curated by Zoran Jambor.
SitePoint’s daily newsletter, which features the latest web development news.
Newsletter for designers, front-end developers and product managers.
Includes interesting and useful stuff Scott has found over the last few weeks and other wonderful things.
The Modern Web Observer
Biweekly email newsletter about current issues and trends in front-end web development. It is much like a commentory on the important current news and articles related to front end development.
Web Design Weekly
Links to the best news and articles to hit the interweb during the week.
Weekly email of curated links to articles, resources, freebies and inspiration for web designers and developers.
Once–weekly e-mail round-up of Node.js news and articles.
User experience and design
Five links each week with the best UX writing, process, analysis, and critique from around the web. Its content lies at the intersection of user experience design, game design, and tech industry critique.
Monthly newsletter where the author will share ideas on how to improve customer conversion and ease of use.
To satisfy your web aesthetics with list of the 5 best design links of the day. The content is manually curated by a couple great editors.
Updates you monthly about the happenings in the UX/usability arena.
UX Design Weekly
Best user experience design links every week, published every Friday.