Wednesday, 12 August 2015

Competing in a digital world: Four lessons from the software industry

About 20 years ago, software’s use within organizations was largely confined to big transactional systems in the data center. Now, it underpins nearly every function in every industry. Software spending has grown accordingly, jumping from 32 percent of total corporate IT investment in 1990 to almost 60 percent in 2011.1
The allure is plain. On the front end, software-enhanced products and services can lead to entirely new offerings—for example, turning an ordinary running shoe into one that also tracks your mileage. And as the surge in social technologies shows, software permits a host of new marketing and communications channels that consumers have been quick to embrace. The back-end benefits are equally compelling. Greater automation, integration, and standardization can lower cost and boost performance significantly, while social enterprise tools can facilitate collaboration and provide greater agility.
The strategic as well as operational challenge is that software is not static. Many have come to think of it like electricity—something that can be wired in and mostly forgotten about.2 But software and the processes and applications it touches are, in fact, constantly changing.
That reality introduces new competitive dynamics. Managers have to worry about competitors leapfrogging them with ever-faster cycle times, courtesy of such software-enabled techniques as rapid prototyping and real-time testing. They must also be mindful of network effects, since customers can become accustomed to working with a certain platform and be slow to switch. That can be good news for incumbents but a major barrier for those trying to break into a certain category. Another challenge is that an organization may be swimming in data but exploiting only a fraction of available information.


To effectively respond to these new dynamics, companies must begin thinking about ways to broaden their ecosystems and revenue streams while becoming more responsive and agile. These are issues that software providers have been addressing for a number of years. Given the increasing importance of software for almost every company’s performance, executives in all industries should consider how software may fundamentally change their businesses. Managers would do well to study leading software-industry players and discuss a set of questions to understand whether and how they can learn from the business and operating models that these companies employ. The answers will vary for different industries and companies, but we believe the exercise is a useful step toward making the most of large and rising software investments. (For more on a new management model already being adopted by executives, see sidebar “The right role for IT.”)

1. Moving from products to platforms

Success in the software industry has long been influenced, and often driven, by the ecosystem of developers, plug-ins, software-development kits and application-programming interfaces (APIs),3 and add-ons that drive added value and increase stickiness for products. Similarly, companies in other industries need to think expansively and include upstream suppliers as well as downstream vendors or consumers, and focus on how each part of the value chain integrates into the new platform. Many companies still stick to the business models of the past, where product development is almost exclusively an in-house activity and kept under strict control. But some, like consumer-goods giant P&G, have flung their doors open to include a wide range of partners in developing and tailoring the next big thing. Instead of “not invented here,” the mind-set is shifting to “proudly found elsewhere.” P&G, for instance, launched a “connect and develop” platform that has secured more than 1,000 partner agreements on innovation.
By opening innovation processes to outside voices, organizations not only gain a broader range of perspectives to enrich the innovation gene pool, they also gain valuable scale—more resources at a fraction of the price. And it’s not just the front end that stands to gain: greater connectivity with suppliers and buyers can be a win-win situation when it comes to managing inventory, budgeting and forecasting, allowing organizations to access better—and more—real-time data, and refining production and supply-chain processes on the spot. In a McKinsey Quarterly interview,4 Bob McDonald, P&G’s CEO, said his organization looks to increase integration with retail partners because “getting the data becomes part of the currency of the relationship.” In some cases, P&G is even using its scale “to bring state-of-the-art technology to retailers that otherwise can’t afford it.”
Question:What new opportunities are unlocked if we move from products to platforms?
  • What is our industry equivalent of an API that will encourage involvement and increased interaction across the ecosystem (including suppliers, partners, vendors, and users)?
  • How can we align the different parts of the ecosystem to adopt more points of integration?
  • Of the new value that is created with this integration, how are the gains shared across members of the ecosystem? What are the critical control points that we must own to protect our position and maximize rents?
  • How can we create a cadre of evangelists (internally and externally) to encourage the adoption of our platform?

2. Accelerating revenue by creating new business models

