Archive for the ‘Employment’ Category.

Say YES to Education but say NO to large debt (part1)

Recently, I have seen articles discussing the idea of “saying no to college”.

Education is extremely important! Notice, I didn’t say college was extremely important I said education. UnSchool is not exactly off base. They are saying to get educated, but they are saying to do it without college. However, college degrees are the standard today for proof of education, and that should not be overlooked.

Some of the arguments for UnCollege and not valid. For example, here is one of the quotes:

“You wasted $150,000 on an education you coulda got for a buck fifty in late charges at the public library.”
– Will Hunting

OK. So I am total agreement with this statement assuming you were foolish enough to spend $150K on a college degree. Do NOT spend that much on a degree unless you are going to be something like a specialized surgeon or unless it doesn’t change the number of zeros in your (or your daddy’s) bank account.

I am not, however, in perfect agreement with UnCollege. My recommendation is to acquire education and do it in a way that provides “Proof of Education.”

Person Experience: I have a bachelor’s degree and I am almost done with my Masters of Computer Science. How much debt have I incurred from my bachelors and my Masters? $0. Now that doesn’t mean I never had a loan for education. I took out a $4k loan for a certification course. My certification was my first Proof of Education.

Proof of Education

Proof of Education is proof that you have learning or experience that can help you be successful in a role. Proof of Education is extremely important.

The most common and well-known and most accepted form of proof of education is a High School Diploma followed closely by a Bachelors degree. Another well-known proof of education but not necessarily considered such is your driver’s license.

Here is a list of the common forms of Proof of Education. These end with a nice certificate from an accredited institution.

  1. High School Diploma or GED
  2. Bachelors Degree
  3. Masters Degree
  4. Doctorate or Ph.d.

These are not the only ways to obtain Proof of Education. There are other ways however, the “proof” part is often harder to come by as it is not always a nice signed piece of paper from an accredited instituation.

  1. Job Experience
  2. Apprenticeship
  3. Certifications in your field
  4. Non-profit work and projects
  5. Life experiences

How do you prove Job Experience? Job experience is not too hard to prove, especially if the company is still around and their HR can confirm your employment and title. If the company you worked for disappears, how can you prove you worked there? Well, pay statements, references (keep in contact with previous managers and co-workers which is very easy these days).

Why is a degree the most important Proof of Education?

Often in many companies and government organizations a degree is required. If the most qualified individual doesn’t not have a degree, they are likely not to even get an interview because they don’t pass the filter.

Personal Experience: Even there is a possibility for an exception to be made, it often isn’t. I interviewed for a government job that required a Degree in Computer Science. I was qualified. My undergraduate degree was in English because I could already write code. This company wanted a WPF developer (which is my forte) and were willing to pay 110K a year, but my undergraduate degree was in English. They couldn’t make the exception despite my experience and I lost out on a great high paying job.

Personal Experience: My father’s degree is in Psychology. He worked a great job in the oil field for twenty years. Then he passed some Appraisal certifications and became an appraiser of houses. It seemed he may never use his degree. During the housing crash, around 2009, he had the opportunity to teach seminary to supplement his income. Teaching required a degree. He would have lost that opportunity without a degree.

Why may a degree not be for you?

Here are some examples of why a degree may not be for you:

  1. You may never use it. I know many people who end up working in the oil field or as a mechanic or various other positions that don’t require a degree an they never use it.
  2. It may not be worth the money. A degree in English from Yale when you plan to be a technical writer is probably not going to provide any bang for your buck. A degree from your local community college in english or even just some technical writing courses and experience would probably result in similar salaries, so save yourself some money.
  3. You want to be an entrepeneur. You just have the bug and want to work for yourself. Take some business courses somewhere, and get your business started, and stay away from college. Just be aware that most business owners fail many times and put in 80 hours a week while failing. However, once you succeed, you could end up making six figures and possibly more. It is higher risk but higher reward.
  4. You just can’t sit still and concentrate in a classroom environment and fail anytime you try. If this is you, you know who you are. Find another way to get educated and make sure to grab some Proof of Education along the way.
  5. You already have a marketable skill.

Personal Experience: I have a brother-in-law who doesn’t have a degree. His father was a surveyor and he started working with him at a young age and had years of experience already and a marketable skill already. He got a few certifications and has a great job. He may never need a degree. However, he is only in his thirties so who knows if he will wish for a degree sometime in his career.

Continued in How to get a degree and stay out of debt? (Part 2)

How to get a degree and stay out of debt? (Part 2)

Continued from Say YES to Education but say NO to large debt (part1)

Pay as you go. Get a company to reimburse your for education. This is easier said than done. It takes work, but it is doable. I know because I did it for certifications and for my Bachelors degree, and I am doing it now for my Masters.

Step 1 – Choose your career field

In what field do you want to work in:

  • IT
  • Software Developement
  • Business Intelligence Analysis
  • Sales
  • Dental
  • Medical or Health
  • Home Improvement (plumbing, electrical, etc…)
  • Mechanic
  • Other…

Step 2 – Research entry-level proofs of education in the field

Take any field of employment and search the internet for it along with basic words such as “certification” or “certificate” or “apprenticeship”. For example: Developer Certification, Medical Career Certification, Dental Apprenticeship. You will probably find some nice and cheap ways into your field.

Step 3 – Start on the quickest proof of education to obtain

There are a lot of certifications that come after a one week course. There are a lot of jobs where you can be an apprentice and learn while your work.

Example: Sometimes, there are no solutions to be faster, only solutions to be cheaper. Think of becoming a General Contractor for example. You can work framing houses for four years and study to be a general contractor on the side. Four years experience is a requirement. Sure you don’t make much money your first four years, but you won’t gather 150K of college debt and at the end of four years, you will have experience and a General Contractor’s license, which is proof of education.

