What books have influenced your ideas and thoughts the most?
I'm going to lead with what may seem like an odd choice: Janet Kagan's Hellspark. It is dense with ideas that resonate for me, including understanding and respecting cultural differences in a team environment, particularly how to adjust your behavior to be more effective through that understanding. There's a character in the book whose culture highly values speaking accurately and truthfully, to the point that they award bracelets to individuals who have done so reliably over time. Rattling or shaking these bracelets while making a statement is a way to emphasize how strongly you feel that your words speak true – and to put some of your reputation on the line at the same time (bracelets can be revoked). As I write or speak I will sometimes ask myself if I would rattle my bracelets about the point I'm trying to make. It's an internal dialog that I hope keeps me clear and honest. Oh, and it's a heck of a good book, too.
From more of a technical book perspective, I was impressed by early work around analysis and design activities by Tom DeMarco, Structured Analysis and System Specification and Larry Constantine's Structured Design. In software construction, we still worry about coupling and cohesion – two of many concepts that developed from these early works. Pretty much everything that Gerald Weinberg wrote is worth reading. Ivar Jacobson's Use Case Driven Development is another one that injected truly new thinking in this space. You can check out my developerWorks blog for additional books I like.
How do you handle defeat and/or failure?
It's all a learning exercise and you learn the most when you stumble. That old saying is useful to remember during difficult moments: Success is a poor teacher. The important thing is being able to review your goals, intentions, actions and results and determine what you might have done differently and consider how it might have changed the outcome. Even more important is incorporating that understanding into future efforts. The only real failure is to not be improved by the lessons life hands you.
How do you handle obstacles and roadblocks?
You have to lean into the pain. If something is difficult for you, you need to do more of it until it isn't so difficult any more. Most things can be mastered if you care to. And that's the other side of the answer: you need to consider the obstacle and decide if it matters. Perhaps walking away or looking for a different path is better than powering through. Sometimes when you step back and take a broader view of your goal, you realize there are better ways than the one you had been focusing all your attention on.
What interests you outside of your job (hobbies, activities)?
Music is a big part of my life both as a listener and creator. I was in several different bands when I lived in Southern California (if you look hard enough you can find stuff I've worked on as both a musician and producer on Rhapsody and iTunes). These days golf is a bit more of an obsession. I started playing again (with the IBM Beaverton Golf Club) after many years away from the game and am very much enjoying both the physical and mental aspects of playing a good round. The rainy Oregon winters leave plenty of time for some woodworking projects – my wife is expecting me to build her a “pie safe” over the upcoming holiday.
What do you see as the top driver to Application Lifecycle Management tools?
The same as the top driver for any tool: Value. An important part of the agile mantra is delivering value quickly. For tools to play well in that space, they have to support exactly that -- they must help teams do more, do it better and get it done and delivered. I've been an unabashed supporter of Rational Team Concert since the very beginning because I believe it brings together a remarkable suite of capabilities and integrates it beautifully. That suite has expanded on both ends with Requirements Composer to help organizations do a better job of being clear what needs to be done and how it should behave and Quality Manager to traceably prove that we've passed the tests that matter. Any organization not considering adopting these tools does not yet understand the value they provide.
If you haven't yet used Rational Team Concert customizations to help improve your practice, did the article give you some ideas on how you could do that? Leave a comment here or connect with Millard on both Google+ and Twitter (@millard3)
Say "Hello!" to the Agile Transformation community
It's time to transform the way you develop software, and we have just the community to help you out. Visit the Agile Transformation community to learn from industry experts and practitioners who have worked through their own transformations to agile software development methods. News, discussions, training and more are available to help you achieve your transformation.
Early-bird registration for Innovate runs through March 14, 2012. By registering early you can save $200 (USD) off the regular conference registration rate of $1995 (USD)! Visit the conference website for more information and spread the word!
The call for papers is open for IBM Innovate 2013. This year there are two streams: The Technical Exchange @Innovate and Team Directions @Innovate. Full descriptions for these streams and their areas of interest are on the conference website. The submission deadline has been extended to January 21, 2013!
So, think about ideas for your paper. If you have general questions about submission ideas, leave a comment on this post or use the message board.
UPDATE: Information about all conference tracks is available on the call for papers site, but track chairs for the following subjects have offered ideas about what might make a good paper topic -and- they are eager to hear any ideas that you have for these tracks:
Show measurable results: There is a big difference between saying “This worked for us” and “We achieved a 35% Return on Investment”. Measurable results are a great way to prove the effectiveness of your strategies to your audience.
Use real-life examples: There is no substitute for experience. Audiences love to hear directly from people who have implemented winning strategies. If you’re an IBMer or an IBM Business Partner, team up with a client to bring your story to life. If you’re a client, dedicate some of your time to letting your audience know how things really worked, or didn’t!
Avoid sales pitches: Infomercials are not welcome. Audiences want to learn how to be successful; if that includes a mention of a specific product or service, then great. If that focuses solely on a given product or service, then audiences will tune out. If you came to advertise, you should participate in our solution center.
Explain the big picture: how your organization collaborated: Software delivery is a team sport. And while your presentation may focus on a specific aspect of software delivery, it likely has impacts on other areas of, or individuals within, your organization. Don’t forget about those impacts, tell us how you integrated and collaborated with other tools, areas or individuals. We want to understand the full impact of your strategies.
Speak to your industry: Sometimes your successful strategies will be dependent on circumstances unique to your organization. Consider generalizing your guidance so that it will apply to others in similar industries or more generic situations.
DevOps is the soup to nuts* concept for true holistic software lifecycle management which brings continuous deployment combined with communication and deep collaborative integrations between engineering and IT infrastructure to stay ahead.
Today started with Kristoff Klockner and Sal Vella covering the devops ideas and then tossing to individual speakers to cover more specifics in 5 minute lightning talks about Mobile, Cloud, Big Data, and of Social Business.
We then met the SMEs in some awesome afternoon tech talk sessions and demos in the dW Live! space ion the expo floor and, of course, we met UrbanCode CEO and Founder Maciej Zawadzki in the Mini-Main tent sessions where he spoke on the topics of: Staying Ahead with a Smarter Approach to DevOps and Going Agile, Growing Agile and Continuously Delivering to Stay Ahead of the Competition
Business innovation is increasingly being delivered via software with rapid pace of market changes driving the need for business agility and providing great customer experience. How can clients establish an enterprise capability for accelerated delivery of software that enables them to seize market opportunities and reduce time to customer feedback, improving governance while balancing quality and cost: this is DevOps strategy and capabilities. The best place to start, other than Innovate is by reviewing the new white paper called "DevOps: The IBM approach." You'll find it enlightening for yourself AND your team!
Walker Royce gave us a quick overview of what DevOps is in this fun one minute promo video for IBM Innovate 2013. As he says, it is a horrible buzzword, but as we've found in today's sessions and keynotes at IBM Innovate (and in the snippets to be shared later), DevOps really is a holistic and critical piece to staying ahead in your business:
*soup to nuts is an American English idiom conveying the meaning of "from beginning to end".
There are three actions I ask people to read through before getting started on a new blog:
Step 1: Deciding if you should be blogging
There are so many different blogs out there, so, before you get started with something new, make sure you can answer yes to the following questions:
Do you have the time to commit to writing at the very least one post/month?
Do you have enough content, or is the subject broad enough, to keep the blog going for the long-term?
Does your target audience really need a new blog? (It’s ok if you’re your target audience. I write a blog for my own benefit, too.)
If you couldn’t answer “yes”, maybe the answer is for you to contribute to an existing blog that deals with the same interests that you have. Consider reaching out to an existing blog author and see if they’d let you contribute a guest post.
Step 2: Naming your blog
This might seem like a really easy step, but in reality it’s pretty difficult. When you're picking a blog name, it's tempting to be really specific about the focus, however, most bloggers who take this route are disappointed after a few posts because the path or breadth of their knowledge changes course. Choose a blog title that has longevity.
Use the following questions to help you get started:
What kind of information will people gain from your blog?
What interest area are you really focusing on?
Which search terms does your target audience use to find the subjects you'll talk about in your blog?
Step 3: Writing blog posts
Now that you've got a name for your blog, you're going to want to start writing. Here is some advice to make your blog posts shine:
Make your opinion known: People like blogs, they like blogs because they are written by people and not corporations. People want to know what people think, crazy as it sounds they want to know what you think. Tell them exactly what you think using the least amount of words possible.
Link like crazy: Support your post with links to other web pages that are contextual to your post.
Write less: Give the maximum amount of information with the least amount of words. Time is finite and people are infinitely busy. Blast your knowledge into the reader at the speed of sound. 250 words is enough. A long post is easier to forget and harder to get into. A short post is the opposite.
Make headlines snappy: Contain your whole argument in your headline. Check out National newspapers to see how they do it.
Include bullet point lists: We all love lists, it structures the info in an easily digestible format.
Make your posts easy to scan: Every few paragraphs insert a sub heading. Make sentences and headlines short and to the point. Images are also helpful.
Be consistent with your style: People like to know what to expect, once you have settled on a style for your audience stick to it.
Litter the post with keywords: Think about what keywords people would use to search for your post and include them in the body text and headers. make sure the keyword placement is natural and does not seem out of place.
Edit your post: Good writing is in the editing. Before you hit the submit button, re-read your post and cut out the stuff that you don’t need.
Keep confidential, confidential: Make sure the information you're sharing is ok for external use. If you're not sure, contact legal and ask or choose a different topic.
Give credit where credit is due: If you're using a different source, make sure you give them credit. For example, this list was created with the help of problogger.net.
These are the tips we share with new bloggers in Rational. What tips do you have for keeping your blog fresh? Any advice on overcoming writer's block?
It should come as no surprise to find out how much more complicated testing an app on a mobile device is than on a desktop. Desktop apps can be complicated sometimes, but typically they are fairly straight forward. This is due to several factors. First, desktops typically have a consistent screen size – this has become a non-issue when developing a desktop application. You only have to worry about one screen that is typically the same size or close the same size. Second, the desktop PC market has been dominated by a very limited set of OSes – specifically Windows, Mac, and Linux. Other vendors have attempted to make inroads into this market, to no avail.
Whereas on mobile, it is 10 times more complicated. You have different OSes including iOS, Android, Windows Mobile, BlackBerry, and now Mozilla. Plus you have different screen sizes that must be considered from 3.4” all the way up to 19” or even 47” if you include TV with apps support such as the latest Samsung TV’s.
Jason Tee of TheServerSide.com recently discussed this topic in a blog post. He states that “It's not an exaggeration to say that testing is the number one area where mobile ALM (Application Lifecycle Management) is several orders of magnitude more complex than traditional ALM. The recent Mobile Application Development Primer whitepaper from IBM describes just a few of the factors that come into play. "The same model of device may function in a subtly different way when connected to a different carrier network. Also, the quality of the network connection can have a profound impact on the behavior of a mobile application. Even the movement of the mobile device itself may be an important factor in the behavior of the application."
This means the enterprise must be prepared to use every trick in the book including simulators, emulators, device-cloud testing with hardware, and/or automated testing made available as a resource on a consumption based billing model.”
Tools like these make it easier to perform any test of any mobile app, and to do it from anywhere in the world. It is why testing on mobile apps has become such a critical part of any app development process. And it is why we are starting to see many enterprise Fortune 2000 organizations develop their apps with a ‘mobile first’ strategy. We will cover this strategy in a future post.
Sometimes I wish I had a crystal ball so I could see what you want to read on developerWorks. But I don’t, so I turned to what I do have: History. I went through all of the reports and identified the 12 most popular articles in 2012. I chose twelve articles because, well, it was 2012, although I don’t think I’ll use the same method in 2050. In this instance, history didn’t prove very helpful. Perhaps it’s because there are, on average 590,000 of you who visit our site monthly. Or because we published 139 articles, which gave you a wide variety to choose from.
So, given that I don’t have a crystal ball and history isn’t showing trends, I’m going to the source. You. What would you like to see published on the developerWorks Rational site this year? Be sure to post your requests in the comments section. While you’re thinking about that question, take a look at the top 12 articles published in 2012.
Sequence diagrams play a key role in documentation. These diagrams easily depict the flow, interaction among objects, and message communication. Bala Subramanaian Vetrivel describes how to generate sequence diagrams for Java projects by using IBM® Rational® Software Architect for WebSphere Software, Version 7.5.4. He also explains the limitations of sequence diagrams that cannot be edited, the need for generating editable sequence diagrams, and steps to generate editable diagrams.
This series of articles about the importance of documenting methods focuses on integrating Rational® Method Composer with Rational Team Concert™, which is based on Jazz™ technology. Part 1 explained the value of an integrated approach, and the subsequent articles use sample scenarios to describe how organizations use these integrated tools. Part 2 described how a team used a process included in Rational Method Composer, and Part 3 covered how they extended the process description to accommodate new process needs and then automated that process in Rational Team Concert. In this article, Part 4, Ricardo Balduino describes how the team starts with and then adapts existing practices from Rational Method Composer and creates a new process template in Rational Team Concert to get the team started and to run the project.
IBM Rational Software Architect Version 8.5 introduces technology support for Spring, Hibernate, Struts, and Java 7, and makes adoption easier by providing a Microsoft Visio import option. This new version also includes the Design Manager Version 4 beta, which introduces simplified team working and improves reuse. Steve Arnold describes these and other highlights of this release.
The Open Group Architecture Framework (TOGAF) and its modeling language, ArchiMate, are increasingly popular techniques for documenting and evolving the architecture of an enterprise. Several tools, including Rational® System Architect support them. However, ArchiMate lacks the elements needed to describe the nonfunctional aspects of the enterprise, thereby limiting the usefulness of the resulting enterprise architecture in environments, such as cloud, where service levels are primary business requirements. Fabrio Castiglioni and Francesco Pedullá show how to extend the ArchiMate metamodel to build a nonfunctional model extension that goes from business to technical architecture. They also provide a simple customization to download, so that you can use the new metamodel extension in Rational System Architect.
The term "return on investment" (ROI) is frequently used to describe the benefit derived from investments in software and systems or other business investments. To better align software and systems investments, there are different kinds of ROI answers to different business questions: Have we received a good return on the investments to date? Should we continue to invest in the project? What will be the total ROI over the life of the software or system? Murray Cantor provides the different ROI calculations to answer these questions.
Businesses with SAP environments that need to adapt to changing needs quickly will benefit from an open, extensible ALM (application lifecycle management) platform that is based on industry standards. With tools that scale existing processes, reduce costs, and use a quality-based approach, you will meet business objectives efficiently, too. Bernd Eberhardt explains how and why integrating SAP's Solution Manager with Rational ALM applications optimizes deployment for SAP and non-SAP projects.
Since the mid-1990s, enterprise architecture has been evolving as an independent design discipline in the area between strategy and architecture. Although interest has been growing in recent years, the discipline is still considered immature, and many enterprises remain ambivalent or skeptical. Jan Gravesen discusses the considerable value that enterprise architecture can bring and how it can be successfully implemented to overcome much of that organizational skepticism.
When we think of computer resources in the cloud, we usually think of public clouds, such as the ones offered by Google or Amazon, with infrastructure or applications shared by millions of clients worldwide, through the Internet. Some organizations, because of their organizational cultures or for security or regulatory concerns, cannot move directly into public clouds, but they have the option of private clouds. Sandra Sergi Santos explains the advantages and ways to use them to optimize your investments, processes, and infrastructure.
IBM PureSystems: A game changer in the development, deployment, and management of IT applications By Steve Abrams, Distinguished Engineer and Chief Cloud Architect, IBM, and Timothy Hahn, Distinguished Engineer, Chief Architect for Enterprise Tools, IBM
IBM® PureSystems™ is the first offering in a brand new system category from IBM — a new class of systems known as "Expert Integrated Systems." The technology is designed to get IT organizations up and running in as little as four hours, cutting months off the time required to deploy new applications. PureSystems combines the flexibility of a general-purpose system, the elasticity of the cloud, and the simplicity of an appliance. This introduction by Steve Abrams and Timothy Hahn explains further and describes how application development tools and the Rational solution for Collaborative Lifecycle Management (CLM) complement PureSystems to provide a streamlined application development, test, and production environment.
Continuous integration in agile development: How agile methods, continuous integration, and test-driven enhance design and development of complex systems By Martin R. Bakal, Worldwide Offering Manager, Electronics Industry, IBM
Martin Bakal explores how agile development, continuous integration (CI), and test-driven development (TDD) techniques can be employed in embedded software development. When applied as part of an architecture-based approach, these combined practices provide both high quality and project flexibility.
IBM® Rational® Rhapsody® 8.0 and Rational Rhapsody Design Manager 4.0 provide simplified design collaboration with new systems engineering workflow with a Jazz technology-based database repository that unifies requirements and design. Paul Urban also gives you highlights of other additions or enhancements: A single source of truth based on OSLC integration; reference workflow with certificate from the TÜV SÜD for development under ISO 26262 Road Vehicles Functional Safety and IEC 61508 Functional Safety standards; enhanced user experience and productivity with solution-focused guidance to assist new users; updates for UPDM 2.0, SysML 1.3, and AUTOSAR 4.0 and 3.2; improvements for usability and performance improving systems engineering workflows and agile embedded and real-time software development. These new versions also add many usability enhancements and improvements for systems engineering and safety-critical development.
It's hard to deliver on the agile principle of "done, done, done" for complex, heterogeneous systems. Monica Luke explains how service virtualization can improve team collaboration and align the independent test organization's focus on the same milestone as the development team.
Create and use Web services and RESTful services in CICS, Part 2: CICS Atom support as RESTful service
This is a second installment in a series of posts that introduces Web services and RESTful services development in IBM's Customer Information Control System (CICS). In Part 1, we went through an introduction to Web Services and REST services, so we will continue here with looking at more details of how CICS implements RESTful access through Atom.
First, it is worth noting that Atom is both a protocol and an XML format for providing content "feeds" on the Web. In other words, an "Atom feed" is a web feed provided using the Atom protocol and format. This provision of updated content is known as "syndicating" a web feed. Web users can subscribe to a syndicated feed that allows them to see new content as soon as it is available.
CICS first introduced Atom protocol support in Transaction Server version 4.1
In a CICS system, the provided implementation for Atom resources can access and "feed" content to and from Files, TS queues and application programs.
The following graphic shows, on a conceptual level, relationship between various components of the CICS runtime environment that participate in the Atom-based resource access.
Don't worry if some of the things on this diagram look puzzling or unfamiliar. The important part is, CICS can act as an HTTP endpoint that receives a REST request through its TCPIPSERVICE component. Based on the information in the URI, CICS matches the request to an ATOMSERVICE component, which in turn accesses the target resources (TS Queue, File, or Program).
In future posts we will go through additional details of each of the CICS system components. We will also look at tools and methods of developing and setting up a CICS system and developing some test clients that can access CICS Atom feeds provided by a COBOL program.
Gary Mazo is a Senior Software Engineer with IBM Rational Developer for System z (RDz). Gary joined IBM in 1987, and spent 10 years developing compilers and compiler tools. Lately, Gary has been actively involved in creating service-oriented architecture (SOA) tools for RDz. He holds 6 software patents and enjoys tinkering with all things related to software and hardware.
A first step in mainframe application modernization is to equip development teams with a modern development environment.
Enter IBM Rational’s Integrated Solution for System z Development (ISDz). The tools included in this solution offer a flexible, integrated development environment, automated features, asset visualization, and ease of use. They boost the productivity of developers, lower development costs, and make it easier for mainframe and distributed development teams to collaborate.
All technology and tool change can be disruptive, but change in the mainframe environment presents some unique challenges. Tool changes alter complicated development infrastructures and practices that were refined, often literally, over decades. Mainframe developers can face a steep learning curve as they attempt to unlearn now nearly automatic, “green screen” taskflows, recast their work in the new environment, and broaden their development capabilities.
These challenges are far from insurmountable, but they require organizations to take a strategic approach to learning and the solution adoption effort.
Change is disruptive
You can plot the course of a typical solution adoption effort in terms of time and productivity.
When adopting new tools, a development team experiences a temporary dip in productivity as their focus gets divided between work and learning new skills (A). As developers acquire the new skills and put them to work, they realize the benefits of the solution (B). As changes and opportunities arise (perhaps a new tool release, or unforeseen problems as processes change), the organization works to maintain productivity over the long term (C) to maximize the return on their initial investment.
The goals of the adoption effort are to reduce time in periods A and B, and to maximize gains in productivity in periods B and C, while avoiding derailment of the effort at any of these stages.
From a learning solutions perspective, the productivity graph like this:
Learning through the change isaccelerated with training and performance support. Learning is not a single event, and these approaches are not mutually exclusive. But these two approaches come to dominate at different stages in the process, based on the changing needs of the learner.
Training means instruction, structured hands-on learning in interactive events. Working with a coach or instructor is most efficient for the new user adapting to a fundamental change in practice. Training takes a tutorial approach, allowing the user to assimilate new skills incrementally. But training needs to become more self-directed over time. As the productivity curve rises into period B, the training approach tapers off into mentoring.
Performance support then comes to the fore. Performance support is learning that the user accesses in their day to day project workflow. The most familiar examples of performance support in software include online contextual Help, cheat sheets, tooltips, reference aids, video demonstrations, and so on. Experts and social networks (of the kind you find here on developerWorks, or on Jazz.net) serve a crucial performance support function as well.
Let’s explore these approaches and consider the case of mainframe solution adoption more closely.
Developer training events are cited time and again as being pivotal in successful ISDz adoption efforts. When using these tools for the first time, training provides the most efficient way to build foundational skills, share effective practices, and motivate process change. Although limited in scope—training amounts to little more than 25% of a successful rollout effort—a small, strategic investment in training pays dividends throughout the life of the solution.
The ISDz tools, such as Rational Developer for System z, are designed to make use of some of the intricate skills mainframe developers already possess, but most of the efficiencies and automation these solutions provide involve new, unfamiliar practices. Taking time out to learn these practices with experts and peers in a focused training event is more efficient for the mainframe practitioner and presents fewer risks of failure than self-study.
In order to be successful, training programs should be:
Tailored to the environment: Since the mainframe environment is usually tailored for the enterprise, each organization typically has its own usage model and development conventions for the ISDz tools. Training should incorporate some of the developer’s own artifacts and these conventions.
Focused on performance: Focus the learning on the application development and maintenance activities developers perform every day. At the same time, activities need to be simpler than real life so that participants can focus the effort on building new skills instead of on the complexity of the problem domain.
Learner centered: Training needs to be engaging for the learner, offering hands-on practice and group workshops. Foundational concepts and demonstration are provided just to provide context for each applied activity.
However important training may be in a rollout effort, learning is not a single event. We use training to transfer essential skills and set a foundation for learning and practice, not to try to serve up everything a user needs to know. The classic Ebbenhaus Forgetting Curve, demonstrating the exponential nature of forgetting, is a potent reminder that an all-in training event by itself is an incomplete enablement strategy.
The training approach itself becomes less useful as developer skill levels rise. When applying the tools on the job, learning needs to be more individualized and self-motivated. The learning challenges in the workflow are also more problem-focused than skills focused. On-demand learning resources are needed that help with the following activities:
Applying the tool: Reviewing skills learned in training, or applying skills in a new project situation.
Solving problems: When a process doesn’t work the way the user thinks it should, or where the user is blocked by an emerging problem.
Dealing with change: Adapting to a new tool release, adopting new development technologies, or changing configurations and usage models.
During the rollout effort, early adopters, administrators, and other specialists emerge from the team as experts who can help with problem-solving, forming an informal “center of excellence” within the organization. At the same time, developers can turn to social networks, such as IBM developerWorks, to find answers in learning communities like the Rational Cafés.
Work of all kinds is becoming faster-paced, more automated, more distributed, and more agile. The need to control costs in change processes is part of this new normal. Given these challenges, it is essential to take a strategic approach to transforming development organizations, bringing together the right formal training and on-demand resources to reduce time to value and ensure maximum productivity for your tool investment.