Software and Internet companies have developed multiple avenues to generate revenue, going beyond a simple licensing model. Companies like LinkedIn and Skype have thrived using the “freemium” model. Both cultivated a large base of users with their basic, no-cost platform, and then introduced several paid-for options, ranging from recruiting services and tiered access and networking privileges in the case of LinkedIn and landline calling in the case of Skype. They were able to tap an audience that was loyal to their brand to boost revenues. Other revenue models include using as-a-service and consumption-based pricing5 and creating new integrated services.
Innovative companies in other industries are experimenting with ways to combine products, services, and data to create entirely new businesses—often with software playing a critical role in knitting together or enabling these new models. Industries from manufacturing to consumer goods have stitched information assets into their traditional product offerings and have come away redefining the category and raising the bar for competitors. Nike took this approach with one of its shoe lines. It created Nike+, a sensor compatible with Apple iOS devices (for instance, the iPod or iPhone), to be used with its running shoes. The sensor allows the wearer to track mileage and running habits and upload data onto a Web site to manage workouts, connect with fellow runners, and share routes. The line not only launched a profitable new revenue stream but also helped boost Nike’s market share and created a community of highly engaged users.
In addition to creating new revenue streams by amping up traditional product and service offerings, organizations have been mining “exhaust data”—information that is a by-product of normal business operations—for use in developing new products. Such by-products, for instance, allow credit-card companies to monetize transactional data from cardholders by analyzing and selling these data to merchants. Similarly, Intuit is beginning to use data amassed from its QuickBooks software to provide new benchmarking and reporting services for small businesses.
Question:What business model could we borrow from the software industry to accelerate adoption?
  • How do we trade off one-time revenues (for example, a license fee or outright sale) to capture recurring subscription revenues?
  • What is the real lifetime value of our customers, and how does this change our approach to setting prices?
  • Are our internal systems able to handle these shifts? Are incentives in our organization (especially in the sales force and channels) in place to make the right trade-off?
  • What are the ancillary assets our company has (for example, brands or data), and how could we deploy them without harming our core business?

3. Accelerating cycle time and cocreating with customers

Empowered by constant connectivity, the rise of social networks, and an increasing amount of software in products, companies are seeing new options in the way they interact with customers and develop and release products. They are speeding up cycle times and shortening learning curves by testing new products or ideas with consumers using mockups, computer-generated virtual products, and simulations.
The software world was one of the first to roll out new products before all the planned features and capabilities were built. It started with a basic model, or minimum viable product,6 that customers could upgrade over the life of the product with just a few clicks. New features were introduced when ready rather than stalling the base product launch. This allowed companies to get to market faster, enable new features (or fix bugs), and improve their ability to respond to competitors’ changes. Apple launched its first iPhone, for instance, without an app store or the ability to add new applications. It added those features in a software update one year later.
Other industries are learning from this example. Many digital cameras, for instance, can receive firmware upgrades to fix bugs or enable new capabilities. But this is not just a phenomenon for digital gadgets. In early 2012, Ford released an upgrade for its Sync communications and entertainment system7 by mailing USB keys to customers eligible for an upgrade. No dealer visit is required.
Crowdsourcing is an example of cocreation: companies use social tools to engage customers or partners in solving problems, which reinforces engagement and a sense of community in the process. For instance, Coca-Cola used crowdsourcing to develop new designs for bottle crates in Germany and marketing ideas for Coke Zero in Singapore. GE has crowdsourced green business ideas under its “eco-magination” challenge. This engagement model has even been flipped, with companies like Kickstarter providing a platform for entrepreneurs to presell product ideas as a way to solicit funding based on early prototypes or ideas.
Question:What is the right way for us to engage with and learn from our customers?
  • How can we embed test-and-learn and rapid-iteration principles in our product-development process? Where else can these principles be used in our company?
  • Should we establish a beta program with consumers? How else can we collaborate with them?
  • What is too soon to ship? And how tolerant of potentially incomplete or buggy products will our customers be?
  • What cultural changes are needed in our organization to encourage it not only to listen to customers but also to give them control?
  • How much product control are we willing to give up?

4. Creating an agile organization

