Thứ Tư, 30 tháng 11, 2011

The future of IT will be reduced to three kinds of jobs


There’s a general anxiety that has settled over much of the IT profession in recent years. It’s a stark contrast to the situation just over a decade ago. At the end of the 1990s, IT pros were the belles of the ball. The IT labor shortage regularly made headlines and IT pros were able to command excellent salaries by getting training and certification, job hopping, and, in many cases, being the only qualified candidate for a key position in a thinly-stretched job market. At the time, IT was held up as one of the professions of the future, where more and more of the best jobs would be migrating as computer-automated processes replaced manual ones.
Unfortunately, that idea of the future has disappeared, or at least morphed into something much different.
The glory days when IT pros could name their ticket evaporated when the Y2K crisis passed and then the dot com implosion happened. Suddenly, companies didn’t need as many coders on staff. Suddenly, there were a lot fewer startups buying servers and hiring sysadmins to run them.
Around the same time, there was also a general backlash against IT in corporate America. Many companies had been throwing nearly-endless amounts of money at IT projects in the belief that tech was the answer to all problems. Because IT had driven major productivity improvements during the 1990s, a lot of companies over-invested in IT and tried to take it too far too fast. As a result, there were a lot of very large, very expensive IT projects that crashed and burned.
When the recession of 2001 hit, these massively overbuilt IT departments were huge targets for budget cuts and many of them got hit hard. As the recession dragged out in 2002 and 2003, IT pros mostly told each other that they needed to ride out the storm and that things would bounce back. But, a strange thing happened. IT budgets remained flat year after year. The rebound never happened.
Fast forward to 2011. Most IT departments are a shadow of their former selves. They’ve drastically reduced the number of tech support professionals, or outsourced the help desk entirely. They have a lot fewer administrators running around to manage the network and the servers, or they’ve outsourced much of the data center altogether. These were the jobs that were at the center of the IT pro boom in 1999. Today, they haven’t totally disappeared, but there certainly isn’t a shortage of available workers or a high demand for those skill sets.
That’s because the IT environment has changed dramatically. More and more of traditional software has moved to the web, or at least to internal servers and served through a web browser. Many technophobic Baby Boomers have left the workforce and been replaced by Millennials who not only don’t need as much tech support, but often want to choose their own equipment and view the IT department as an obstacle to productivity. In other words, today’s users don’t need as much help as they used to. Cynical IT pros will argue this until they are blue in the face, but it’s true. Most workers have now been using technology for a decade or more and have become more proficient than they were a decade ago. Plus, the software itself has gotten better. It’s still horribly imperfect, but it’s better.
So where does that leave today’s IT professionals? Where will the IT jobs of the future be?

1. Consultants

Let’s face it, all but the largest enterprises would prefer to not to have any IT professionals on staff, or at least as few as possible. It’s nothing personal against geeks, it’s just that IT pros are expensive and when IT departments get too big and centralized they tend to become experts at saying, “No.” They block more progress than they enable. As a result, we’re going to see most of traditional IT administration and support functions outsourced to third-party consultants. This includes a wide range from huge multi-national consultancies to the one person consultancy who serves as the rented IT department for local SMBs. I’m also lumping in companies like IBM, HP, Amazon AWS, and Rackspace, who will rent out both data center capacity and IT professionals to help deploy, manage, and troubleshoot solutions. Many of the IT administrators and support professionals who currently work directly for corporations will transition to working for big vendors or consultancies in the future as companies switch to purchasing IT services on an as-needed basis in order to lower costs, get a higher level of expertise, and get 24/7/365 coverage.

2. Project managers

Most of the IT workers that survive and remain as employees in traditional companies will be project managers. They will not be part of a centralized IT department, but will be spread out in the various business units and departments. They will be business analysts who will help the company leaders and managers make good technology decisions. They will gather business requirements and communicate with stakeholders about the technology solutions they need, and will also be proactive in looking for new technologies that can transform the business. These project managers will also serve as the company’s point of contact with technology vendors and consultants. If you look closely, you can already see a lot of current IT managers morphing in this direction.

3. Developers

