How to Keep Your Job
An anonymous reader submits: "Dave Thomas of "Pragmmatic Programer" fame presents the first in a series of slides based on presentations about how programmers can maintain job security in this time of increased competition, cost cutting, outsourcing, etc. He makes several excellent points about things many programmer may not think about such as the dangers of over-reliance on one company or sector, the importance of diversity of knowledge, the fact that foreign programmers CAN produce quality code, and the fact that time does NOT necesserily equal value (the Everquest Syndrome) when it comes to software engineering. There is a lecture that goes along with the slides, but a great deal can be learned from the slides alone. Worth the read..."
The main thing to focus on is value added. If most of your code is reused open source stuff you don't need to worry as much.
From an article I wrote:
http://xminc.com/linux/hottest_it_skills.h tml
Focus on Value Add
Value-add is mostly common sense - but common sense many IT professionals miss as their vision is clouded by technical details. How can you add the most value to your customer ? i.e. " What is my current/future customer/employer's biggest problem - and what can I do to fix it most efficiently and effectively in the long term ?".
Try to learn skills in areas that are "must have's" - a litmus test is " If the service was unavailable for 1-7 days could the company continue to function like normal ? ".
Many people focus on the value add marketed by vendors. For example a major corporation I know was thinking of moving their desktops from Windows 2000 to Windows XP. The true value add in this case is questionable. In general it is wise to question all claims from vendors for materials particluarly if they include the terms "legacy" and "upgrade".
Skills with Open Source software immediately make you of value. You can implement a File server for 500 users for only the cost of the hardware and consulting time ? A firewall/proxy server on a reused server ? Cost to the client = Nothing + Cost of your labor = a real win.
For programmers it is good to focus on learning environments that allow you to more rapidly produce useful quality code. Open source gives you access to tons of tested libraries that can speed your development time. Using dynamically typed and interpreted programming languages such as Python, Perl or LISP will reduce the number of lines of code you have to write and debug, and speed the code-compile-debug cycle, which can cut the cost of development(1).
Open Source tools give you access to the guts of the application - which allow you add more value to the customer. In tradional proprietary software solutions such as MS SQL Server if you have problems you need to pay a lot of money to call the vendor to get access to some hidden debug parameters that you can then apply to the application. You then try to interpret the debugging information, submit it to the vendor and then wait for a patch. This is much like trying to fix a car when you can't open the hood. Save the $20,000 part of the service contract and do it yourself. Often times this takes a mixture of system administration and programming talent.
Recognize most people adapt very slowly and typically resist technological change. For example replacing Microsoft Office with Open Office on 1,000 desktops may sound great in terms of reducing total cost of ownership. However, the truth is that the amount of time for retraining and resistance from the user community would probably make this project fail. Lock-in to proprietary systems is the athema to value-add.
Try to understand the economics of technlogical change(2), understand how to do a business proposal, and how to sell software projects. If you do - you are more likely to get " what you love " accepted as a corporate solution. Typically with sales of software solutions you sell to the business decision makers - not necessarily IT. Get the product or solution in their hands so they can evalgalize it and make sure you sell at multiple levels in the organization - have multiple people "going to bat " for you and your solution.
Avoid monoplies if possible. Software vendors can reduce the value add of the "total solution" that you are working on by arbitrarily changing licensing agreements and increasing prices. By using open standard or open source software that is not controlled by one company you ensure that you solution will have longer term value. Open software generally has a longer staying power than propretary solutions. Witness the staying power of ANSI C programming environment or the X86 hardware platform(3).
Different operating systems allow you to add different amounts of