The three lessons above involve accelerating the clock speed of the enterprise and thinking differently about the structures across the business or boundaries with customers or users. Adopting these behaviors will require a more agile and flexible organization.
Software creation is inherently team based; as a result, the vast majority of software companies have built teamwork into their ethos. Teams assemble and reassemble based on specific projects, often resulting in flatter organizations than may be seen in other industries. To the uninitiated (and sometimes even to those in the industry), this way of working feels like barely controlled chaos. Companies that do this well depend on core organizational elements, including increased transparency, a laser-like focus on aligning culture and mind-set, and clearly defined, common goals.
In the past decade, many software organizations have built on these elements and further increased their productivity by using agile programming techniques—where teams run in sprints of two to three weeks to develop a workable prototype or new functionality. It is very different from the traditional planning and budgeting model used by many organizations. IT shops are beginning to employ agile methodologies, but often their counterparts across the business still operate with traditional models. This causes friction and slows down the process. In the future, though, it’s clear that accelerated cycles, increased transparency, and teaming outside the typical organizational boundaries (both within and outside the company) will have great impact on how executives organize and manage their teams. There are already tools ready for this challenge. Rypple, for example, is a software platform that allows companies to take a new approach to HR management and performance evaluations by using ongoing feedback, more public recognition, and social goals such as more dynamic team or individual objectives that change or evolve organically rather than through an annual top-down process.
IT and business have tended to operate as separate functions in many organizations, making it harder for those groomed in one discipline to cross over to the other. The software shift described in this article has the potential to force greater fusion in executive capabilities. In more traditional companies, IT employees will need to become business managers, while product-development and business unit leaders will need to become software savvy. A base level of software fluency will be a requirement for all levels, including upper management, in order to understand not only the core technologies but also the dynamics of working in a quick-turn, massively more connected, and digitized marketplace, in which economic value is driven increasingly by information-based services.

Monday, 10 August 2015

Software Development Life Cycle Models and Methodologies

The software industry includes many different processes, for example, analysis, development, maintenance and publication of software. This industry also includes software services, such as training, documentation, and consulting.
Our focus here about software development life cycle (SDLC). So, due to that different types of projects have different requirements. Therefore, it may be required to choose the SDLC phases according to the specific needs of the project. These different requirements and needs give us various software development approaches to choose from during software implementation.

Types of Software developing life cycles (SDLC)

· V-Shaped Model
· Spiral Method (SDM)

Waterfall Model

Description
The waterfall Model is a linear sequential flow. In which progress is seen as flowing steadily downwards (like a waterfall) through the phases of software implementation. This means that any phase in the development process begins only if the previous phase is complete. The waterfall approach does not define the process to go back to the previous phase to handle changes in requirement. The waterfall approach is the earliest approach that was used for software development.
Waterfall
The usage
Projects did not focus on changing requirements, for example, responses for request for proposals (RFPs)
Advantages and Disadvantages
AdvantagesDisadvantages
· Easy to explain to the user· Structures approach.· Stages and activities arewell defined· Helps to plan and schedule the project· Verification at each stage ensures early detection of errors / misunderstanding· Each phase has specific deliverables· Assumes that the requirements of a system can be frozen· Very difficult to go back to any stage after it finished.· Little flexibility and adjusting scope is difficult and expensive.· Costly and required more time, in addition to detailed plan

V-Shaped Model

Description
It is an extension for waterfall model, Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The major difference between v-shaped model and waterfall model is the early test planning in v-shaped model.
vmodel
The usage
· Software requirements clearly defined and known
· Software development technologies and tools is well-known
Advantages and Disadvantages
AdvantagesDisadvantages
· Simple and easy to use.· Each phase has specific deliverables.· Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle.· Works well for where requirements are easily understood.· Very inflexible, like the waterfall model.· Little flexibility and adjusting scope is difficult and expensive.· Software is developed during the implementation phase, so no early prototypes of the software are produced.· Model doesn’t provide a clear path for problems found during testing phases.· Costly and required more time, in addition to detailed plan

Evolutionary Prototyping Model

