Skip to main content

Comment lines: Tony Efremenko: A key ingredient for a more agile team is professional certification

Tony Efremenko (tonye1@us.ibm.com), Certified Master IT Specialist, IBM, Software Group
Tony Efremenko photo
Tony Efremenko is a Certified Master IT Specialist with IBM, with over 24 years of experience in the software industry.

Summary:  Agile development is good, is used at IBM®, and works best when everyone adheres to the guidelines and values set forth by professional certifications. Want to make agile development even better? Get certified! This content is part of the IBM WebSphere Developer Technical Journal.

Date:  20 May 2009
Level:  Introductory
Activity:  1060 views

Why (and how) to be more agile

Pressure to make IT efficient is nothing new. Technology changes fast, as does the economic climate. With initiatives in Service Oriented Architecture (SOA), Software as a Service (SAAS), cloud computing, and Web 2.0 changing the technology landscape, not to mention constant business pressure to make changes, it’s hard to keep up. Each of us is working hard trying to maximize our value, but it can often be difficult to understand where to focus.

For most of us, this means concentrating on approaches that work. If the technologies are new, and if the team is new, and if the team is global, then you need an effective way to approach the development and testing of new software applications that everyone can agree on and understand, regardless of backgrounds or culture.

Of course, at its core, software development is a human activity. I believe that the way in which smart people interact with and contribute to a team is often more important than the technology being regarded. There are a lot of technology options to choose from that can bring success, but the dynamics of the people in an organization are paramount. Many of us agree that the agile development methodology provides the framework that recognizes and leverages these principles.

You are probably aware of agile development, since it has received a lot of attention lately. Especially in today’s business climate, development teams everywhere are required to deliver successful software solutions on time and with efficient use of resources. Agile software methodology, with its emphasis on building a software product through short cycles of development and testing, is a good fit for today’s typical development environment.

My experience with agile development has led me to believe that there is a key ingredient that makes agile processes work most effectively, and that is having team members who have adopted the principles of professional certification, as described by professional standards groups like the Open Group. Adhering to recognized and established standards of a profession, professional certification emphasizes the types of personal behaviors -- “people factors” -- that fit in so well in an agile environment. After all, it’s people and how they work together that can really make or break a project, and holding teams to professional standards complements everything that is required to make agile development successful. Professional certification can also offer career advancement guidance in what might otherwise be a flat organization. Of course, it's possible that you are already following the principles described by professional certification and acting on the requirements; if so, it makes sense to validate and document your experience by pursuing and achieveing your certification.

In this article, I will discuss agile initiatives, share some of my experiences with them, and describe some of the challenges that can occur using agile methodologies in a large environment. I also want to explain what I mean by professional certification, tell you about some certification initiatives, and tell you how I think individuals with professional certifications can make a big difference in an agile environment.


Agile development, defined

You might already know that agile development is defined as software development that adheres to the principles described by the Agile Manifesto, which values:

  • Individuals and interactions over process and tools.
  • Working software over comprehensive documentation.
  • Customer collaboration over contract negotiation.
  • Responding to change over following a plan.

The goal is to improve software development by providing a focus on working, tested code, created by short iterations of coding and testing. In agile methodology, sprints are the short duration (usually two weeks) goals of the project, and daily scrums are meetings used to communicate the changes and collaborate among the teams. Through an ongoing series of these activities, the application is ratcheted up until the finished solution is ready for delivery.

Agile development is attractive because it encapsulates concepts that are known to actually work, as opposed to a religious adherence to a "waterfall" project plan, where success is best achieved when all requirements and specifications are known and clarified in the analysis phase of the project. More often than not, requirements will evolve over the life of the project, if for no other reason than the time it takes to deliver a project often exceeds the time businesses need to make changes. Recognizing this fact is just one of the reasons agile methodology is so welcome.

Because teams are involved in the decision making and have short timelines for delivery, agile development encourages re-use of assets. With the client involved in the decision making, they have a stake in the product as it is delivered. The scrum meetings institutionalize communication and collaboration as a means of nurturing the solution and building the skills of the entire team.

Challenges of agile development

Just because agile development is a good idea doesn’t mean it’s always easy. In the past, other methodologies were favored for a reason. The waterfall approach, for example, prepared software in assembly line fashion though the analysis, development, testing, and implementation phases of the project, allowing for specialization in each phase. Analysts could specialize in requirements-gathering, developers could focus on the code, testers and quality control specialists could evaluate the product, and operations could focus on the implementation. Doing things in this way provided some efficiency for environments that were organized into such specialties. The waterfall approach also stressed client interaction at the beginning and end of each phase of delivery.

In agile development, roles overlap more. Developers meet with clients, testers talk to developers, and so on. This works well for those who embrace the breadth of skills and activities required, but it can be a struggle for some. On one project, for example, team members took Myers-Briggs personality tests to identify the best ways for people to work together. Ironically, the findings indicated that most team members drew their personal motivation from working alone, and that interaction with others was considered a drain on their creative energy. In other words, many developers “just wanted to code” and preferred to avoid the client interaction that drove the requirements gathering and business discussions.

Certainly, a focus on technology is not a bad trait for a software developer, but it can be limiting for someone in a client-facing analyst role. It can also be a problem if the discrete focus on technical work leaves a team member unaware of the business reasons driving the project.