Step 4 – Get an entry-level job with a company that has education reimbursement

Find all the companies in your field you can work at. Apply at all of them for entry-level positions. Make sure to let them know about your “proof of experience”. Volunteer at them if you have to until you get hired. Try to choose one that has tuition reimbursement in your field.

Note: Be smart. If a company will pay you $15 an hour with tuition reimbursement, that is not as good as a company paying $25 and hour without tuition reimbursement. Who cares if you pay for the tuition or the company if you aren’t going into debt and you are getting good experience.

Personal Experience: You may have to start with any job, even one outside your field. I needed to get a $4K loan to get my first certifications. In 1999, I needed to make $9 and hour in order to get a 4K loan to get some computer training and a computer certification. I got a job as a grunt on a crew that framed houses even though I wanted to be either in IT or in Software Development. I got up to $9 an hour framing houses, got the loan, and took a 12 week course evening course for a certification called an MCSE. I came out of the course with only one of the five exams past: a single certification, which started me out as an MCP. With that one certification, I got a job making $14.42 an hour at a company called Convergys that pays tuition reimbursement.

Step 5 – Take two classes a semester while working

Working full-time is tough. Going to school full-time while working full-time is even tougher. I recommend part-time. Let your career and your degree grow together.  Create a spreadsheet of every class you need to graduate.

Important Personal Experience! Get accepted for your major. Get commitment from the college about graduation requirements. Too many people fail to take time to get accepted in their major and then the requirements change and they feel like they have to additional requirements. Usually, if you get accepted and work with a counselor, you can graduate without taking extra credit hours because of a change in curriculum.

Personal Experience: Your company may have limits to education reimbursement. Mine did. I could only reimburse $3500 a year, so I could only take about 15-18 credits a year. I found this was beneficial anyway. I took two calls in fall, two class in the winter, and one in the spring/summer. Night classes catered to working adults. They seemed easier because I already had knowledge from work. I was able to get work credit. Sometimes when taking a class in my field, I was able to do projects for my classes that coincided with work projects. It took me six years to get my degree but when it was done, I was completely out of debt and had years of work experience behind me so I wasn’t ever just a new college grad. I graduated at age 27. I started work and college at age 21 because I spent two years on a religious mission to the Dominican Republic from age 19-21. (Oh yeah, I speak fluent spanish. My proof of experience, living two years in the Dominican Republic.)


If you start this process when turn eighteen, you will have a college degree and, assuming it took you the first year or two to get in your field, four or five years of experience.

Look at this comparison chart:

4 years of college 2 years Job 6 years working and Degree
Education Debt $80k to $150K $0-$5k
Montly debt payment $400 to $1500 $0-$50
Years to pay off 10 to 20 (already two years in) 1 year
Experience/Salary level 1-2 years 4-6 years
Degree Yes Yes
Certifications No (but they could) Yes
Partying time at school Plenty A little

I think you can see why UnCollege exists. However, I think the focus should neither be “College” or “UnCollege” the focus should be to get Proof of Education without going into debt.

WPF jobs trend up according to

According to the amount of WPF job trends up rapidly.

Since XAML is going to be used in Windows 8 as well, it is not going away any time in the next decade. Also, declarative UI will improve in the future, not disappear. So there is job security in this.

A Developer’s Resume

I saw some alternate resumes for designers and I thought I would do an alternate resume for a developer. Make sure that if you use this, you are applying at a company that will appreciate it and not just throw the resume away.