Description
It refers to the activity of creating prototypes of software applications, for example, incomplete versions of the software program being developed. It is an activity that can occur in software development. It used to visualize some component of the software to limit the gap of misunderstanding the customer requirements by the development team. This also will reduce the iterations may occur in waterfall approach and hard to be implemented due to inflexibility of the waterfall approach. So, when the final prototype is developed, the requirement is considered to be frozen.
It has some types, such as:
· Throwaway prototyping: Prototypes that are eventually discarded rather than becoming a part of the finally delivered software
Throwaway prototyping
· Evolutionary prototyping: prototypes that evolve into the final system through iterative incorporation of user feedback.
ev-proto
· Incremental prototyping: The final product is built as separate prototypes. At the end the separate prototypes are merged in an overall design.
StagedModelofSDLC
· Extreme prototyping: used at web applications mainly. Basically, it breaks down web development into three phases, each one based on the preceding one. The first phase is a static prototype that consists mainly of HTML pages. In the second phase, the screens are programmed and fully functional using a simulated services layer. In the third phase the services are implemented
The usage
· This process can be used with any software developing life cycle model. While this shall be focused with systems needs more user interactions. So, the system do not have user interactions, such as, system does some calculations shall not have prototypes.
Advantages and Disadvantages
AdvantagesDisadvantages
· Reduced time and costs, but this can be disadvantage if the developer lose time in developing the prototypes· Improved and increased user involvement· Insufficient analysis· User confusion of prototype and finished system· Developer misunderstanding of user objectives· Excessive development time of the prototype· Expense of implementing prototyping

Spiral Method (SDM)

Description
It is combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. This model of development combines the features of the prototyping model and the waterfall model. The spiral model is favored for large, expensive, and complicated projects. This model uses many of the same phases as the waterfall model, in essentially the same order, separated by planning, risk assessment, and the building of prototypes and simulations.
Spiral_model_BoehC_1988
The usage
It is used in shrink-wrap application and large system which built-in small phases or segments.
Advantages and Disadvantages
AdvantagesDisadvantages
· Estimates (i.e. budget, schedule, etc.) become more realistic as work progresses, because important issues are discovered earlier.· Early involvement of developers· Manages risks and develops system into phases· High cost and time to reach the final product.· Needs special skills to evaluate the risks and assumptions· Highly customized limiting re-usability

Iterative and Incremental Method

Description
It is developed to overcome the weaknesses of the waterfall model. It starts with an initial planning and ends with deployment with the cyclic interactions in between. The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental), allowing software developers to take advantage of what was learned during development of earlier parts or versions of the system.
It consists of mini waterfalls
incremental-sdlc
The usage
It is used in shrink-wrap application and large system which built-in small phases or segments. Also can be used in system has separated components, for example, ERP system. Which we can start with budget module as first iteration and then we can start with inventory module and so forth.
Advantages and Disadvantages
AdvantagesDisadvantages
· Produces business value early in the development life cycle· Better use of scarce resources through proper increment definition· Can accommodate some change requests between increments· More focused on customer value than the linear approaches· Problems can be detected earlier· Requires heavy documentation· Follows a defined set of processes· Defines increments based on function and feature dependencies· Requires more customer involvement than the linear approaches· Partitioning the functions and features might be problematic· Integration between iteration can be an issue if this is not considered during the development.

Extreme programming (Agile development)

Description
It is based on iterative and incremental development, where requirements and solutions evolve through collaboration between cross-functional teams.
agile_vorgehen_en_c9ffe4cf6f_01
The usage
It can be used with any type of the project, but it needs more involvement from customer and to be interactive. Also, it can be used when the customer needs to have some functional requirement ready in less than three weeks.
Advantages and Disadvantages
AdvantagesDisadvantages
· Decrease the time required to avail some system features.· Face to face communication and continuous inputs from customer representative leaves no space for guesswork.· The end result is the high quality software in least possible time duration and satisfied customer· Scalability· Skill of the software developers· Ability of customer to express user needs· Documentation is done at later stages· Reduce the usability of components.· Needs special skills for the team.

Friday, 7 August 2015

10 software challenges