Because “being agile” means that the requirements can change along with the iteration cycles, and because there are many such cycles, it can be a challenge to judge how the project is progressing in these environments. For example, you might need to know: Does Iteration 3 of the sprint mean the project is 60% complete, or 80% complete?, or What is the impact of the latest modification to the requirements?, and What does it all mean with regards to budget? These important types of assessments can be made with agile development, but it’s a different way of thinking than you might be used to with waterfall methodologies.

Finally, what if geography separates the team? How do you work closely with a developer in India, a tester in Brazil, and a business expert in Germany? Effective collaboration technology is one more must-have if all of these folks are going to work well together.

Agile development at IBM

Agile development has been in use at IBM for several years now. There are a number IBM Web sites devoted to the process, and many articles that refer to it (see Resources). Personally, I have worked on a number of internal projects using agile development, and I have used agile methodologies in general since 2007. As a supporter of agile development, IBM continues to contribute to the evolution of agile culture: The IBM Rational® Unified Process now uses agile processes, many of IBM’s internal processes focus on collaboration and re-use of assets, and many approaches describe the use of business modeling with the client to improve buy-in and understanding. IBM has even begun to institutionalize these concepts in its tools. IBM Rational has announced the Jazz™ platform and IBM Rational Team Concert, in which collaboration tools are directly embedded. Internally, IBM supports a number of collaboration tools like IBM Lotus® Sametime® and Beehive social networking, and encourages asset re-use through initiatives that encourage evaluation and discussion.


Professional certification, explained

The idea of professional certification, which assures a specific and consistent standard of quality in skilled and experienced people, was embraced long ago by IBM in response to clients' demand for highly skilled experts to perform services engagements. As we say, people perform a “job,” but they manage their aspirations through their career development, which is verified by the profession they choose.

IBM recognizes professional certifications in four areas: IT Architecture, IT Specialist, IT Consultant, and Project Management. IT Architect and IT Specialist are also recognized by the Open Group, a vendor- and technology-neutral consortium focused on open standards and global interoperability. The criteria for certification is encompassed in a certification package, prepared by the candidate, that requires the demonstration of skill and experience in these areas:

  • Client focus
  • Technical focus (specialties)
  • Continuing education
  • Giveback (including patents, publishing, and presentations, with particular emphasis on mentoring)
  • Project profiles (in which the candidate describes how the above was used)

After completing the certification package, the candidate is interviewed by three currently certified practitioners. In the end, if the candidate meets the criteria, the candidate is awarded certification.

Professional certification is a lengthy, serious process that validates these important behaviors. When I review certification packages, I look for a disciplined approach to the profession using the best methodologies available. In my mind, it’s not sufficient that a candidate is technically astute; I want to know that a candidate continues to educate himself, uses a methodology to approach problems, and seeks to give what he has learned back to the community.

Professional certification is not to be confused with product certification, in which an individual is tested on skills for a specific product or technology. In contrast, professional certification takes into account a candidate’s entire career, not just a focus on one specific product. Product and technology certifications are an important part of the professional certification, as it is understood that product certifications offer a demonstrated technical expertise in a given area, which is important to clients, and so affects the value of professional.


Why professional certification is helpful for agile development

The client business and collaboration activities required for agile development are reflected in the fundamental core values for professional certification. Professional certification sets the expectation that these elements are important, and provides a disciplined framework for an individual to demonstrate that he possesses those values.

For example, if one developer prefers just to code and not collaborate with a business analyst, another developer who has (or is seeking) a professional certification would proactively pursue such interaction, since activities of this nature are required by professional standards.

Professional certification also encourages the use of successful methodologies, software frameworks, and re-use of assets. A certified professional must keep his related education up-to-date and be able to demonstrate the application of new skills. This emphasis away from “re-inventing the wheel” meshes particularly well with the agile approach.

While the emphasis of agile development is on tested software delivery, other aspects of that delivery are still important, even if they’re not the focus. Professional certification guidelines dictate that you must invest back into the process though such activities as mentoring, producing intellectual captial (for example, publishing), inventing (that is, producing patents), and other tasks as applicable to grow the skills and abilities of the team, and the profession. This helps to ensure that process-related deliverables don’t get left out of the mix.

Finally, professional certification also provides a developmental roadmap that can be used to model an individual's career path. Certification in itself is evidence of professional growth, and is often considered as criteria for promotion.


What now?

Agile processes represent a great and practical application of best practices in software development, and have led to successes in many industries and companies (including IBM). I believe professional certification provides the key ingredient to making agile development the most effective it can be by requiring the kind of professional behavior and integrity that drives the agile methodology.

I hope this article encourages you to consider using agile processes for your software development projects, understanding that it will probably require some adjustment to how you are accustomed to viewing some project roles. I also hope that you can see how professional certification can make the move to agile development easier, enhance your career, and help your team succeed.


Resources

Learn

Discuss

About the author

Tony Efremenko photo

Tony Efremenko is a Certified Master IT Specialist with IBM, with over 24 years of experience in the software industry.

Comments (Undergoing maintenance)



Trademarks  |  My developerWorks terms and conditions

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=WebSphere, Rational
ArticleID=389794
ArticleTitle=Comment lines: Tony Efremenko: A key ingredient for a more agile team is professional certification
publish-date=05202009
author1-email=tonye1@us.ibm.com
author1-email-cc=

My developerWorks community

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere).

My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Special offers