namespace Resume {
  public class Candidate {
    public ContactInfo Info {
      get { return new Person {FirstName = "Jared", LastName = "Barneck", 
                Street = "9110 Rigewood Place", City = "West Jordan", 
                State = "Utah", Zip = "84088", Email = ""}
    public List<Experience> WorkHistory {
      get { List<Experience> exp = new List<Experience>(); 
            exp.Add(new Experience() { Start = "3/2012", End = "Present",
              Company = "Caradigm",
              Positions = new string [] { "Lead Software Developer"};

            exp.Add(new Experience() { Start = "9/2004", End = "3/2012",
              Company = "LANDesk",
              Positions = new string [] { "Software Developer", 
                "Systems Analyst Developer", "Product Support Expert/Lead",
                "Channel Support Manager"}};
            exp.Add(new Experience() { Start = "1/2000", End = "9/2004",
              Company = "Convergys – Nortel Networks Account",
              Positions = new string [] { "Advanced Networking Trainer", 
              "Technical Lead", "Support Engineer"}};

	      return experience;
    public List<Education> Education {
      get { List<Education> edu = new List<Education>(); 
            edu.Add(new Education() { Start = "8/1999", End = "8/2004"
              College = "Brigham Young University",
              Degree = "BA – Technical Writing"};

            edu.Add(new Education() { Start = "9/2006", End = "4/2009"
              College = "Brigham Young University",
              Description = "Various Computer Science courses"};

            return edu;
    public List<String> Certifications {
      get { List<String> cert = new List<String>(); 
            cert.Add("Certified LANDesk Engineer");
            cert.Add("Nortel Networks - Routers");
            cert.Add("Nortel Networks – L3 Switches");
            cert.Add("MSCE NT 4.0" };
            return cert;
    public List<String> Skills {
      get { List<String> skills = new List<String>(); 
            skills.Add("C#"); skills.Add("WPF"); skills.Add( "MVVM");
            skills.Add("PHP"); skills.Add("MySQL"); skills.Add("Apache");
            skills.Add("Shell Scripts"); skills.Add("Batch Files");
            skills.Add("FreeBSD"); skills.Add("Linux"); skills.Add("Mono");
            return skills;

Why Technical Support Engineers are not all the same!

Technical Support Engineers are not all the same. There is an inclination in the industry to look down on Technical Support Engineers.

Recently the following article was published:
10 IT positions ranked by prestige

This article didn’t exactly identify the Technical Support Engineer role, but it was unfortunately encompassed in the bottom two positions with the lowest prestige, Technical and Help Desk Analyst.

Should a Technical Support Engineer have the lowest prestige of all technical jobs in the industry? If you think so, you might want to reconsider after read this.

There are multiple levels of technical support and you should know what level of technical support a person is in because that should significantly change your view of this persons technical skills and ability.

What they support and to what level they support it makes a major difference in how to view a Technical Support Engineers background.

Obviously there is a difference between someone who does tech support for a company like Cisco, Microsoft, LANDesk than someone who does technical support for a BowFlex. But this is an obvious difference. A chart that is more of gradient is needed.

Here is some information to help guide you in determining what experience a Technical Support Engineer really has in the technology industry.

1 – Complex product that requires knowledge of an entire area of technology, including both software and hardware environments

These engineers are often not just support engineers. Along with being an expert on their product, they must understand many other concepts such as Networking, Servers and server-side software such as Web Servers, Database Servers, DNS servers, DHCP servers and more. It is not enough to just know how to set up their software, they have to know how to set up the environment around it. They also have to know how to troubleshoot to deep levels both their software and the environment around it.

Usually these engineers practice during portions of their job being Systems Analysts, Consultants, Sales Engineers, IT administrators, Change Controls administrators, developers, and more. They deal will the full gamut of technology and all the areas around it.

Example companies

Desktop Management companies such as LANDesk, SCCM, Kace.
Network Manager Software such as HP OpenView

2 – Specialized product that requires knowledge of one major portion of an IT or Software Environment

These engineers are often not just support engineers. Along with being an expert on their product, they must understand many other concepts in the technology world. It is not enough to just know how to set up their software, they have to know how to set up some portion, though not all, of the environment around it. They also have to know how to troubleshoot to deep levels both their software and their portion of the environment around it.

Like above, these engineers have some limited consulting experience and are gaining understanding of change control and IT administrative processes along with being technology experts.

Example companies

Support for Network Equipment such as Cisco, Juniper Networks, etc…

3 – Specialized product that requires knowledge of a single area of an IT or Software Environment

This person is an expert on their software or hardware product as well as an expert in one or more areas surrounding it.

Individuals who excel here are usually are ready to explode into a new technology after a little as one year in this position.

Example Companies

Business intelligence software, such as QlikView.
Dell, HP and other computer resellers.
Simple Appliances, such as a NAS.
Any company’s internal Computer Help Desk (but be aware of glorified password resetters)

4- Specialized product that requires technical knowledge but only for that exact product

This person is an expert on their software or hardware product but there is not indication they know anything else about technology from this position, which doesn’t mean they don’t, just that this position doesn’t indicate it.

Example Companies

Home consumer products such as Wireless Routers from D-Link, Linksys, etc.

5 – Specialized product that requires knowledge in an area outside of IT but still somewhat technical

This person is an expert on their software or hardware product as well as an expert in one or more areas surrounding it.
Usually this product has interfaces into other technology that not used commonly but Technical Support Engineers usually don’t take the common calls for things that just work, they learn the tough issues, which usually involves integrating with something else. However, they don’t always know that area of technology, just the minimal knowledge to make their product work with it.

Example companies

Software Applications outside of IT: Microsoft Word, Excel.

6 – Specialized product that requires knowledge in an area outside of IT but not exactly technical

This person is an expert on their software or hardware product as well as an expert in one or more areas surrounding it. This expertise is beneficial outside the position but only in limited areas.

Example companies

Software Applications outside of IT:
Adobe Photoshop
gaming software

7 – Specialized product that requires knowledge that is technical but not really related to software or IT at all

This person is an expert product but it is just a simple product that being an expert on it really has no value anywhere else.

Example companies

Cable box companies
radios and sound systems

8 – Generic product that requires little technical knowledge

This person usually supports something that is sold on a made-for-tv ad, such as an exercise appliance. They usually have a script they follow and this position can be filled by almost anyone who can read and speak.

Example companies

Clock Radios

How to get a job in software development in as little as 6 months

Hello. I keep hearing about the number of unemployed.  Many have been unemployed for more than 6 months and are likely to be unemployed for another 6 months.

Well, technology is not going away so here is a solution for some of you.

Many of you think that you need a degree in Computer Science to become a Software Developer.  This is just not true.  Many of the Software Developers that I know do not have a degree in Computer Science.  However, most love technology and so they learn it on their own.

If you love technology and you can learn on your own, you could become a Software Developer in 6 months.

While this article is for Software Development, the pattern I describe here work with IT as well, and many other careers in many fields.

Disclaimer: I can’t promise that everyone who does this method will succeed in 6 months, but at least it is a pattern that you can try. And if you end up getting a job outside of technology the skills you learned here will still be beneficial for the rest of your life as computers are likely to still be here well past your retirement.

Month 1

Step 1 – Get access to a computer and the internet

Yes you need a computer to become a software developer.  You even need one to study. You need the internet to have access to the nearly unlimited amount of free training material about development.

Step 2 – Choose one of the top programming languages

The top languages for writing code today and probably will continue to increase in popularity in the future are these:

  • Java
  • PHP
  • C# or ASP.NET

Other languages that are popular are C++, Objective C, Perl, Python, etc…

Web development is fun too. HTML, CSS, JavaScript, etc. One language that is likely to become more popular now and in the near future are HTML5. You have probably heard buzz about it.

However, these are no the only languages you could learn.

Maybe you would like to work with databases. You could learn to about SQL.  There are many databases to choose from, the top being these:

  • MySQL
  • MS SQL
  • Oracle
  • PostgreSQL

Maybe you are into business technology. You could become an expert at a specific piece of software, such as how to create business intelligence reports with QlikView. There are hundred of products that require technology experts to use them and specializing in any one of them could lead to a stable career.

Step 3 – Find the Certification Preparation material

Here are some of the Certifications for the common languages.

Here is a list of certification sites for database software.

Many software applications have certification as well. You can find these certifications with a simple search on the internet.

Once you have the certification material, there should be some information on what to study and what to learn to complete the certification. It is your goal to pass a certification in 6 months.

Step 4 – Download any free or trial software

Almost all software has either open source, or a shareware, express, or trial versions of their software that you can use for free.  Sometimes, like in the case of trial software, there is a time limit.  But that doesn’t prevent you from learning as much as you can before the trial expires.

To become a developer, one of the most basic tools is an Integrated Development Environment (IDE).  Here is a list of the free or open source IDEs you can get.

You can find free or open source version of other software for other languages with a simple search on the internet.

With this free software you are set free to practice as you learn.

Step 5 – Access the free documentation and training on the internet

There are a lot of free tutorials, videos, blog posts and more on the internet.  You can become an expert in something without ever buying a book or paying from a training class.

The following site has a quick tutorial on almost all programming languages:

You can use this information to study and prepare for your certification.

Make a list of all the tutorials you have found and that you plan to study. Put this in a spreadsheet in a nice way, maybe a separate line for each chapter or section, so you can see your progress.  If you want, email the spread sheet and I will post it for the next person.

Month 2 – 3

Study and practice. You now ave all the software you need and all the training material you need.  Go through it.  This takes time.

Do the sample development projects, don’t just look at them, code them up, compile them, and run them.

Month 4

Step 1 – Pick a development project and work on it.

There are so many open source projects in the world and you can pick any of them. Or you can start your own. Or maybe you have an idea for some software that you can sell and you can start your own business. Whatever, just pick something and start working on it.

Here is a good way to figure out what project to choose.

  1. Ask yourself, what interests me outside of development? (Maybe you are a mechanic and you tinker with cars, or maybe you like to collect stamps, or maybe you like horses)
  2. Is there an open source software project in this area? If not, is there an opportunity to create one? Or better yet, is there a software opportunity that could inspire a small business in this area.

Another option, if you have any connections with any company at all, offer to do something to help their company for free.  Maybe your hair stylist needs you to develop something to help her with her clients.  Even though you are doing it for free, you are writing code that will go into production in a business environment.  This experience is invaluable.

Step 2 – Keep learning

As you start working on this project, you will start using what you have already learned. However, you aren’t done learning. And you will have to solve some tough problems. Keep learning.

Month 5

Step 1 – Schedule the certification exam you have chosen for the end of the month

Keep learning. Keep working on your development project. However, take some time to focus on the certification exam. Find practice tests, sample question.

Most people fail the exam on the first try.  This is why you are taking it once in Month 5.

Step 2 – Start the job hunt

Start looking for companies that are hiring Jr. Developers or entry-level developers in your position.

Add to your resume all that you have done, your project, you training, your certification if you passed it.

Month 6

Keep up the job hunt.

If you didn’t pass the certification in Month 5, repeat month 5 steps.

Take the first job you can get, no matter the pay. You are on your way to becoming an experience developer.

Month 7 and later

Keep it up.  Just because you didn’t quite make it 6 months doesn’t mean the work you have done isn’t valuable and isn’t going to pay off.

Still not passing the certification exam. Don’t worry, these test are hard and I know people who understand the technology of a certification that still fail multiple times.  Keep trying.

The long term career

Developers with 1-3 years experience can make 38k to 59k. With 4-8 years experience they can make 60 to 80k. And if you have worked hard to become a senior developer, your salary can skyrocket towards 6 figures and beyond.


Software Business Ideas

There are many ideas for starting a business and I have a nice list myself. If you are interested in an idea that you think could become a successful selling piece of software, I am will to help you an consult with you.  Just hit me up on the contact page.

Not into development?

Trying applying this pattern other careers. I think you find it works for many other career paths as well.  This could also apply to the medical field, housing market, and many other fields.



The 8 Types of Technical Documentation and Why Each Is Important

Technical documentation is critical to the success of any software. However, most creators of software struggle to provide adequate documentation for their product. Rare is the software that is praised for its documentation. When documentation is praised, it is often only praised for having some documentation, which is more than most, but in reality documentation is usually still inadequate.

So what constitutes adequate documentation? Well, if a user wants to do something with your software and the documentation helps them succeed in a timely manner, then the documentation is adequate. However, accomplishing this is not as easy as it sounds.

Why most companies fail to document properly

Most companies do not document their product thoroughly for a few reasons.

  • Lack of a defined list of all types of documentation
  • Lack of understanding of each type of documentation
  • Documentation is not made a priority and lacks of funding

Lack of a defined list of all types of documentation

Many cannot name more than one or two forms of documentation. To be successfully with documentation, a software company must first enumerate the types of documentation. Then it must learn about each type of documentation and understand the role that each type of documentation plays. It is also critical to understand the different target audiences each type has. Also, what are the common mistakes made when trying to create each type of documentation so these mistakes can be avoided.

Attempts are made to document software in different ways. However, because a complete documentation set is not defined, success is nearly impossible. To make matters worse, there is little to no reporting or visibility into the level of documentation a given piece of software has. I have never encountered software that has reached a 100% documentation level.

In order to succeed there must be an understanding of the types of documentation.

  1. Step-by-Step Walk-thrus – Also called Guides, How to’s, or Examples, Quick Start Guides
  2. Product feature documentation – This is lists all the features and settings without really any real world examples. Often the help button inside the software points to sections of this document.
  3. Troubleshooting Documentation – What to do when a failure occurs. Where are the logs and how to read them. How to turn on or increase logging and debugging.
  4. Knowledge-base (Problem, Cause, Resolution), Frequently Asked Questions (FAQ), and Forums
  5. Code, API, or SDK Documentation
  6. Internal Development Documentation – Such as code and development documentation, internal only features use by developers and/or testers, architecture documentation (Note: For open source projects this information is usually public)
  7. Real life customer implementations – Examples of how a company has a product implemented in real life
  8. Marketing documentation – Basic over views of the value the software has for the company, ROI claims, general feature lists, costs, etc…

The worst documentation of all is of course the absence of documentation. However, most software companies are unaware that there are entire areas of documentation that are lacking. To have complete documentation you must provide it in all of these areas.

Lack of understanding of each type of documentation

Since most software companies are unaware of the list above, it makes sense that they don’t understand the items on the list. This is why they have no direction and their documentation is a sporadic combination of the different documentation types, never fully succeeding to accomplish the primary goal of documentation, which is to enable the reader to succeed.

In order to create excellent documentation, a full understanding of each type of documentation is requisite. Without this understanding, documentation your documentation will continue to be lacking.

The lack of understanding also leads to assumptions that are not true. Some think that if they try to document every setting their software has they will have complete documentation. Usually when this is done, there is so much effort put into this that providing a simple example is forgotten. Often I hear this question:

Why would an example be needed, every feature is documented?

I would answer this question as follows:

Information overload. Now there is so much documentation in one white paper that someone who wants to do something simple is unsure that it is simple. They don’t know which features they must setup and which are unnecessary or should remain as defaults.

I often find this with Open Source documentation and unfortunately when a user asks for an example they are often rudely told to “Read the Manual” or RTM. However, the manual is usually hundreds of pages and they probably need to read one page of the manual but just don’t know where to start.

If have seen documentation using only examples as well. However, when an attempt is made to deviate from the examples, there is nothing left in the documentation to provide the guidance necessary to succeed.

Some documentation is better defined, such as that created from the results of support calls, forums, or mailing lists. Because this type of documentation is completely reactionary, this is one area of documentation that is better defined. The documentation is created after a problem is experienced and has to be dealt with. However, once created, it exists to benefit others. As this documentation type is better defined you might not be surprised to know that it has its own acronym: KCS or Knowledge Centered Support.

The goal of this article is to raise awareness of all types of technical documentation and make them all as well-defined as support documentation.

Documentation is not made a priority and lacks of funding

Investing in documentation is expensive. But it is usually and expense that pays off. If an analyst has to choose between two competing software applications and one is well documented and one is not, the well documented software application is likely to be chosen. Many organizations fail to see the ROI in documentation and therefore choose not to invest.

It is obviously that lack of funding for documentation is an industry wide phenomenon. While technical writing has been around since even before software, a standard for documentation whether it be creating documentation, updating documentation, managing documentation, and reporting on documentation has yet to formally exist. However, I did find this link, which shows I am not the only one who has identified this problem:

So lets get back to our list. Below I will go through each type of documentation and provide some information on it.

Type 1 – Step-by-step Walk-thrus – Also called Guides, How to’s, or Examples, Quick Start Guides


This type of documentation is nothing more than actions that the reader will take to accomplish something with your software. This documentation, when done right, could be followed by the most computer illiterate. If they read and follow each step, even if they have no idea what they are doing, they should succeed.

You may also want to read: Your project’s ‘Getting Started’ tutorial sucks – Why time to success matters


To provide the most common, most tested, most successful, and best overall example of how to accomplish some particular task from start to finish with your software.


Most commonly, trainees and new or evaluation users. However, anyone who wants to achieve the results the step-by-step guide leads to is included. This is most often, but is not limited to, users of your software. It includes deployment engineers, configuration specialists, support engineers, and demo or sales engineers.

Common Article Names

  • Quick Start Guide
  • Step-by-step Guide for setting up “Software X”
  • How to configure “Some Feature” of “Software X”

Common mistakes

There are many common mistakes

  • Not clearly defining the starting point of the walk-thru. Think of the starting point of a software that installs on Windows. What version of Windows, what other software must be installed, etc…
  • Defining the starting point clearly, but using a starting point most people don’t know how to get to. For example, you starting point should probably not say “have SQL Server installed and a database created with credentials” without providing steps.
  • Assuming the reader knows how to accomplish a task, so the documentation simply states to “do task x” instead of walking the reader through doing the task.
  • Skipping steps or forgetting steps.
  • The development department changes the steps just before release but the documentation is not updated to match.
  • Trying to simultaneously provide Product Feature Documentation in the middle of your steps. A link or note is acceptable for steps or settings that customers commonly customize.
  • Trying to provide comprehensive troubleshooting documentation after each step. It is great to have a link or a reference to troubleshooting documentation but it shouldn’t interfere with the walk-thru.
  • Only creating step-by-step guides for a couple common features of your software.
  • Failing to add documentation after use. For example, when a consultant, support engineer, or other employee struggles to set up a not-well-documented feature and once successful, they still don’t document it.

Type 2 – Product feature documentation


This type of documentation is a description of every feature and setting. What it is used for, when and why one would use the feature or setting.


This is for users who need to stray from the common walk-thrus and need to know what alternate and uncommon settings are used for so they can determine which they need in their particular environment.


Any customer/user who needs more than the most common features. Your own support representatives and architect or professional services teams. Consultants who recommend your product or are trusted to determine if your product meets a feature set for potential customers/users.

Common Article Names

  • The Software X Handbook
  • Software X: The Complete Reference
  • Understanding Feature Y of Software X

Common mistakes

  • Burying the features in other documentation, such as walk-thrus.
  • Not including at least a comment about when the feature would be used.
  • Not being aware of the features your customers/users are aware of and using. There are lots of “unintended features” and you should capture them in documentation.
  • Not letting customers contribute to this documentation in some way, even if it is just comments (this is the best way to solve the above issue, too).

Type 3 – Troubleshooting documentation


This documentation describes steps to diagnose problems. It includes information on logs files. It includes information on the behind the scenes business your software is doing, such as process/thread work, file or data interaction, etc…

If the users tries to do some task with your software and it fails, to them, a single task failed. However, to fix it, one might need to know that behind the scenes ten different processes occurred. It is important to be able to diagnose which background processes worked and pinpoint which one failed, so you don’t troubleshoot all ten background processes when only maybe the seventh is the problem.


To help customers/users get pasts unexpected issues and to help support engineers diagnose issues. These don’t have to always be public, but should be in the hands of your support engineers.


This is for support engineers more than customers, though the more experienced and “get your hands dirty” customers/users will use it. Engineers who do on site installation or on site configuration may need this information for when they run into bumps.

Common Article Names

  • Feature X: The complete troubleshoot guide
  • Troubleshooting Feature X

Common mistakes

  • Confusing “Problem, Cause, Resolution” documentation (also called Knowledge Base articles) with Troubleshooting documentation.
  • Not creating this documentation because you assume product feature documentation covers this. It doesn’t.
  • Providing this documentation but not providing complete troubleshooting steps for whatever reason. Especially if troubleshooting is done with 3rd party software and outside your own product it is assumed outside the scope when it is not. For example, a product that requires a DNS server, should provide steps to make sure that a DNS server is configured as the product expects. You may not have to write such documentation if the 3rd party vendor has some, but you should link to/reference it in your own documentation.
  • Writing documents that have lists of “fixes to try”. This documentation should almost never include “fixes”, but instead should diagnose the issue or pinpoint the problem so precisely that the fix becomes obvious whether the fix currently exists or not.

Type 4 – Knowledge-base (Problem, Cause, Resolution)


This documentation is most commonly the result of customer support tickets/cases. It lists a specific problem, a specific cause of the problem, and a single resolution to that problem. As mentioned early this is one of the more well-defined areas of documentation. Read more here about KCS or Knowledge Centered Support.


To make it so an issue only has to be troubleshot and fixed once. Once an issue is fixed, the Problem, Cause, Resolution can be documented and the fix can be applied without troubleshooting when the same Problem and Cause occurs.

To keep knowledge in-house. Tech Support is a high turnover position so keeping knowledge in-house is not always the easiest task.


Customers who experience a problem. Support engineers or other employees to whom the problem is reported.

Common Article Names

Frequently Asked Questions or FAQ.

Common Issues.

Common mistakes

  • Providing multiple Problems, Causes, or fixes in the same article.
  • Providing a problem and a list of fixes with no way to determine which fix is the correct fix.
  • Having an article that recommends a fix even when a customer is not really having that problem.
  • Failing to provide a good search for the knowledge base articles.

Type 5 – Code, API, or SDK Documentation


This documentation describes how others use your code or libraries to write add-ons, plugins, integration, or otherwise customize your application through code. Do not confuse this with Internal Development Documentation. This type is for external users or resellers or middle-ware companies.


This documentation helps others code with your code and libraries. Software that a customer/user takes the time and expense to modify to fit their environment becomes “sticky”, meaning the customer/user is likely to be loyal.


Systems Analyst / Developers / Integration Engineers / Middle-ware companies / Resellers. Customers who need to extend your product to meet a business need. Or in an open source environment, how others can use your code to extend their own project.

Common Article Names

  • Software X SDK Documentation
  • Class or Function Reference for Software X API

Common mistakes

  • Providing zero documentation on this
  • Providing incorrect documentation about a function
  • Updating code but not updating the documentation
  • Deprecating code but not informing the consumer
  • Not providing the first type of documentation: Samples, walk-thrus, etc…

Type 6 – Internal Development Documentation


This is used for internal developers continue future enhancements and otherwise maintain a piece of software.


To help developers work with a piece of code. To overcome turnover so new developers can pick up code another developer created. To provide architecture and design of each piece of code. To give UML (usually the classes and their methods),


Internal developers. Sometimes support.

Common Article Names

There are really no common names, but usually these types of documentation are internal only.

Common mistakes

  • Not writing such documentation at all.
  • Not documentation all parts of the code: Classes, Functions, design and architecture, supported features, etc…

Type 7 – Real life customer implementations


This is documentation about customers success stories. About how they implemented your software in their environment (which is usually as messed up as everyone else’s environments).


To demonstrate that the software can be successful and has proven itself in real life customer environments.


Other customers / System Analysts / Internal Employees in charge of future enhancements and road maps

Common Article Names

  • Product X Success Stores
  • How Company Y succeeded with Product X

Common mistakes

  • Not providing any customer success stories.
  • Providing success stories from unhappy customers who when contacted, speak poorly of your product

Type 8 – Marketing documentation


This is documentation that doesn’t really say much more than is needed to let a customer know about a software solution.


To acquire more customers. To help potential customers determine features sets quickly.


Systems Analysts / Consultants / Sales Engineers / Evaluation customers.

Common Article Names

  • Product X
  • The Product X Feature Set
  • What Product X can do for you business

Common mistakes

I don’t know a lot of the mistakes made in this documentation type, as my exposure to marketing is limited. I almost forgot this documentation type.

  • Too complex, including information or overly complex images or diagrams that are hard to understand


Hopefully after reading this article, you have a greater understanding of documentation.

Now that you know all the types of documentation, there are other problems to address. How to write the documentation. How to choose the priority for writing these types of documentation. How to balance the cost of documentation against the opportunity cost of not having documentation.

Some day, I will also have to write a post on how to deal with “versioning” documentation including updating documentation when Software versions change. I think there is a market for a piece of software that does nothing but track documentation. Hopefully it is well documented. 🙂

InfoWorld: 7 programming languages on the rise

InfoWorld has the following article I thought was interesting:
7 programming languages on the rise

It mentions that the top three languages today are Java, C#, PHP.

Then it talks about the languages on the rise:

  1. Python
  2. Ruby
  4. JavaScript
  5. R
  6. ERLang
  7. Cobol
  8. CUDO Extensions

Note: No, that is not a mistake, they list 8 languages even though the title of the article says 7.

While they gloss over the Java, C#, and PHP languages, the article implies that these are the top languages used today.

What they missed in the article (besides being unable to count) is:

That development itself is on the rise.  The lesser known languages are easier to learn any one language as every language now has serviceable documentation online, so we are limited to the languages that descent books were written about.

What I read from this article is:

If you really want job security stay with Java, C#, and PHP because they are the top three programming languages. Sure it is nice that others are on the rise.  But who wants to limit themselves to 2% of the development jobs available.

NYTIMES: Growth of Unpaid Internships May Be Illegal, Officials Say

With job openings scarce for young people, the number of unpaid internships has climbed in recent years, leading federal and state regulators to worry that more employers are illegally using such internships for free labor.

Convinced that many unpaid internships violate minimum wage laws, officials in Oregon, California and other states have begun investigations and fined employers.

…many employers failed to pay even though their internships did not comply with the six federal legal criteria that must be satisfied for internships to be unpaid.

Read more:

Should we measure employee's performance like a gamer gains experience in World of Warcraft?

Hey all,

I saw this article and thought it was very interesting.

Clearly defined goals and fair, incremental rewards are two game design techniques that could motivate the ‘gamer generation’ in the workforce, according to a US academic.

Lee Sheldon of the Indiana University believes managers may have to rethink how they engage the next generation entering the mainstream workforce.

“As the gamer generation moves into the mainstream workforce, they are willing and eager to apply the culture and learning-techniques they bring with them from games,” said Sheldon, a gamer, game designer and assistant professor at the university’s department of telecommunications.

Read more here: Employers: Look to gaming to motivate staff

When hiring a technical candidate for a software company, how can you find an Intelligence Asset?

Ok, so we all want the intelligent employee who picks up on things quickly, has a high IQ, and becomes an expert at his job sooner than anyone else who has ever had the position. This type of employee becomes an Intelligence Asset. They can answer any question, solve any problem and help brain storm through any problem.

Imagine you are hiring someone for a Level III technical support position or a as a Technical Sales Engineer or as a Developer for you software or for a your systems administrator or help desk team. You probably don’t just want an employee, you want an Intelligence Asset, someone who can be an expert, solve any problem, be a resource for others and help in ways that cannot even be imagined.

What steps do you take to find the “intelligent employee who picks up on things quickly, has a high IQ, and becomes an expert at his job sooner than anyone else who has ever had the position”. How do you find someone like that.

Well, while it is nice to have someone with experience, experience doesn’t make someone like that. It is also nice to have someone with great social skills, but social skills doesn’t make some one like that either. It is nice to get someone with a degree, but a degree doesn’t necessarily make someone like that either. Maybe they even have a degree in some other field, I do.

However, there are some traits that are common to people who have the ability to become an Intelligence Asset. In over a decade of working in the Networking, Technical Support, Systems Administration, Development, and IT field, I have met a number of Intelligence Assets and I will try to describe the traits that are common among these people.

  1. They enjoy learning, especially learning technology.
  2. They enjoy sharing what they learn.
  3. They can read a lot.
  4. They can read fast.
  5. They retain what they read.
  6. They only have to be shown how to do something once.
  7. They have analytical minds, and analyze everything.
  8. They solve problems faster and more efficiently than others.
  9. They are interested in the field in which they are working.
  10. They are hard workers and have strong work ethics.
  11. They always have to be right and hate being wrong.
  12. They assume other people care about the knowledge they have.
  13. They are not gamers.

So instead of spending time trying to make sure an candidate is going to already know your product or has experience with your product or whether they can be the perfect social talker, instead make sure they can be an Intelligence Asset.

Make sure they have the qualities above and you don’t have to worry about them. So what questions can they ask? Well, lets target some questions at each of the above subjects.

They enjoy learning.
If a candidate enjoys learning, then they are going to spend time learning outside of work. The following questions will show that a candidate enjoys learning.

  • What technology topics are you learning at home on your own?
  • How much time do you spend learning technology away from work?
  • Are you a member of a technical community where you donate your time?

They enjoy sharing what they learn.
These people often participate in online forums/communities where they help others and answer questions, often for free. They may have blogs where they contribute their ideas. Knowledge Retention is an important factor for any company. Knowledge lost can cost a company thousands or more.

  • You just stumbled on the best new software application. Who do you share it with? How do you share it?
  • You had a tough issue with a piece of software, and it took you days. At the end you realize there was really only a dozen simple steps, but there was not documentation so you had to realize it the hard way. Now that you have the solution, what would you do with it?
  • Are you a member of an online forum in your field of work?

Intelligence Assets consume knowledge by reading. They are reading everywhere. The internet, manuals, white papers, or pretty much anywhere they can get their hands on knowledge. There are simple questions that can let you know how much people read. Reading is part of every job whether you think it is or not.

  1. They can read a lot.
    What types of reading do you do?
    What reading do you do to keep up on your skills?
    What websites do you frequent?

  2. They can read fast.
    This is simple. There are websites you can send them to an check this. Do a simple google search for this term: determine reading speed
    I bet you found dozens of sites that will evaluate a candidates reading speed. One thing to note is that faster readers also usually have greater retention, which is the opposite of what some believe.

  3. They retain what they read.
    Hey, this one is hard to evaluate. During an interview nerves can get in the way of really evaluating this, so I would recommend not trying. If you have determined that they read a lot and that they read fast, retention often comes along for the ride.

They only have to be shown how to do something once.
Have a simple demonstration test prepared. Show the user how to do something either on a computer or even with a gadget or a mind game. Then have them try to repeat it. Make sure it is complex enough that almost no one can repeat it and you can be wowed when someone does.

They have analytical minds, and analyze everything.
How do you find that employee that can look at something and analyze it and understand, and do it quickly. Well, people who are analytical have to think about things. However, be careful, if you throw out a question, just because someone responds with a quick answer doesn’t mean they won’t take time to analyze. Some will give an initial response and then continue to think about it, so speed of response is not a true indicator. Give them something they can analyze and have them describe how it works. Again, it can be a computer program, a mind game and see what things they can analyze about it in a few minutes. If your focus is software, you can give someone an application and thirty minutes to discuss everything they can about this application. For a mechanical engineer, provide a piece of hardware or some schematics and ask the candidate to analyze it.

They solve problems faster and more efficiently than others.
So there are lot of problem solving tests that are common.

“I am thinking of an object in this room, you can ask any question except for, “What is it?”

“You have a a bag of grain, a chicken, and a fox and you need to take them all across a river in a boat. However, there is only a room in the boat for you and one other. You can’t leave the fox and the chicken together and you can’t leave the chicken and the grain together. How do you get them across?”

There are many more problem solving questions and you can find them online or maybe even make some up if you can.

They are interested in the field in which they are working.
Many of the other questions above should be giving you a feel for this by now. However, if you are looking for someone to be an Intelligence Asset for a software company, you should understand that there are often multiple hierarchies in a software company. A technical hierarchy and a management hierarchy are the obvious ones you see. For example, in tech support there is often Level 1, Level II, Level III, or technical leads and then there are managers and directors who may or may not be technical. But most companies have sales teams and other departments as well, so there can be quite a few different hierarchies in a software company.

Don’t be afraid to ask the candidate direct questions. However, “Where do you see yourself in five years” is really not focused enough. Show them your different hierarchies in your company and ask the candidate if they were to be promoted every two years, where would they be. If they are a technical asset they are not likely to choose a route outside their field into management or sales. However, if you don’t pay well, you may be skewing these results because money is a strong motivator and if you are unwilling to pay a technical asset what they are worth and it is obvious, they may choose a route that pays well.

Also remember, an Intelligence Asset enjoys learning. Ask them what they are learning about today that will further their career. If you are an electrical engineer and they say 3D animation, that is a key indicator that they are not committed to the field. It is hard for a candidate to be amazing in a field they are not interested in.

They are hard workers and have strong work ethics.
One of the best workers at my company, and one of our greatest intelligence assets is someone you would consider a farm boy. You might find him herding cows on the weekend. He probably works more hours in a day than he should. His work ethic is obvious. I can’t promise that any hard working farm boy is going to end up being an Intelligence Asset for you. However, you can probably generalize that a farm boy at least fills in the hard worker check box (yes despite what the silly political correct ideals would have you believe, you can and you must both generalize and stereotype during the interview process because you only get a few meetings with a candidate).

How many hours do you work at your current job?

What break room distractions did they have at your previous job? Did they have games and if so what was your choice of distraction?

When you had absolutely nothing to do at your previous job, what did you do? For example, you are completely caught up and you don’t have to do anything task or projects and won’t for the last three hours of the day, what do you do?

They always have to be right and hate being wrong.
I’ll be straight up and honest. Not every trait that indicates an Intelligence Asset is a good one. You need to accept the fact that Intelligence Assets may tell you when you are wrong and they may not know to do it in private. And their is a good change that you are wrong because there is a good change they actually do know better than you.

Also, Intelligence Assets are usually likely to argue when they 100% sure they are correct. There are some that don’t but most do. They argue when they know they are right. Yes, I consider myself an Intelligence Asset and once I was talking to another Intelligence Asset and we both had conflicting answers about a DNS feature and yet we were both correct. He was providing the Microsoft Windows answer and I was providing a FreeBSD/Linux answer and yes, their feature sets are different, so we were both right. Ok, I was unaware that Microsoft lacked the feature I was talking about and he was unaware that BSD/Linux had the feature. Anyway, neither of us would give. We were both right and new it for a fact because we learn and test and know.

Assume they argue when you ask the candidate a question. Every candidate is likely to say no if you ask if they argue. Instead ask: “You are in an argument with someone about something and you know 100% that you are right. How do you convince the other person?” If they take time to say something like, “First, I never argue” then maybe they don’t have this trait. And that is not necessarily bad.

By the way, once you hire them, please coach them to not argue. Remember they are very intelligent and they can learn to not argue, though it may take years.

Another approach is to ask them this: “You have given information to someone and you just found out that for whatever reason your are completely wrong. The person calls you on it, what do you do?” If they spend the whole answer saying how they would apologize and try to regain trust with the person, then they really don’t care about their knowledge. If they focus on how they would go research the issue and make sure that they learned the right answer so they wouldn’t be wrong again, then this is an Intelligence Asset. They probably won’t care much about what the other person thinks so much as they care about the fact they had wrong information.

They are not gamers.
Can I just say that as I analyzed the Intelligence Assets I know, none of them that I know are really gamers. Remember they are computer geeks, so yes they have gamed. But gamers are people who play computer games regularly, if not daily. I play games every Thanksgiving and Christmas holidays but rarely any other time. World of Warcraft, or WOW for short, is one of the more popular games these days. However, not a single one of the Intelligence Assets I know are daily gamers. They usually have something else that fills their time so they cannot really find time to be gamers. Often they spend time that gamers spend doing something like learning, reading, working, programming on the side, etc…

Maybe you find out if they are gamers by mentioning that your company only allows LAN parties and gaming after 7pm. See how they respond.