I believe in the sustained relevance of ‘big agenda’ in software engineering: providing scientifically well-founded methods and tools to underpin the development of software systems that meet the needs of users, rapidly and at reduced cost. Better, faster, cheaper, in other words. Substantial technical progress has been made but, it could be argued, we are seeing some evidence of receding impact in those areas where that progress has significantly outstripped the capacity of practice to absorb innovation. This seems like an important prompt to review the key challenges we should be addressing and to ensure that they reflect the most outstanding immediate problems, hence this, entirely personal, top 10.
1. Relating Requirements and Architectures. It is clear that architectures cannot be directly derived (by refinement or other means) from a requirements specification. On the other hand the identification and elaboration of a suitable architecture are not independent of the requirements it must serve. The relation runs both ways with the architecture acting as a framework for the elicitation of requirements and shaping the space of possibilities that are afforded by the system. This complex, intertwined, co-development of architecture and requirements lies at the very core of software development and though we observe it, we do not understand it. 
2. Moving to ‘Evidence-based’ Practice. For the most part our existing state-of-practice is based on anecdote. It is, at its very best quasi-evidence-based. Few key decisions from the choice of an architecture to the configuration of tools and processes are based on a solid evidential foundation. To be truthful, software engineering is not taught by reference to evidence either. This is unacceptable in a discipline that aspires to engineering science. We must reconstruct software engineering around an evidence-based practice. 
3. Engineering Scalability. Increasingly we are required to build ‘Internet-scale’ services that must handle very large and rapid variations in the demand for resources. Existing practice is poor. We have some high level patterns for limited classes of application. Mostly, the best answers we can offer are resource profligacy, throwing hardware at the problem, or 'suck it and see', basically putting up a system and systematically fixing it each time it falls over. It is unclear to me whether our existing mathematical and analytic tools are able to give us purchase on scalability. 
4. Addressing Semantic Divergence. We operate in a context where standards for modelling and information exchange are very important. Unfortunately software engineering standards, principally promulgated by the OMG, and web standards, principally promulgated by the W3C, have been moving in different incompatible directions. The idea that the (semantic) representations at 'run-time' should be different to the (semantic) representations at 'development time' seems to me wrong, wasteful of effort and profligate of technical opportunity. We need to address this. 
5. Confident Estimation. We are very poor at answering the first question that any client asks: 'how much is this going to cost me?' We  cannot reliably predict the cost/effort required to build a system. We may be fortunate and have built a very similar system before in which case we can make a rough guess, otherwise we are clueless. Function Points, the state of the art, are precious little assistance. Other estimation schemes only work for small systems, relatively ‘late’ in the process. Software economics needs a radical rethink. We need to integrate cost into software engineering in a fundamentally new way. 
6. Engineering the Cloud. We know how to build Software-as-a-Service (SaaS) applications. Sort of, see my reservations about scalability. We don’t however know how to: buy it, manage QoS (Quality of Service) or achieve interoperability among SaaS offerings. SaaS is not simply 'yet-another-software-architecture' it is bound together with a set of new business models that require an engineering response. 
7. Building ‘Apps’. Apps have fundamentally changed how services are likely to be consumed. Fragmentary, highly-tuned, device-specific interfaces that bridge across to SaaS with managed data ‘sync’ to keep context, are becoming a very important development target. Not least because a viable payment model exists. We have only scratched the surface of the engineering challenges: app stores, app management, app assembly or composition, all require attention.  
8. Developing ‘Adaptive’ Systems. We have problems building systems that must exhibit robustness to a changing environment; problems building systems embedding significant COTS/Community Sourced independently evolving components; problems building systems that involve user scripting and ‘plug-ability’. In short, problems building the sort of systems we are called on to construct all the time. We need to develop engineering models and methods for assembling software systems that can dynamically adapt to context and can ‘account for themselves’. 
9. Reconstructing Governance. I have been struck by the tendency in software engineering for us to repeat our mistakes. More specifically to repeat mistakes that we understand are mistakes and which we possess the knowledge to avoid. We are driven to this, I contend, by misalignments at the boundaries between business and software engineering that is at the point where business value and the requirements of an engineering process collide. This is the domain of governance, which is poorly understood and little studied. 
10. Rethinking Software Production. Software development is no longer garage ‘design and make’. Most software products and services are embedded in a network of complex inter-product and inter-supplier dependencies. Software is the result of the operation of a 'supply chain' that must be designed and forms part of an 'ecosystem' that must be accommodated. Rethinking software production requires a new discipline of business model and software system co-design.