By far, the area where the largest number of IT jobs is going to move is into developer, programmer, and coder jobs. While IT used to be about managing and deploying hardware and software, it’s going to increasingly be about web-based applications that will be expected to work smoothly, be self-evident, and require very little training or intervention from tech support. The other piece of the pie will be mobile applications — both native apps and mobile web apps. As I wrote in my article, We’re entering the decade of the developer, the current changes in IT are “shifting more of the power in the tech industry away from those who deploy and support apps to those who build them.” This trend is already underway and it’s only going to accelerate over the next decade.

LAMP

Want to get a LAMP development environment fired up without the hassles of configuring everything from scratch? XAMPP makes it a breeze.
If you have ever had to set up a Linux, Apache, MySQL and PHP or Perl installed and running at the same time you know what hassle it can be. If you are new Linux it can be a rather daunting experience just trying to set everything up, nevermind learning scripting languages like PHP, Perl and a database like MySQL or SQL Lite.
XAMPP is a single packaged download from Apache Friends which provides all of the pieces of software needed, plus more you probably don't need, to make Apache installations with server-side scripting and a few database options ready to go in a testing or development environment.
In this article we will focus on getting XAMPP running on Linux, it will also work on Windows and a version for Sun's Solaris is also available. For our example we will use a Debian-based Linux distribution, but just about any flavour of Linux will work. To start, you will need to download the XAMPP package for Linux from the SourceForge Web site. The current version we downloaded was 1.4.9a.
The file is 34MB and according to the Apache Friends Web site includes the following software:
  • Apache 2
  • MySQL 4
  • PHP 5, 4 & PEAR
  • SQLite 2.8.9 + multibyte (mbstring) support
  • Perl 5
  • ProFTPD
  • phpMyAdmin
  • OpenSSL
  • Freetype
  • libjpeg, libpng
  • gdbm
  • zlib
  • expat
  • Sablotron
  • libxml
  • Ming
  • Webalizer
  • pdf class
  • ncurses
  • mod_perl
  • FreeTDS
  • gettext
  • IMAP C-Client 2002b
  • OpenLDAP (client)
  • mcrypt
  • mhash
  • Turck MMCache
  • cURL
  • libxslt
  • phpSQLiteAdmin
  • MD5 checsum: 4e853c535ced4e707cbfa6e59c0fc4e2

Security note
XAMPP is recommended to be only used in a development environment and not in production as the system has very loose security settings. The system can be tweaked to be more secure and we recommend following the steps here.
Once the package is downloaded you will need to extract it to a file. You can do this in two ways depending on which version of Linux you are using. You can use a file manager and extract the package into the /opt file.
To extract the files manually you can a console and type in the following:
tar xvfz xampp-linux-1.4.9a.tar.gz -C /opt
Make sure you are logged in as the system administrator. To do this manually type in su. It will then ask for your administration password. Type in the system's administration password.
Once this file has been extacted you will need open the file "lampp" in the /opt/lammp directory. If you open this using the file manager it will prompt a command shell with all the user options as shown in figure 1 below.

Firgure 1: The commands for XAMMP
If you need to do this manually, open a console and type the following command:
/opt/lampp/lampp start
The screen should show the same shell as shown in figure 1.After everything has started the next step is to test the Apache Server is running. The easiest way to do this is to open up a browser of your choice and type in the following:
XAMPP has a splash screen that will look something like in figure 2 with sample scripts ready for testing and use. Your LAMP environment is now ready to test your own Web applications.

Thứ Sáu, 2 tháng 9, 2011

10 programming habits that should be more common

You learn lots of things when you go to college and get a computer science degree or read a how-to-program book. Unfortunately, a number of good programming habits are either untaught or take a good amount of practice to turn into a way of life. Here are 10 such habits you should cultivate to become a better programmer.

1: Learn your source control process

You know that thing users like to do, where they pick up your application for the first time and get angry because it doesn’t do things exactly the way they want — and then they refuse to learn how the program works? You’re left scratching your head wondering why they didn’t bother to learn the application, which would have saved them all sorts of problems.

