Author: Justin James
Find out why Justin James thinks there is still great potential for C++ developers to do quite nicely for themselves.
———————————————————————————————
TechRepublic member Oleg F (an experienced C++ developer) asked for my thoughts on the “present and future” of C++. In addition, he wanted information on how C++ fits into the .NET universe, Web development, and cloud computing. Below is my response.
I believe the days of C++ as a general purpose programming language are quickly ending for most developers. There are still lots of great uses for C++, particularly for OS-level work, low-level work (embedded devices, device drivers, etc.), certain high-performance applications, and applications where the overhead of a system like .NET or Java would be too heavy (like an office suite). Some developers will continue to use C++ for applications that other, less complex languages can handle as well. But for the typical developer, C++ is a big headache for minimal gain.
The performance issues that most developers face are not the kinds of issues that moving to native code will resolve; once you take performance out of the equation, C++ is a fairly unattractive option for application development in most cases.
The handful of C++ developers that I’ve talked to say using C++ in the .NET managed environment is not particularly attractive to them; this takes away much of the opportunity to use it in a Web development capacity, unless you want to use it in the CGI model. There are good things about CGI (less overhead, simple conceptual model) and bad things about CGI (your application has to be “aware” of many more low-level tasks). From what I’ve heard, under the .NET CLR, C++ loses its speed, as well as many of the things that make C++ useful.
This is not to say that C++ is going away any time soon. I see C++ joining the ranks of COBOL and FORTRAN as a legacy language with a massive installation base and a need for people to maintain/extend existing applications for more than 50 years. In addition, a number of new development projects will be started in it for a variety of reasons (familiarity, library support, tradition/habit, cultural, etc.). I also suspect that it will pick up a reputation as a “dead” language (again, like COBOL), due more to a lack of buzz and hype than actual non-usage (also like COBOL).
I don’t want to make the future for C++ sound dismal; if anything, I think there is great potential for C++ developers to do quite nicely for themselves. If you’re a C++ developer, I suggest that you stick with the language. Are the things you’re working on flashy or get the same attention as Web applications in the mainstream publications? No. But with the current salary structures, I feel that experienced C++ developers will see very nice paychecks for some time. In addition, as the remaining C++ work is of higher difficulty and fewer people learn C++ (it isn’t taught as frequently in colleges these days), I expect C++ developers to have more job security and better compensation than .NET or Java developers over the long run.
While C++ in Web development is not likely to become mainstream any time soon and desktop application development in C++ becomes less common, I think there is a lot of upside opportunity for C++ in certain aspects of cloud computing. For some projects (think of ones that are well suited to supercomputers), the cloud offers C++ developers a way to get the same benefits of grid computing but with much more flexibility. There is a lot of overlap between those projects and the kinds of projects for which developers regularly use C++. As a result, I think cloud computing will replace or supplement grids and supercomputers in many projects and will provide an excellent opportunity to see C++ used in new and innovative ways.
Keep in mind that much of this analysis is focused on the Windows world. From what I see, the *Nix development community is still very C/C++ oriented. C++ developers who are concerned about dwindling opportunities in Windows should definitely take a look at *Nix development.
I believe that C++ will slowly fade into the background, but it will neither die nor will it ever become unimportant. While most developers I know have never touched C++ in a real-world environment, many developers would benefit from learning it, if only to gain some appreciation of various languages, including Java, .NET, and Ruby.
If you have a programming question, e-mail it to me by clicking the Contact link at the top of the Programming and Development blog header.
J.Ja
Sunday, July 19, 2009
The current state and future of C++
Code concepts: C#'s var keyword
In this overview of C#’s var keyword, Justin James explains that var is used in variable declarations instead of a type. He also discusses the differing opinions about what makes var useful.
—————————————————————————————
Welcome to a new Programming and Development series called “Code concepts.” In this series, I intend to walk through a number of topics in detail, and put together a common sense, plain language summary of what you need to know to get started. In many ways, this will feel like a tutorial, but for some topics, there will be less emphasis on the “put tab A into slot B” that you see in so many tutorials, and more of a focus on the ideas.
This format might change, depending on reader feedback. So please let us know what you think of this new series, both positive and negative. Is it too basic, too advanced, or right on target? Are we looking at topics you find interesting? What topics would you like to see covered in future editions? Let us know by posting your feedback in the discussion.
Var keyword
Today, we take a closer look at C#’s var keyword, which was introduced in C# 3.0. I just started reading Essential LINQ by Charlie Calvert and Dinesh Kulkarni. var comes up all of the time in LINQ for reasons discussed below. In the book, there is a brief discussion about var and why it gets used in LINQ; this discussion prompted me to learn more about var, and I am glad that I did. I have been seeing var all over the place for the last year or two, but it wasn’t until I read about it in this book that I had ever seen someone enumerate reasons to actually use it. (By the by, I am only in Chapter 2 of the book, and so far I like it a lot. I will post a full review of the book when I finish reading it.)
What is var?
The var keyword is used in variable declarations instead of a type. The technical term for var is “implicitly typed local variable declaration.” The variable itself is still statically typed (the type is determined when the code is compiled), and it is still strongly typed (the type cannot change once it has been declared). The difference is that we are no longer explicitly stating the variable’s type in our source code; instead, the compiler infers the type of the variable based upon the initialize for the variable. For example:
var customerFirstName = "Jimmy";
var stopwatch = new System.Timers.Timer();
In this example, maxValue is compiled with a type of System.Int32, customerFirstName is a System.String, and stopwatch is System.Timers.Timer. In case it is not obvious, when using var to declare a variable, an initializer in the declaration is mandatory. In addition, the initializer has a few restrictions on it, which include the following:
It must be an expression that returns a value with a type; anonymous function declarations, for example (such as lambdas) are not valid, but literal expressions and object constructors are allowed.
It must not return the null type.
It must not refer to the variable being declared.
Only one declaration per statement is allowed; multiple declarations are not permitted.
For the full details, see 8.5.1 of the C# 3.0 Language Specification (DOC format).
What makes var useful?
Well, it depends on who you ask. One thing that everyone agrees on is that var is needed when declaring variables with anonymous types, such as when dealing with LINQ; using it in this scenario saves many headaches since you let the compiler worry about the type inference. Technically speaking, you can use LINQ without var, but it isn’t recommended; the overhead caused by not using it (such as trying to figure out the return type of a LINQ expression) is not worth any amount of “stylistic purity.”
One school of thought is that using var makes the code look cleaner because your declarations all line up nicely and are not cluttered with type declarations. These people also state that because you are working in C# in Visual Studio, if you really want to know the type of something, IntelliSense will let you know the type. These people also feel that using var makes it easier to change your code and makes the coding “feel” a bit more like a dynamic language such as PHP or Ruby. Another school of thought is that using var when it is not necessary is a form of laziness and that it trades a few keystrokes for decreased readability. There is a “compromise position” of thought that says that using var where the type is obvious is perfectly fine, but to not overdo it.
Where you stand in this debate is a matter of personal style. There are no technical reasons to use var at all, even with LINQ; the code is still strongly and statically typed.
I never understood the reasons to use var — its advantages were simply not obvious to me until I started doing the research for this article and found out why other developers use it. While I am not entirely convinced of its usefulness, I am willing to give it a try and see if it improves my workflow. Let me know your thoughts on var or any questions you might have on it.
J.Ja
10 boring phrases you should cut from your resume
Author: Toni Bowers
When creating a resume, it’s easy to fall into the habit of using old-hat expressions. Here are 10 that have become meaningless and should be avoided at all costs.
——————————————————————————————————————-
I ran across a piece by the esteemed Liz Ryan, a 25-year HR veteran and former Fortune 500 VP, that just made me cringe with recognition. She wrote about those trite phrases that inevitably make their way into our resumes. It’s one of those things many of us do by rote without considering that they are red flags for, as Ms. Ryan puts it, the “vocabulary challenged.”
Before I list the phrases, let me explain a little about why they should be run out of town on a rail. Have you ever sat through a speech by a company executive who seems to communicate solely in business cliches? He’ll speak of synergy and paradigm shifts and value-added propositions until you want to impale yourself on the nearest sharp object. And the only value you take away from a speech like that is that you are, in fact, capable of a boredom-induced vegetative state.
Cliched forms of speech are crutches for the uncreative. And the frequency of their usage make them absolutely meaningless.
So do you want your resume to say, above everything else, that you are incapable of forming a new thought? No, you don’t. You also don’t want the people reviewing your resume to gloss over these trite phrases and not give you a chance. That’s why you should strike every occurrence of the following from your resume:
- Results-oriented professional
- Cross-functional teams
- More than [x] years of progressively responsible experience
- Superior (or excellent) communication skills
- Strong work ethic
- Met or exceeded expectations
- Proven track record of success
- Works well with all levels of staff
- Team player
- Bottom-line orientation
Met or exceeded expectations? Whose expectations? The guy down the street at the coffee shop? Tell me instead about the time you had to lead a project with a seemingly impossible timeline and budget.
Toni Bowers is the Head Blogs Editor of TechRepublic. She has been in the publishing industry for 20 years, with concentration in IT-related topics. She has edited newsletters, books, and web sites pertaining to software, IT career, and IT management issues.
10 common issues you can fix with a registry hack
Sometimes, configuring Windows to meet your needs requires a trip to the registry editor. Here’s a look at some simple hacks that can save you time and prevent a variety of problems.
If you read any article that involves editing the registry, you will no doubt see ominous warnings telling you that you can destroy Windows and/or your applications if you edit the registry incorrectly, and that you should always make a full system backup before performing a registry modification. While these statements may be true, the fact remains that there are things that you can do by editing the registry that you simply cannot do with the GUI. In this article, I want to share with you 10 handy registry hacks for Windows XP and Vista.
Note: This article is also available as a PDF download.
1: Disable AutoPlay
I always find it a bit annoying to insert a TechNet CD and have Windows open Internet Explorer and display a bunch of information I don’t care about. I would rather just be able to navigate through the disc’s file system and go directly to what I need. Fortunately, it’s easy to create a registry setting that disables AutoPlay:
Navigate through the Registry Editor to HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer.
Create a DWORD named NoDriveTypeAutoRun.
Set the value to 000000FF.
2: Increase the maximum number of simultaneous downloads
As a technical writer, I’m constantly downloading files. Sometimes I need to download a lot of files, and Windows’ limit on the number of files that can be downloaded simultaneously gets in the way. If you’re in the same boat, you can tweak the registry so that Windows will let you download 10 files at a time:
Navigate through the Registry Editor to HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings.
Create a new DWORD named MaxConnectionsPerServer and assign it a value of 0000000a.
Create a new DWORD named MaxConnectionsPer1_0Server and assign it a value of 0000000a.
3: Change the name of the registered user
When you install Windows, you’re prompted to enter a username and a company name. But since it’s fairly common for companies to merge, you may want to change the name of the company Windows is registered to by using this hack:
Navigate through the Registry Editor to HKLM\Software\Microsoft\Windows NT\CurrentVersion.
Change the values that are assigned to the RegisteredOwner and RegisteredOrganization keys to reflect the new ownership information.
4: Prevent the Recycle Bin from being deleted
If you’ve ever right-clicked on the Windows Recycle Bin, you know there’s a Delete option, which can be used to get rid of it. If you want to prevent the Recycle Bin from accidental deletion, follow these steps:
Navigate through the Registry Editor to HKCR\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}.
Create a new registry key called Shell.
Create a new registry key named Delete and put it beneath the Shell key. The path should look like this: HKCR\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\Shell\Delete.
Modify the Default key and assign it a value of Recycle Bin.
5: Eliminate cached logons
Windows is designed to allow users to log on using cached logins if no domain controller is available to authenticate the request. If you want to make sure that a login request is always authenticated by a domain controller, you could change the number of cached logons that are allowed from 10 to 0 (or you could increase the number of cached logins allowed to 50). To do so, follow these steps:
Navigate through the Registry Editor to: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\winlogon.
Create a new REG_SZ setting named CachedLogonsCount.
Assign this new setting a value that reflects how many concurrent cached logins you want to allow.
6: Encrypt and decrypt from a shortcut menu
Normally, when you want to encrypt or decrypt a file in XP Pro or Vista, you just right-click on the file or folder and choose the Properties command from the shortcut menu. When the properties sheet appears, click the Advanced button on the General tab and then use either the Encrypt or the Decrypt option.
If all that seems like a lot of work, you can add those options to the shortcut menu you see when you right-click on a file:
Navigate through the Registry Editor to HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced.
Create a new DWORD called EncryptionContextMenu and assign it a value of 1.
7: Delay Windows Activation
Typically, when an organization deploys Vista, it will create a master image, run SYSPREP, and deploy the image. The problem is that it might be a while between the time that SYSPREP is run and when Vista is actually deployed.
Microsoft will allow you to extend the activation period by 30 days, but you can do that only three times. You can, however, use a registry hack to get around this limitation:
Navigate through the registry to HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL.
Change the value associated with the SkipRearm key to 1.
Open a Command Prompt window and enter the following command: slmgr -rearm.
8: Relocate your offline files
When you use Vista’s Offline Files feature, the offline file cache is automatically placed on your C: drive. But my laptop has two hard drives in it, and I wanted to configure Vista to place my offline files onto my secondary hard drive. I accomplished the task by following these steps:
Open the Control Panel and click on the Network And Internet link, followed by the Offline Files link. Windows will display the Offline Files properties sheet.
Disable offline files if they are currently enabled.
Click OK and reboot the machine.
When the computer reboots, open the Registry Editor and navigate to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CSC.
Create a new string value named Parameters.
Assign this value to the Parameters key:
\??\e:\csc
where e: is the drive letter you want to use.
Exit the Registry Editor and reboot the computer.
When the machine reboots, enable offline files.
Reboot the computer one last time. Now, you can start making folders available offline.
9: Disable User Account Control
One of the things about Vista that seems to irritate a lot of people is the User Account Control feature. In essence, an administrator is treated as a standard user. Administrators who attempt to perform an administrative action receive a prompt asking whether they initiated the action. I think that this prompt is a valuable safeguard against malware, but since a lot of people don’t like it, here’s how to use the registry editor to suppress the prompt:
Navigate through the registry editor to HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System.
Change the value of the ConcentPromptBehaviorAdmin key to 00000000.
10: Don’t display the last user who logged in
Windows Vista is designed so that when you press Ctrl+Alt+Delete to log in, it will display the name of the user who logged in most recently. This can be a bit of a problem if multiple users share a common PC. They may forget to check to see who was logged in previously and key in their own password in association with another user’s login name. If they try this enough times, they could lock the other user out. You can get around this problem by using a simple registry tweak to tell Windows not to display the name of the user who was logged in previously:
Navigate through the Registry Editor to HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System.
Set the DontDisplayLastName key to a value of 1.
10 ways IT wastes money on development
To deliver value, IT departments must keep a tight rein on how they use their budget - and that includes development efforts. Justin James cites some of the most common areas where IT throws its development bucks down the drain.
Many IT departments walk a fine line between being a needed cost center, a necessary evil, and an absolute money pit. In a few rare occasions, they’re able to deliver enough value to become profit centers.
One of the key factors in determining whether an IT department is delivering ROI has to do with the development efforts occurring within that department. Here are 10 of the most common ways IT departments waste money on development.
Note: This article originally appeared as an entry in our Programming and Development blog. It’s also available as a PDF download.
1: Communication problems
Communication issues are one of the biggest causes of project failure. These issues are magnified with internal projects. Just because the “customer” works in the same building and has their paychecks signed by the same person as you doesn’t mean there won’t be communication problems. In fact, internally facing projects are often worse than projects for paying customers because internal customers don’t have to adhere to a contract, and no tangible value is placed upon the work.
In these situations, there is little incentive for the customers to work well with you, and if communication breaks down, they complain about how “IT is stonewalling us.” The result is wasted time and money due to things being delivered late, delivered wrong, or not delivered at all.
2: Process issues
To the rest of the company, internal IT is like the nephew you can order to come mow the lawn when needed. This is no way to run development projects. All too often, the IT department eventually tires of it, tries to establish some sort of process to put on the brakes, and gets initial buy-in from leadership. Then, when the other departments think “IT is stonewalling us,” leadership changes course and rescinds their buy-in without telling IT. The next thing you know, every minor meeting becomes a shouting match about who is adhering to what process or how the process is not working — even though the meeting might be about the feature list. Broken, ineffective, and unenforced processes are a major waste of time and money.
3: Refusal to go live and iterate (aka: insistence upon perfection)
How many times have you seen a project that is 99% done not get deployed because one of the customers isn’t 100% happy with it? And then from there, it seems like you spend almost as much time tweaking a few minor issues as you did building the application in the first place.
This is where I am in 100% agreement with the Agile folks. If the project is even 90% complete, go ahead and deploy it. You know there are a few bugs and that some things are not “just so,” but that’s okay. Get actual users to work with it. Who knows? Maybe they’ll like it as is, or maybe they’ll have ideas that are even better than the features that were not delivered. But no matter what, having an application mostly done and not deployed means that it’s going to take even longer to see ROI on it.
4: Penny wise, pound foolish
All too often, leadership doesn’t think that it’s worth investing money in internal IT development projects. Their thinking goes something like this: “We won’t see revenue from it, so how can we see ROI?” Well, if the project won’t deliver value, why do it at all? As many mothers have told their children through the ages, “If something is worth doing, it’s worth doing right.”
This doesn’t mean that every developer needs a dual CPU desktop machine with a pair of 30-inch displays, cable TV with all of the premium channels, and a chauffeur so they can write code on their morning commute. But it does mean that if a developer needs a tool and can demonstrate that need, it should be bought. I can’t count the number of times I’ve seen a developer with a $70,000/year salary spend three weeks doing something by hand that could have been done in a few hours with a $1,000 tool. Yeah, that was a great way to “save” money, wasn’t it?
5: Outsourcing missteps
Everyone loves to knock outsourcing, regardless of whether it’s contractors working onsite or offshore workers halfway around the globe. But the leadership team likes looking at the spreadsheet numbers on outsourcing, particularly when times are tight like they are now. The problem is, outsourcing often costs much more than it saves because it’s filled with hidden expenses.
For example, when you bring in contractors through a staffing agency, how do you think the agency finds workers of a particular skill level, charges you less than it would cost you to hire them directly, pays their overhead (such as that well-dressed salesperson and their recruiting department), and makes a profit? Easy — they misrepresent the talent. Oftentimes, the staffing agency doesn’t have superstars “on the bench” waiting for the next hot assignment, they run an ad on a job board and fill your seats with the cheapest people they can get on two weeks’ notice. Anyone sitting around in the job pool just waiting to fill that position is probably not a choice employee.
Offshore workers are an entirely different issue; it’s extraordinarily difficult to manage a project that’s developed offshore. Chances are, you’ll need at least one employee for every couple of your offshore workers just to manage them and keep track of what’s happening. You might assume time zone, cultural, and language difficulties would be small problems, but they aren’t. Just try to do your job efficiently when you need to wake people up if you want to talk to them after 1:00 PM.
I’m not saying that outsourcing is always a losing proposition. But a hastily thrown together outsourcing plan is a great way to throw tons of money down the drain and lose a lot of time in the process.
6: “The Longest Yard” (documentation and user training)
While issue #3 (refusal to go live and iterate) keeps the product from ever reaching the users, what happens if the users never get documentation or training? Unless your application is as easy to use as, say, a phone book, it’s unlikely anyone will ever use it. Unused applications are the biggest waste of time and money possible because you went through the whole development cycle for nothing. You could have paid your team to sit at home playing video games and have gotten the same results.
If your project plan doesn’t provide the chance to put together documentation, or if no one has put together a training program, you might as well take your development budget and use the cash to light the BBQ grill.
7: Developers used as support staff
If you ever worked support, do you remember what you earned? Now, are you earning a multiple of that income as a developer? Same here.
Developers are extremely expensive compared to support staff. Not only are the salaries higher, but the tools, training, etc., are too. The support team will need to work closely with development, especially for a new product. But developers should not be used as support staff unless the project is very small and/or bug free and self explanatory — it’s just too expensive.
8: Poor foundation for development
Many companies aren’t set up well for development, especially if there are only a few developers on staff. There is a lot more to working on code than having a standard desktop PC with an IDE installed and a few books on the desk.
There should be version control systems and bug tracking applications for all but the smallest of shops, for example. Developers will probably need additional support from IT, such as test machines (physical or virtual), database servers isolated from the production servers, and maybe a section of the network set aside to contain disasters if needed.
When developers don’t have the necessary resources to work safely and effectively, their work is slowed down, or it affects the rest of the company in negative ways. Think about it… if a developer’s faulty test code blows up a database server, wouldn’t you rather it didn’t blow up the one that the accounting system is also running on?
9: Failure to know the business
Internal developers should know enough about the business so they can follow along without needing every little thing explained to them, and the customers should know enough about their own work so that they can actually explain it. All too often, someone realizes halfway through the requirements gathering process that the customer doesn’t know their own process. It’s even worse when the project is given to the customer for review, and they say, “We don’t work this way; why does this application work this way?” And then you show them the specification they signed off on, and they say, “Well, we thought we did things that way, but we really don’t.” What a colossal waste of time and money!
As soon as it’s clear that the customer doesn’t really know their own process, you should stop development and tell them they need to figure out what they do before you can continue. Also, remind the customer that you’re a developer not a process engineer, so you’re not going to help them figure out their process.
10: Neglecting to calculate project ROI
There is a fundamental flaw with many IT development projects: No one tried to calculate ROI before giving the go-ahead. Yes, ROI calculations tend to be overly optimistic and difficult to get right (or even close to right), even after the project is in production. Yet some projects are clearly a waste of money.
Think of how much time you need to save a department of $10/hour administrative personnel before it pays to have a $60,000/year developer devote three months to writing code. Sure, if it saves those personnel 10 minutes a day, and you have 50 of them on staff, the project makes sense. But if it merely replaces a well-organized and well-understood filing cabinet and saves three workers two minutes a day, the project shouldn’t even be considered without a strong external reason behind it (such as a legal or a customer requirement).
There is nothing dumber than throwing away good money on a project that is guaranteed to not have any payoff.
Disclosure of Justin’s industry affiliations: Justin James has a working arrangement with Microsoft to write an article for MSDN Magazine. He also has a contract with Spiceworks to write product buying guides.
Justin James is an employee of Levit & James, Inc. in a multi-disciplinary role that combines programming, network management, and systems administration. He has been blogging at TechRepublic since 2005. Read his full bio and profile.
10 dying IT skills
One of the challenges of working in the IT field is staying on top of emerging technologies - while letting go of those that are becoming obsolete. This Global Knowledge article lists 10 areas that are fading into obscurity.
There are some things in life, like good manners, that never go out of style. And there are other things, like clothing styles, that fall in and out of fashion. But when an IT skill falls out of favor, it rarely ever comes back. Here’s our list of 10 dying IT skills. If any of these skills is your main expertise, perhaps it’s time to think about updating your skill set.
Note: This article is based on a Global Knowledge white paper by Linda Leung.
1: Asynchronous Transfer Mode
ATM was popular in the late 90s, particularly among carriers, as the answer to overworked frame relay for wide-area networking. It was considered more scalable than frame relay and offered inherent QoS support. It was also marketed as a LAN platform, but that was its weakness. According to Wikipedia, ATM failed to gain wide acceptance in the LAN where IP makes more sense for unifying voice and data on the network. Wikipedia notes that ATM will continue to be deployed by carriers that have committed to existing ATM deployments, but the technology is increasingly challenged by speed and traffic shaping requirements of converged voice and data networks. A growing number of carriers are now using Multi-Protocol Label Switching (MPLS), which integrates the label-switching capabilities of ATM with the packet orientation of IP. IT skills researcher Foote Partners listed ATM in its IT Skills and Certification Pay Index as a non-certified IT skill that has decreased in value in the last six month of 2008.
2: Novell NetWare
Novell’s network operating system was the de facto standard for LANs in the 1990s, running on more than 70% of enterprise networks. But Novell failed to compete with the marketing might of Microsoft. Novell tried to put up a good fight by acquiring WordPerfect to compete with Windows Office, but that move failed to ignite the market, and Novell eventually sold WordPerfect to Corel in 1996. Novell certifications, such as Certified Novell Engineer, Master Certified Novell Engineer, Certified Novell Certified Directory Engineer, and Novell Administrator, were once hot in the industry. But now, they are featured in Foote Partners’ list of skills that decreased in value in 2008. Hiring managers want Windows Server and Linux skills instead.
3: Visual J++
Skills pay for Microsoft’s version of Java declined 37.5% last year, according to the Foote Partners’ study. The life of J++, which is available with Microsoft Visual Studio 6.0, was not a smooth one. Although Sun Microsystems licensed Java to Microsoft to develop J++, Microsoft failed to implement some features of the official Java standard while implementing other extensions of its own. Sun sued Microsoft for licensing violations in a legal wrangle that lasted three years. Microsoft eventually replaced J++ with Microsoft .NET.
4: Wireless Application Protocol
Yes, people were able to browse the Internet in the late 90s before Apple’s iPhone. Web site operators would rewrite their content to the WAP’s Wireless Markup Language, enabling users to access Web services such as email, stock results and news headlines using their cell phones and PDAs. WAP was not well received at the beginning because WAP sites were slow and lacked the richness of the Web. WAP has also seen different levels of uptake worldwide because of the different wireless regulations and standards around the world. WAP has since evolved and is a feature of Multimedia Messaging Service, but there is now a new generation of competing mobile Web browsers, including Opera Mobile and the iPhone’s Safari browser.
5: ColdFusion
ColdFusion users rave that this Web programming language is easy to use and quick to jump into, but as many other independent software tools have experienced, it’s hard to compete with products backed by expensive marketing campaigns from Microsoft and others. The language was originally released in 1995 by Allaire, which was acquired by Macromedia (which itself was purchased by Adobe). Today, it is superseded by Microsoft .NET, Java, PHP, and the language of the moment: open source Ruby on Rails. A quick search of the Indeed.com job aggregator site returned 11,045 jobs seeking PHP skills, compared to 2,027 CF jobs. Even Ruby on Rails, which is a much newer technology - and which received a major boost when Apple packaged it with OS X v10.5 in 2007 — returned 1,550 jobs openings on Indeed.com.
6: RAD/extreme programming
Back in the late 90s and early 2000s, the rapid application development and extreme programming development philosophies resulted in quicker and more flexible programming that embraced the ever-changing needs of customers during the development process. In XP, developers adapted to changing requirements at any point during the project life rather than attempting to define all requirements at the beginning. In RAD, developers embraced interactive use of structured techniques and prototyping to define users’ requirements. The result was accelerated software development. Although the skills were consistently the highest paying in Foote Partners survey since 1999, they began to lose ground in 2003 due to the proliferation of offshore outsourcing of applications development.
7: Siebel
Siebel is one skill that makes a recurring appearance in the Foote Partners’ list of skills that have lost their luster. Siebel was synonymous with customer relationship management in the late 90s and early 2000s, and the company dominated the market with a 45% share in 2002. Founded by Thomas Siebel, a former Oracle executive with no love lost for his past employer, Siebel competed aggressively with Oracle until 2006 when it was ultimately acquired by the database giant. Siebel’s complex and expensive CRM software required experts to install and manage. That model lost out to the new breed of software-as-a-service (SaaS) packages from companies such as Salesforce.com, which deliver comparable software over the Web. According to the ITJobsWatch.com, Siebel experts command an average salary of GBP52,684 ($78,564), but that’s a slide from GBP55,122 a year ago. Siebel is ranked 319 in the job research site’s list of jobs in demand, compared to 310 in 2008.
8: SNA
The introduction of IP and other Internet networking technologies into enterprises in the 1990s signaled the demise of IBM’s proprietary Systems Network Architecture. According to Wikipedia, the protocol is still used extensively in banks and other financial transaction networks and so SNA skills continue to appear in job ads. But permanent positions seeking SNA skills are few and far between. ITJobsWatch.com noted that there were three opening for permanent jobs between February and April, compared to 43 during the same period last year. Meanwhile, companies such as HP offer consultants with experience in SNA and other legacy skills, such as OpenVMS and Tru64 UNIX for short-term assignments.
9: HTML
We’re not suggesting the Internet is dead, but with the proliferation of easy-to-use WYSIWYG HTML editors enabling non-techies to set up blogs and Web pages, Web site development is no longer a black art. Sure, there’s still a need for professional Web developers, but a good grasp of HTML isn’t the only skill required of a Web developer. Professional developers often have expertise in Java, AJAX, C++, and .NET, among other programming languages. HTML as a skill lost more than 40% of its value between 2001 and 2003, according to Foote Partners.
10: COBOL
Is it dead or alive? This 40-year-old programming language often appears in lists of dying IT skills. But it also appears in as many articles about organizations with legacy applications written in COBOL that are having a hard time finding workers with COBOL skills. IBM cites statistics that 70% of the world’s business data is still being processed by COBOL applications. But how many of these applications will remain in COBOL for the long term? Even IBM is pushing its customers to “build bridges” and use service-oriented architecture to “transform legacy applications and make them part of a fast and flexible IT architecture.”
About the author
Linda Leung is a senior IT journalist with 20 years’ experience editing and writing news and features for online and print. She has extensive experience creating and launching news Web sites, including most recently, independent communities for customers of Cisco Systems and Microsoft.
10 ways to avoid viruses and spyware
To have a fighting chance against today’s rampant security threats, end users have to be informed and proactive. Here are some practical guidelines they can follow to minimize the risk of infection and attack.
Oh, the deck is stacked. Don’t think for a minute it’s not. As a technology professional responsible for securing office networks, workstations, and servers from viruses, spyware, adware, Trojans, and other malware infections, I can tell you that the situation is only getting worse.
A Computer Economics report showed that annual worldwide malware expenses increased by $10 billion (to $13 billion) over a recent 10-year span. Google Research suggests that one in every 10 Web sites is infected with “drive-by” malware. In June 2009, the Windows Secrets e-newsletter reported that such seemingly safe Web sites as Coldwell Banker.com, Variety.com, and even Tennis.com were exposing Internet Explorer visitors to the Gumblar exploit, which threatens to compromise visitors’ systems in order to propagate.
IT professionals must encourage their users to follow several security practices to minimize virus, spyware, and malware exposure. But many computer techs are too busy to spread the word, or they don’t have the time to build an appropriate memo or handout.
With that in mind, here’s a handy reference list of 10 steps end users can adopt to avoid infection (including when using home systems to read and send work e-mail, create, edit, and distribute documents and spreadsheets, access the corporate VPN, and perform other office tasks). Post this list on your Intranet, distribute it in an e-mail, or download the PDF version and pass it along to end users. Just be sure the word gets out. Otherwise, you’re likely to find yourself losing precious time cleaning and repairing infected systems or entire networks.
1: Install quality antivirus
Many computer users believe free antivirus applications, such as those included with an Internet service provider’s bundled service offering, are sufficient to protect a computer from virus or spyware infection. However, such free anti-malware programs typically don’t provide adequate protection from the ever-growing list of threats.
Instead, all Windows users should install professional, business-grade antivirus software on their PCs. Pro-grade antivirus programs update more frequently throughout the day (thereby providing timely protection against fast-emerging vulnerabilities), protect against a wider range of threats (such as rootkits), and enable additional protective features (such as custom scans).
2: Install real-time anti-spyware protection
Many computer users mistakenly believe that a single antivirus program with integrated spyware protection provides sufficient safeguards from adware and spyware. Others think free anti-spyware applications, combined with an antivirus utility, deliver capable protection from the skyrocketing number of spyware threats.
Unfortunately, that’s just not the case. Most free anti-spyware programs do not provide real-time, or active, protection from adware, Trojan, and other spyware infections. While many free programs can detect spyware threats once they’ve infected a system, typically professional (or fully paid and licensed) anti-spyware programs are required to prevent infections and fully remove those infections already present.
3: Keep anti-malware applications current
Antivirus and anti-spyware programs require regular signature and database updates. Without these critical updates, anti-malware programs are unable to protect PCs from the latest threats.
In early 2009, antivirus provider AVG released statistics revealing that a lot of serious computer threats are secretive and fast-moving. Many of these infections are short-lived, but they’re estimated to infect as many as 100,000 to 300,000 new Web sites a day.
Computer users must keep their antivirus and anti-spyware applications up to date. All Windows users must take measures to prevent license expiration, thereby ensuring that their anti-malware programs stay current and continue providing protection against the most recent threats. Those threats now spread with alarming speed, thanks to the popularity of such social media sites as Twitter, Facebook, and My Space.
4: Perform daily scans
Occasionally, virus and spyware threats escape a system’s active protective engines and infect a system. The sheer number and volume of potential and new threats make it inevitable that particularly inventive infections will outsmart security software. In other cases, users may inadvertently instruct anti-malware software to allow a virus or spyware program to run.
Regardless of the infection source, enabling complete, daily scans of a system’s entire hard drive adds another layer of protection. These daily scans can be invaluable in detecting, isolating, and removing infections that initially escape security software’s attention.
5: Disable autorun
Many viruses work by attaching themselves to a drive and automatically installing themselves on any other media connected to the system. As a result, connecting any network drives, external hard disks, or even thumb drives to a system can result in the automatic propagation of such threats.
Computer users can disable the Windows autorun feature by following Microsoft’s recommendations, which differ by operating system. Microsoft Knowledge Base articles 967715 and 967940 are frequently referenced for this purpose.
6: Disable image previews in Outlook
Simply receiving an infected Outlook e-mail message, one in which graphics code is used to enable the virus’ execution, can result in a virus infection. Prevent against automatic infection by disabling image previews in Outlook.
By default, newer versions of Microsoft Outlook do not automatically display images. But if you or another user has changed the default security settings, you can switch them back (using Outlook 2007) by going to Tools | Trust Center, highlighting the Automatic Download option, and selecting Don’t Download Pictures Automatically In HTML E-Mail Messages Or RSS.
7: Don’t click on email links or attachments
It’s a mantra most every Windows user has heard repeatedly: Don’t click on email links or attachments. Yet users frequently fail to heed the warning.
Whether distracted, trustful of friends or colleagues they know, or simply fooled by a crafty email message, many users forget to be wary of links and attachments included within email messages, regardless of the source. Simply clicking on an email link or attachment can, within minutes, corrupt Windows, infect other machines, and destroy critical data.
Users should never click on email attachments without at least first scanning them for viruses using a business-class anti-malware application. As for clicking on links, users should access Web sites by opening a browser and manually navigating to the sites in question.
8: Surf smart
Many business-class anti-malware applications include browser plug-ins that help protect against drive-by infections, phishing attacks (in which pages purport to serve one function when in fact they try to steal personal, financial, or other sensitive information), and similar exploits. Still others provide “link protection,” in which Web links are checked against databases of known-bad pages.
Whenever possible, these preventive features should be deployed and enabled. Unless the plug-ins interfere with normal Web browsing, users should leave them enabled. The same is true for automatic pop-up blockers, such as are included in Internet Explorer 8, Google’s toolbar, and other popular browser toolbars.
Regardless, users should never enter user account, personal, financial, or other sensitive information on any Web page at which they haven’t manually arrived. They should instead open a Web browser, enter the address of the page they need to reach, and enter their information that way, instead of clicking on a hyperlink and assuming the link has directed them to the proper URL. Hyperlinks contained within an e-mail message often redirect users to fraudulent, fake, or unauthorized Web sites. By entering Web addresses manually, users can help ensure that they arrive at the actual page they intend.
But even manual entry isn’t foolproof. Hence the justification for step 10: Deploy DNS protection. More on that in a moment.
9: Use a hardware-based firewall
Technology professionals and others argue the benefits of software- versus hardware-based firewalls. Often, users encounter trouble trying to share printers, access network resources, and perform other tasks when deploying third-party software-based firewalls. As a result, I’ve seen many cases where firewalls have simply been disabled altogether.
But a reliable firewall is indispensable, as it protects computers from a wide variety of exploits, malicious network traffic, viruses, worms, and other vulnerabilities. Unfortunately, by itself, the software-based firewall included with Windows isn’t sufficient to protect systems from the myriad robotic attacks affecting all Internet-connected systems. For this reason, all PCs connected to the Internet should be secured behind a capable hardware-based firewall.
10: Deploy DNS protection
Internet access introduces a wide variety of security risks. Among the most disconcerting may be drive-by infections, in which users only need to visit a compromised Web page to infect their own PCs (and potentially begin infecting those of customers, colleagues, and other staff).
Another worry is Web sites that distribute infected programs, applications, and Trojan files. Still another threat exists in the form of poisoned DNS attacks, whereby a compromised DNS server directs you to an unauthorized Web server. These compromised DNS servers are typically your ISP’s systems, which usually translate friendly URLs such as yahoo.com to numeric IP addresses like 69.147.114.224.
Users can protect themselves from all these threats by changing the way their computers process DNS services. While a computer professional may be required to implement the switch, OpenDNS offers free DNS services to protect users against common phishing, spyware, and other Web-based hazards.
Finally: 10 Things… the newsletter!
Get the key facts on a wide range of technologies, techniques, strategies, and skills with the help of the concise need-to-know lists featured in TechRepublic’s 10 Things newsletter, delivered every Friday. Automatically sign up today.
Erik Eckel is president of two privately held technology consulting companies. He previously served as executive editor at TechRepublic. Read his full bio and profile.
10 ways technology can help (or hurt) your professional image
Technology has assumed a huge role in our professional lives. Almost anything we say and do can be seen by hundreds or thousands of co-workers, clients, and bosses. The small things you do, or fail to do, with respect to technology can affect how you’re perceived. Below are some examples.
1: Premature or ill-advised email sending
A fool shows his annoyance at once, but a prudent man overlooks an insult.
How many times have you sent an email prematurely? Maybe, instead of thinking first, you simply did a “reply-and-run” to that upsetting email. Maybe you hit the Send button by accident. In either case, to prevent premature sending, try leaving the addressee field blank until just before you’re ready to send. That way, even if you hit Send by accident, nothing will happen. Only when you are ready to send should you fill in that recipient field.
If you’re replying, rather than composing a new message, you’ll need to take an additional step: cutting the address of the original sender (who’s now your recipient) and pasting it in the body of your note (so you don’t lose track of it). Once you’re reading to send via the reply, simply cut and paste that address back in the addressee field.
2: Forwarding sender’s email vs. merely providing an address to sender
A few weeks ago, a company executive sent me an email and suggested that I contact one of her peers. In that email, she gave me only his name. I thanked her and asked if she could forward him some information I had sent her earlier. She responded in a later email by giving me his email address. As far as I know, she never did forward my email to him.
I eventually was able to connect with him, but I had to take additional steps that would have been unnecessary had the executive merely forwarded my information. More significantly, her handling of the matter gave me the impression that she was passing the buck, and that the two of them really didn’t work well together.
I’m not going to tell you to do it one way or the other. I AM suggesting, though, that you think about the implications of whichever way you choose.
3: Including an email signature line
In talks I do on customer service, I often discuss the importance of having a signature line in your email. By including your phone and fax number in the signature, recipients can contact you more easily. I can’t count the number of signature-less emails I’ve received, many of which come from directors of training and development organizations, who should know better.
Of course, maybe you don’t really want recipients to contact you. If you feel that way and therefore decline to use a signature line, it’s your right. However, as with the matter of the forwarded email, have a clear reason for the option you choose and be aware of the consequences.
4: Did you really end the call?
Remember Friday the 13th? It’s that series of movies about Jason, the villainous murderer who never seems to die and returns again and again. Or how about the Energizer Bunny? Or how about those trick birthday candles that always re-ignite after you think you’ve blown them out?
Make sure you really end your telephone calls. My Samsung flip phone has a convenient speakerphone feature. You activate it by pushing a button on the side of the phone. However, when that feature is active during a call, that call continues to be active even if I flip the phone shut.
Check your own phones to see whether they have this feature. A few years ago, two male employees of a Pennsylvania utility company got into trouble during a conference call with their female supervisor. The two men, thinking they had ended the call, began making negative gender-based remarks about the supervisor, who heard every word.
5: Inadvertent dialing
In the same way, be careful about inadvertently dialing a call from your phone, particularly if you have an exposed keypad and your car seat belt touches it. Even if you have a flip phone, be aware that if you press certain buttons or cause them to be pressed, you could activate voice recognition, which could cause the phone to dial a call.
If, upon driving home, you find that your daughter has the entire contents of the George Strait Troubadour album on her voicemail, you probably dialed her by mistake in this way.
6: A conference call trap
Suppose you and a co-worker are talking to a vendor via conference call. Suppose further that all three of you are in different locations and that after jointly talking with the vendor, you want to talk separately with your co-worker. Suggestion: Instead of remaining on the call with your co-worker, hang up after saying goodbye to the vendor. Then, redial your co-worker via a separate call.
The reason? That vendor may not have actually hung up. He or she may simply have muted the phone, remaining on the line and able to hear everything you and you co-worker say. Making a separate call prevents this situation.
7: Outdated voicemail greeting
Updating your voicemail to reflect a temporary absence helps your callers and helps your professional image. When you do so, you show that you’re on top of your schedule. Of course, I sometimes wonder why people change their greeting when they never answer the phone, but that’s a different matter.
If you’ve set a temporary greeting, though, make sure to change it back after you return. If your voicemail system lets you program the changeover to happen automatically on a given date, take advantage of it, if you can figure it out. Otherwise, consider a simpler reminder, such as merely putting a Post-It note on the handset. People will generally have no problem if you’re a day or two late in changing your greeting back. However, if your greeting still references your visit to Beijing for the Olympics, you’re way overdue.
8: Surrogate voicemail
How many times have you dialed a (usually) male person, and found that his voicemail greeting was that of a (usually) woman? In such cases, the greeting is a third-person rather than first-person greeting, right? That is, instead of “I’m away from my desk,” it’s “He’s/She’s away from his/her desk.” Of course, that person had his or her assistant record the greeting.
If you fall into this category, think about the message you’re sending. One possibility: You’re too important to be bothered with setting your own greeting. The other, more serious one: You’re too clueless to set that greeting. So on the one hand, you’re telling people, “I’m competent enough to handle this multi-million dollar systems project.” On the other hand, you’re telling them, “But by the way, I’m too incompetent to set my own voicemail.”
If you have trouble handling minor matters, why should others trust you with major matters?
9: Looking clueless on the transfer
How often have you called person A, asked for person B, and were then connected to person B’s voicemail? It’s probably happened often, because I read somewhere that something like 60% of calls fail to reach their intended person. Now, it’s one thing if your voicemail encounter happens when you call the company receptionist. After all, depending on the size of the company, few people would expect the receptionist to know the whereabouts of everyone in that company.
However, the situation changes if the person you reach is the personal assistant of person B. In that case, if you are that person B, think about how the caller will react. Your assistant probably has answered the phone with “Hello, [person B]’s office, [assistant's name] speaking.” The caller identifies himself and asks for you. Even though you’re out, the assistant puts your call through, and the caller gets your voicemail.
Be aware that the caller might be annoyed or irritated. Why? Because that caller presumes that your assistant knows where you are and probably presumes that the assistant sits right outside your office. Therefore, ask your assistant, if you have one, to alert callers before putting them into voicemail. That assistant, and you, will look more professional.
10: Inability to place caller into voicemail
Too many times, I have called someone and reached the person’s assistant. When I ask for voicemail, the assistant says, “Sorry, I don’t know how to put you into voicemail. Can you call again, and I simply won’t pick up?”
Whoever is covering the phone should know how to put a live caller into the intended recipient’s voicemail directly. This skill is important not only when the recipient is away, but also when the recipient IS available. A caller might not really need to speak to the recipient or might not want to disturb the recipient, preferring to simply leave a voicemail. In this case, asking someone to call again not only inconveniences the caller, but bothers the recipient as well.
Calvin Sun consults with clients to address and resolve organizational issues and writes and speaks on this topic. His Web site is http://www.calvinsun.com. You can also find him on Twitter. Read his full bio and profile.
Put your suggestions as comments