Thursday, 30 July 2015

The Benefits of Jobs in Computer Science

  The business world today relies much more heavily on the use of computers than in past generations due to the innovations of the digital revolution. The speed and power of computer processors aid businesses in making many tasks, like record keeping and data filing, much easier and more organized while saving a lot of time and hassle. Therefore, there is only one field of work that businesses will be interested in to get ahead in today’s competitive market: computer science. Businesses need software and qualified workers to operate their computers efficiently; some employers are more than willing to pay a premium price to get the best of what they need. In addition to having high salaries and being high in demand, stress levels of workers in the computer science industry are typically lower than in other employment fields, making jobs that require computer science related skills a wise choice in career.
     Consumers today expect nothing less than great customer service, a fair price matching the product’s quality, and an easy, accessible way to attain the product. The simple solution to solve these needs is to use computer systems. The first step for a business to successfully launch a new product is by using advertising, and much of this advertising is done on the business's website among other online advertising methods. The necessary use of web development comprises a large portion of positions in the computer science field. In some cases, space on the internet requires setting up powerful systems that can handle thousands of users at the same time. Network and data communications analysts are needed to set up these complex systems, and then database administrators organize the massive amounts of data that needs to be accessed quickly. Businesses that decide to rely on the internet must also rely on products that allow them to expand into cyberspace; the most necessary being the system environment. System software engineers are among those who create appealing work environments for each office scenario. Programmers and other software engineers are hired to produce programs for these systems, such as making the tools that companies need to operate their business. Each time a new technology is invented that requires the use of a computer system, applications must be made for it to be appealing and easy to use. Computer scientists are those who are responsible for coming up with cutting edge new technology. There are many different types of jobs in the computer science industry, so just about anyone who is interested in working in computer science can find a job suited to their interests.
     New technologies that are created inevitably trickle down to computer science related positions. Computer scientist and database administrator positions are expected to grow 37 percent from 2006 to 2016, making it “one of the fastest growing occupations over the next decade” ("U.S. Bureau of Labor Statistics"). The currently limited supply of qualified workers provides a higher demand for these positions to be filled and is expected to continue to grow as new technologies are discovered. As a result, demand for computer science related jobs will increase because many businesses will want to create 3rd party applications and other products that use these new technologies. The graphs "Employment in Computer Science Related Jobs" and "Total Employment in Computer Science Related Jobs" on page 3 show the history of employment in computer science jobs. As one can see, even though there is a decrease in computer programmers, there is a net growth in these positions. The dramatic drop in the second graph is likely a result of the dot-com bust. It is not expected that another dramatic drop of employment similar to the dot-com bust will happen again, and even under the unlikely chance that it does, there will always be a growing demand as new technologies are developed. With net gains in computer science related positions, jobs will be easy to find for qualified workers. 

This graph shows the number of employed workers in a specific field VS. the year. There may be a loss in computer programmers but there is a net gain altogether. Computer information scientists also have a very slight net gain.



This graph takes data from the above graph and totals all the computer science related positions to show that there is a net gain. Note that the vertical axis begins at 1,000,000. This means that roughly 27,000 positions are filled each year on average.


