DID YOU KNOW THAT YOU’RE IN A
HIGH DEMAND PROFESSION?
by John W. Stout
Over and over I’m seeing press about the increasing demand for software developers, data analysts and IT professionals generally. The Bureau of Labor Statistics rates Network Systems and Data Analysts as the second fastest growing U.S. profession. The Bureau also expects that the number of software developers is, by necessity, to grow from over a half million to almost 700K. If the government says it, it must be true, right?
In my experience, I can say that demand to fill openings has clearly increased in the past few months. Certainly, the dam hasn’t burst yet, and I’m sure many would question the government’s optimism. But when you think about the initiatives that are being targeted and funded by the government—especially the health care IT initiative—the future does look rosier for IT workers.
Per a recent Computerworld article, programmers and experienced IT project managers will be the two most in-demand skills in the next year, with tech support and networking also ranking highly. Our recent experience validates that projection, but more heavily on the programmer side of the equation than the project manager side. That may be unique to southeast Michigan’s circumstances.
But who is going to fill these jobs? Will there be enough trained and qualified workers in the workforce? Will they have to come off the golf courses and out of retirement?
Why haven’t more young people come into the profession? Recently, a community college administrator lamented to me that he was seeing people who were well-qualified for a high paying IT career, instead enthusiastically embracing an education and life in the food industry (famous for long hours, hard work and relatively low pay). The food industry certainly is glamorized on cable TV, perhaps leading one to believe that it is all joy to reach the level of success of the top chefs and cable Food Channel hosts. Maybe that’s what we need to attract bigger numbers into IT—more glamour.
It is true that college enrollments in computer related courses are on the increase. Check out this article from earlier this year: http://cio.com/article/551115. A dean from a prominent university is quoted in the article as saying the college successfully placed 87% of its information technology graduates the previous year. The article also quotes another university source stating that the average starting salary for its computer science graduates is a healthy $72,000.
Certainly, starting salary is modified by industry. However, with demand for computer science grads from the financial/insurance sector as well as defense, the promise of high compensation is a good reason for considering this profession again. High compensation is a great way to make an IT career more glamorous.
Some companies have the idea that qualified IT professionals are in abundance and that they can offer a lower salary to a candidate due to “the recession.” This strategy might work for short term hiring but it cannot succeed for much longer—per industry reports, the better IT talent is finding work at a relatively high compensation level, and the lower paying employer risks losing its best technical employees to competitors.
A company can sometimes save on its salary budget by hiring an experienced IT worker who isn’t necessarily The Ideal Candidate, but who has the experience, ability and willingness to learn and use new skills. Such a candidate may sacrifice salary for a career enhancement opportunity. We have seen this hiring strategy work for our customers that use it.
What about offshoring threatening IT jobs in the US? I’ve read plenty of reports that college enrollment dropped when offshoring seemed to become more in vogue starting in the 1990s as an apparent cost-saving measure for US firms. Many qualified college students apparently steered clear of a profession that was being promoted as disappearing overseas. During the past few years, US firms have learned that offshoring requires a definite management and facilities commitment that far exceeds the financial and management capacities of many firms. That fact, combined with some well-publicized offshoring failures, makes it clear that the US market will support an increase in new computer science grads, even if it isn’t at pre dot-com-bust levels.
Do you need a computer science or engineering degree to make it in the profession, or can “equivalent work experience” still suffice? How valuable are certifications? I’d answer both questions by saying that the most valuable experience in the industry, above and beyond one’s ability to understand and effectively apply programming languages, is the ability to integrate software components. With Open Source software so prevalent now in almost every development environment, the ability to make diverse technologies play nice can be the make-break in the success of a career.
Agile programming and testing skills are appearing in more job descriptions, with the perception that agile methodologies will results in faster deliverables and lower development costs. All well and good. However, the challenge for employers is finding employment candidates that actually have experience in an agile environment. The rate of real agile adoption is still low enough that actual job experience is rare indeed.
A vital point for computer professionals who are seeking employment to understand is that companies are almost universally seeking technical employees who can 1) understand the company’s business and 2) who can communicate technical concepts to nontechnical people both inside the company and its customers. The days are numbered for the isolated “head down” developer. In the spirit of more “bang for the buck,” IT candidates are more and more evaluated for their communication skills and business knowledge. And since we live in a global economy, it also helps candidates to have a global view.
John W. Stout is the founder and president of Stout Systems. With 30 years’ experience in the computer industry in a variety of roles, he is an advocate of the effective communication of technology issues and objectives.
ASP.NET MVC 2 Overview
by Greg Brewer
BACKGROUND
The ASP.NET MVC Framework is the Microsoft implementation of the Model-View-Controller pattern for the .Net platform. The MVC pattern has been popularized by the Apache Struts, Ruby on Rails and many other frameworks. ASP.NET MVC Framework is designed to address one of the problems with the ASP.NET Web form model—the separation between the application UI and business logic allowing for independent design, implementation and testing of each component. The Model represents the state of application and contains the business logic; the Controller is responsible for updating the Model and passing information to the View; the View is responsible for rendering the user interface representing the Model.
ARCHITECTURE
Controller
In the ASP.NET MVC Framework, Controllers are responsible for handling the request made to the application. In the ASP.NET MVC Framework there is nothing that directly corresponds to a page as you would think about in an ASP.NET Web form application. Instead of mapping application requests to a file on disk representing the page, requests are mapped to Controller Actions. The Controller is a class that exposes these Actions.
For example, the request for http://localhost/Store/Details/5 would be mapped to the Details Action of the Store Controller with a parameter of 5. Controller Actions are public methods of the Controller class. Any public method you add to a Controller is automatically added as a Controller action so be careful since a Controller method can be executed by just typing in the right URL.
A Controller returns an instance of a class that derives from ActionResult. The framework provides many built-in types that derive from the ActionResult class. See http://bit.ly/9oqYuf for the details. One of the more common ActionResult classes is the ViewResult which is used to display a specific View as a result of the requested action. Some other action results redirect to another controller, return a JSON object or return a file stream. Typically you do not return an ActionResult directly; instead you use a helper method to construct the ActionResult. One example is calling the View method to create a ViewResult object.
EXAMPLE 1
public class HomeController : Controller { public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View(); } }
In the ASP.NET MVC Framework, Views are the closest things to a page. Views are responsible for displaying the current state of the application to a user.
Views are associated with controllers and actions based on specific folder and file names. For example, invoking the View() method with no parameters from the http://localhost/Home/Index controller returns the View located at \Views\Home\Index.aspx. You can also specify a View name explicitly: View(“Test”); which would return the View at \Views\Home\Test.aspx.
A View is just a standard (X)HTML document that can contain scripts and use Master Pages. In ASP.NET 4 the <%: %> syntax should be used instead of the <%= %> since it automatically HTML Encodes the results.
EXAMPLE 2
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Home Page </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2><%: ViewData["Message"] %></h2> </asp:Content>
Microsoft created HTML Helper methods to make it easier to add content to a View. The HTML Helper functions are called from the HTML property of the View. They can greatly reduce the amount of HTML markup and script that you need to produce. See http://bit.ly/bCpRUz for more detailed information.
EXAMPLE 3
<% using (Html.BeginForm()) { %> <div> <fieldset> <legend>Account Information</legend> <div class="editor-label"> <%: Html.LabelFor(m => m.UserName) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(m => m.UserName) %> <%: Html.ValidationMessageFor(m => m.UserName) %> </div> ...
The controller ViewData property is used to pass information from the controller to the View. The VIewData property is a collection of name/value pairs. Example 1 (above) shows the string value “Welcome to ASP.NET MVC!” being added with the name “Message.” ViewData is passed to the View automatically. Example 2 (above) is displaying the value that was assigned.
Model
In contrast to the Controller and Views, the Model is not a defined set of classes or interfaces. The Model can be implemented using whatever means best suit the application. The ASP.NET MVC Framework places no restrictions on the objects that make up the Model for the application. If the Model is part of the main application, it is recommended to put the Model classes under the Model folder in the project. In larger systems the Model objects are often contained in separate assemblies so they can be reused in other projects.
The Controller typically interfaces with the Model by instantiating the Model classes in the Controller Action and calling methods to manipulate the Model and then passing information from the Model to a View for display.
WHATS NEW IN ASP.NET MVC 2
The ASP.NET MVC 2 Framework is included in Visual Studio 2010. It is also available as a download for Visual Studio 2008, and an upgrade wizard is provided to update ASP.NET MVC 1 applications to ASP.NET MVC 2. The new features in MVC 2 are designed to increase developer productivity and include:
- New Strongly Typed HTML Helpers
- Enhanced Model Validation support across both server and client
- Auto-Scaffold UI Helpers with Template Customization
- Support for splitting up large applications into “Areas”
- Asynchronous Controllers support that enables long running tasks in parallel
- Support for rendering sub-sections of a page/site using Html.RenderAction
See http://bit.ly/b8kA9a for more detailed information about these and other new features.
TUTORIAL
The MVC Music Store application is a tutorial built on the ASP.NET MVC 2 framework. It is a sample application that highlights some of MVC 2 productivity features as well as utilizing the Entity Framework 4 for its data access layer. It includes an 80 page Walkthrough tutorial illustrating the process of building the application. Find it at http://mvcmusicstore.codeplex.com.
Greg Brewer is the founder and Managing Member of Vowire LLC. He has been developing software for Windows for over 20 years and is co-author of the Windows 2000 Developers Guide. Follow Greg on Twitter http://twitter.com/gbrewer.
NOTICES
Stout welcomes new employees Michael Briggs, Mike Ludlum, Scott Adams, Mike Creedon, Nick Bathum and Gregg Blossom.
Leave a Comment