DevX Skillbuilding for IBM DeveloperWorks
DevX Skillbuilding for IBM DeveloperWorks
DevX Skillbuilding for IBM DeveloperWorks
Get regular email alerts when we publish new features!
DevX Update for IBM developerWorks

More Newsletters
 Print Print

Evolution of Developer Skills Is Essential for Job Survival

Your development skills need to evolve away from 3GL, toward modeling and more abstract development methodologies, if you plan to survive the disruptive forces reshaping the software industry. 


More Resources
  • Try IBM Rational Software Architect
  • IBM Software Delivery Platform V7 Desktop Products
  • Webcast: Scaling the Business of Global Architecture and Design
  • Article: Find the Right IBM Rational Analysis Design and Construction Tools for Your Project
  • IBM Rational Software Quality Solutions
  • If the bulk of your programming tasks involve using a 3GL language such as Java, C/C++, etc. you might not want to get too comfortable or complacent about your future employment opportunities. In case you haven't noticed, the software industry is being transformed through a combination of evolving technologies, geophysical influences, and shifts in economic focus.

    As it evolves, the software industry is becoming unrecognizable to those of us who have grown up under its influence. Though the changes are gradual, they are unstoppable. The following combination of disruptive forces will persevere for the next 6-8 years and ultimately require you to have different job skills than those you have today—if you plan to survive the changing software landscape:

    1. Outsourcing, open source, and free IDEs have turned programming skills into a commodity allowing shifting the talent pool to countries where software development is accomplished at a fraction of US developer salaries.
    2. Traditional, inflexible software business models compete against more efficient open source sales and marketing models compelling businesses to seek alternative, more agile, and cost effective development solutions and methodologies to stay competitive.
    3. Service-oriented architectures (SOA) are revolutionizing how applications are built and deployed, driving the growth of a new industry utilizing seamless integration of applications and content in the form of reusable components that can be productized quickly as services. SOA also enables faster development of personalized, richer, and more flexible applications.
    4. Companies are turning away from best-of-breed products in favor of products that are "good enough to do the job" reducing demand for high-priced software experts and elitists.
    5. Demand for lower cost business applications, shorter product cycles, and simpler, more manageable software infrastructures is fueling outsourcing as well as a movement toward more sophisticated and abstract development methodologies and paradigms that do a better job of supporting rapidly changing business requirements.
    6. Maturation of the software industry means slower growth rates and increasing concerns that traditional profit margins may not be sustainable.
    7. Prolonged sales cycles, complicated licensing terms, and purchase processes do little to promote customer loyalty.

    Furthermore, many software companies are still not focusing on technology innovation and next generation technologies to improve their customers' experiences or to stay competitive. Instead, they endorse the use of traditional languages to add even more features to aging or antiquated applications in an attempt to lock in existing customers. As more features are added to complex, already bloated software systems, the applications become more expensive to upgrade and maintain. This drives up software prices and/or negatively impacts corporate revenue, forcing companies to seek cheaper development costs offshore, further reducing or eliminating development jobs.

    Without shifting to newer, more automated technologies—and without using more abstract methodologies to refine and update business rules and logic that can then be used as software services—companies will be unable to sustain their outdated business revenue models or provide you with continued employment.

    Time for New and More Efficient Development Solutions
    Don't misunderstand. As the software industry reinvents itself, software development is not going away—it is evolving into something far different than mainstream coding. Software will still be the basis of new solutions that efficiently meet specific needs of businesses, vendors, and customers. But achieving this goal and remaining competitive requires new architectures, new business models and a different and far more efficient approach to development than pure Java or C/C++.

    In fact more agile companies are already providing better, customized software implementations by employing SOA. SOA and business models that deliver software as a service will ultimately replace most traditional forms of applications and redefine what we consider to be best of breed solutions since SOA enables small and mid-size companies to compete as effectively as large ones. As large companies weave SOA into their application directives, small and mid-size companies can collaborate with large vendors and businesses by creating services components that can easily plug into other companies' services. In this way best of breed solutions are likely to become a set of components from several different providers customized to meet specific customer or business requirements.

    More importantly, software services are easier and faster to generate than massive inline coded software systems. They are easier to maintain and reuse reducing software development costs and time to market. It is no wonder many industry experts expect that companies engaged in SOA development may be less likely to ship development projects offshore in the near future.

    Remodeling Your Future
    Surviving the software evolution requires you and your company to rethink your software development strategies. One of the best development solutions for generating SOA along with the next generation of applications is modeling and abstract development methodologies.

    SOA helps companies free up the resources needed to create new services without increasing manpower or development costs. However, you can't achieve the full promise of SOA without using modeling or abstract development methodology. 3GL programming languages are not well aligned with stand-alone business logic and business rules. The code itself is more difficult to find and read than business language. After a few rounds of urgent or late-night bug or maintenance fixes, even the best top down or modularly written 3GL programs tend to evolve into a mass of spaghetti code. As a result it becomes difficult to find, extract, modify, utilize, and store the business logic that functions as services components from 3GL programs.

    For SOA to be effective, the components must be modular, easily interoperable with other components, and reusable. The more you can abstract or automate the creation of these components the more easily you can take advantage of SOA and create business services.

    State of the art modeling tools such as IBM Rational Software Architect puts all the development methodologies you and your development team need to develop SOA solutions at your fingertips. A variety levels of modeling are supported in this product and are a part of the traditional tools you already use as an Eclipse-based developer. You can adopt the right level of modeling for your current needs starting with code visualization and visual editing and gradually transition to more robust applications of the unified modeling language (UML) over time.

    Modeling allows you to work at higher levels of abstraction and generates reusable code so your overall cost of development, deployment, and maintenance is significantly lowered and your customers actually get what they asked for. It encourages and enables the creation of domain-specific areas of expertise letting your company bring in the right people to work on domain specific tasks at the right time. This not only helps contain development costs, but also allows you, your managers, and the rest of the development team to understand the appropriate level of detail for each stage of development.

    Since each software project begins with a set of requirements, which are, ideally, modeled and tested before being coded, the overall quality of the code that is eventually produced is significantly higher than manually generated 3GL code. Better technical quality means fewer software defects, shorter release cycles, and lower development and support costs. It also supports better risk management and governance compliance.

    Out of all the best of breed modeling tools on the market, IBM Rational Software Architect is designed to serve the needs of both the mainstream "developer" and the evolving needs of the software "architect" allowing both groups to easily work together sharing skills and exchanging knowledge about each others roles and responsibilities. Using these modeling tools not only helps your company succeed with SOA and other newer software directives, it enables you to work with business architects—and as a business architect. You still do technical development using these tools, but work at higher levels of abstraction.

    Today, in your role as a developer, you probably have different values than business architects. Since architects model and do not write code, modeling tools teach you to work and think like an architect. Consequently, if you so choose, this type of development methodology opens up opportunities for you to become a business-oriented, subject matter expert in the specific business for which you were hired to develop a software system. This can only help you improve your business expertise and increase your overall value to your organization.

    In time modeling tools will incorporate improved and more intuitive support and interfaces, higher-levels of abstraction, and even higher degrees of automation. As a result, you will find you are able to focus less time on implementation technology and more time on developing core business solutions. As the software industry transforms itself into more of a business and less of an engineering discipline, modeling, abstract development and acquired business-specific skills will enable you to become a more valuable resource to your company—thereby ensuring you far more job security and marketability than you probably have today.

    So give modeling some serious consideration and learn how to use these tools to improve your overall productivity and value to your employer. Your future depends on it.

       
    Rikki Kirzner is a freelance writer and veteran computer industry professional with experience as an analyst and former Research Director for IDC, Gartner Group, and Meta Group and as a Senior Editor with Open Computing Magazine. Rikki covers software, development, open source, SOA, and mobile computing.
    Submit article to:
    Featured Resources from IBM