Both graphs made from data from "U.S. Bureau of Labor Statistics".



      Stress plays a large role in the everyday jobs that people do.  While a healthy amount of stress exists, too much of it can be difficult on the body.  Some symptoms of stress include:  feeling irritable, eating more, loss of concentration, loss of sleep, muscle pains, etc.  Different jobs include different amounts of stress that are thrown upon the workers.  Therefore, it is a good idea for a worker to choose a career path with a level of stress that they can cope with.  Even though there are some that can deal with large amounts of stress, most people should choose careers that they like and that have the least amount of stress as possible.  Besides avoiding possible stress symptoms, workers are more likely to succeed when they are working in an environment with low levels of stress.  “According to the American Medical Association, stress is a factor in more than 75% of sickness today.  And according to the World Health Organization, stress is America’s #1 Health Problem” ("Stress Facts & Stats..."). The graph "Top 8 Least Stressful Jobs", on page 5, shows that two of the top 8 jobs are computer science related.  The stress level that the graph uses is comprised of 21 stress factors: quotas, deadlines, advocacy, win or lose situations, working in the public eye, competitiveness, lifting required, physical demands (stoop, climb, etc.), environmental conditions, machines or tools used, speed required, hazards encountered, own life at risk, life of another at risk, precision required, initiative required, stamina required, outdoor work, confinement, detail, and meeting the public ("Jobs Rated Methodology - CareerCast.com").  These jobs have low stress levels because there is not a whole lot for a worker to worry about.  Jobs in a computer science related field allow flexibility in the location in which work can be done.  Employees can work from home or where it is most comfortable for them.  The occasional deadline will create stress; after all, no job is stress free.  However, working in teams has become simple with communication technology making collaboration a relatively painless task.  More importantly, these jobs require little to no physical activity, which eliminates many stress related problems that jobs with high levels of physical activity have.  Computer science related jobs have low amounts of stress and thus are good choices in career paths.  

This graph shows the top 8 least stressful jobs out of 200 ("JobsRated.com: A Comprehensive Ranking of 200 Different Jobs”). The stress level is calculated by adding up 21 stress factors of which are all assigned a certain value from source 3. Computer Systems Analyst and Software Engineer are 4th and 5th amongst 200 other jobs that were evaluated for stress levels. A job with a lower stress level is usually favored more than a job with a higher stress level.
      An important factor that attracts workers to their dream career is the salary that comes with the job.  The amount of money earned is not the only concern for some people when choosing a career; however, it is very difficult to argue that a job with a high salary isn’t a more favorable choice, especially in today’s economy.  Computer science offers a wide spectrum of positions for workers that require little to no college all the way up to a Ph.D. level.  Employers of computer science related fields do look for education qualifications in their employees; however, experience plays a large role in who is hired as well.  “Employers usually look for people who have broad knowledge and experience related to computer systems and technologies, strong problem-solving and analytical skills, and good interpersonal skills” ("U.S. Bureau of Labor Statistics"). With the wide acceptance of prerequisite knowledge to get into a computer science field and the large amount of demand for workers, employees are very likely to get a salary they appreciate based on their past experience.
      The graph "Top-Paid Bachelor's Degrees by Average Salary" shows the top 10 most paid jobs when the employee in question has no more than a bachelor’s degree.  It is not overwhelmingly difficult to get a bachelors degree and the pay-off is worth it.  College payments seem like less of a hurdle when one is making around 60,000 dollars a year.  Even though Chemical and Mechanical engineering beat computer science in salary, it is unlikely that they can beat the low stress and ease of work that computer science offers; therefore computer science is a clever choice in career. 

This graph shows the top 10 most paid bachelor’s degrees ("Salary Survey: Winter 2009"). Computer science is 3’rd in this list with an average salary offering of $58,419. Obviously a job with higher pay is more convenient to have especially in today’s economy.
      It is possible that one could consider jobs in computer science unreachable for most people because of how much the job requires knowledge about math and new technologies.  The argument centers on how some could just plain “never understand” the material involved in a computer related job.  This is partly true, however not to the point where most people couldn’t make a career in a computer science related field.  Consider the wide spectrum of positions talked about previously in the text.  Assuming that the only option for one who is troubled by computer related tasks is a job that requires little to no college, the basics of computer science are just above ground knowledge of how to use a computer.  For example: web development is achieved through applications of computers, requires next to no math, and most of all, only demands the worker to memorize the basic structure of a web page.  Every job requires practice.  For those who argue that some people can’t even use a computer, there is little to no excuse for not knowing how to use a computer in the 21st century.  It is only a matter of time before everything is maintained by computer systems and how to use computers is common knowledge.
      Computer science is a clear possibility for many future job opportunities.  Technology will continuously grow and always demand more applications from workers in this field.  From developing new software for computers to constructing computer systems to maintain and handle colossal amounts of data, there will always be a demand in computer science related jobs.  Because of the demand there will also be generous salaries for a wide range of workers with diverse amounts of experience while offering a working environment that is low in stress.  Putting these ideas together concludes that jobs in computer science related fields are indeed wise career choices.