Well, a lot of developers do that too, when it comes to working with source control. Every source control system is a bit different and has a workflow that maximizes the value you get from it. Learn that workflow! It may take some time, research, and practice, but trying to fight it by making your source control repository look like the ugly mess you are used to creating on your local hard drive defeats the purpose. You might as well just have good backups for your local system and call it a day.

2: Go with obvious variable naming

This one comes up all the time: developers just give variables uninformative names and think it doesn’t matter. Well, it does matter any time someone else comes in to look at the code. I can’t speak for all developers, but I have yet to meet one who is typing for eight hours a day straight. Adding a few keystrokes for better variable names (especially when modern IDEs will autofill it for you) will make a measurable different in productivity. Stop making excuses and use better variable names.

3: Use interfaces, not classes when possible

I violate this one all the time, and I know it. Whenever possible, code to an interface instead of a class. For example, if your class needs to return an enumeration of Integers, there’s no need to return a List; return an IEnumerable. This allows recipients to do what they want without needing to recast or transform the results into a class that meets their needs.

4: Assume the worst from your peers

I’d love to think that everyone I worked with was as good, if not better than me at writing software. In some jobs, it was usually true; but in others, it wasn’t. I did learn, though, that you have to write your code as if someone with six months of experience (or someone with lots of experience who just is not very good) is going to be working on it next, because it may very well be true. What that means is that you can’t afford to write “fancy” or excessively “elegant” code. The next person to look at it could end up making a mess because he or she doesn’t understand it. I’ve discovered that writing code is like cooking: To please everyone, you can’t go for the escargot or liver pate; you need to be serving steak and potatoes. Keep your code basic and straightforward, and those coming behind you to maintain it will be able to do their job.

5: Assume the worst from your users

There is a bell curve of tech savvy with our users. We tend to miss the mark on usability and hit the lower end of the bell, but that still leaves about 10% - 20% of users in the dark. Aiming for the lowest common denominator means just that. With a few exceptions, you have to assume that the person using your application will never look at documentation, attend training, or otherwise seek out how to use your application.

6: Document the reason for a change

All too often, there will be a change in an application but no documentation of why the change was made. A few months later, someone will notice that the change conflicts with another requirement and demand to know why it was made, and no one will actually know. The next thing you know, everyone will be losing a lot of time trying to figure out where the change came from and why. By documenting the purpose of the change (and who the requester is), you’ll be saving everyone a big headache down the road.

7: Explain the purpose of algorithms

In the same vein, any algorithm should have a clear explanation of why it was chosen. For example, I support a CRM system that has a nonintuitive formula for applying discounts to purchases. No one can quite explain why this specific formula is in place, but it is not working in some scenarios. We are not quite sure how to change it, because the reason for its current form is unknown. All it would have taken was a simple comment that said, “We do it like this because of consideration CYZ,” and everything would be fine.

8: Provide contextual help

We all know that users tend to gloss over training materials. At the same time, it’s important to provide a variety of contextually available help in your application. While users won’t read the manual, they are likely to click the giant question mark next to the input control they don’t understand. Put your help access as close to the UI controls as possible with targeted text to make it easy for users to get the help they need. Also, remember to use terms and phrases your users will understand, not internal jargon.

9: Perform cross-platform testing

If you are writing Web applications, it is important to test them on a variety of platforms. You will want to check different browsers on different platforms. Sounds like a hassle, right? It is. Luckily, there are some tools to help with that. Check out the offerings from Sauce Labs to make it a bit easier to cross-platform test your Web applications.

10: Keep the users in mind

A lot of business requirements don’t help the users at all, and some may even annoy them. These requirements may be non-functional but are designed to satisfy someone in the marketing or sales departments. A great example is a registration page that asks for a lot more information (and makes it mandatory) than most users feel comfortable giving. While I understand the motivation (making their jobs easier), developers often underestimate how much users dislike it –while overestimating users’ desire to get the benefits of registration. Remember that there are few unique propositions in this industry, and you do not have the luxury of turning users away. Fight on behalf of your users to make the best application possible.

What would you add?

What other good practices do you think are underused? Do you have any pet peeves you’d add to this list?

Source: http://www.techrepublic.com