Know It All?

technology: 

I sometimes check job advertisements for PHP programmers to see the general market trends. Some of the adverts include an impossible list of requirements. Usually a below average salary accompanies the impossible list. What is the most impossible list you have found?

One job advert required a specialist who is an expert in all of these: PHP, HTML, XML, CSS, Perl, ColdFusion, JavaScript, VBScript, ASP, Java, J2SEE, EJB, Swing, JSP, SQL, RDBMS, UML, SOAP, and Struts.

I can understand PHP, VBScript, and ASP. I teach people how to convert VBScript and ASP to PHP. The work is easy, the results are excellent, and the customer substantially cuts their long term costs.

Java to PHP conversions makes sense for some Web sites. I helped convert a few and produced faster, easier to maintain sites. If you use PHP5, you can mix Java and PHP during the conversion.

Perl to PHP is a common conversion because PHP is a better fit for web sites. Yes, I have converted Perl sites to PHP.

While all this intermixing and conversion is possible, there are few people who can perform all those conversions and produce great Web sites. You are better off with a PHP expert who can perform the most common conversion, from ASP to PHP, and bring in outside help for the other work.

The company offering the job mentioned above, was offering a salary that would not get a great PHP programmer or someone who is good with databases. At most they would get someone who has purchased a book on each area. There would be a lot of reading on the job.

Photoshop

In Australia the job placement agencies tend to add Photoshop to the list of requirements. As soon as they see an information technology job that says Web, they add Required: Photoshop.

Good programmers are rarely good photo editors and the type of photo editing required for the Web rarely requires Photoshop. Most sites have one multiple image banner that requires good editing. The rest of the images are just resized images with borders trimmed off. You hire an image expert for the one off banner creation and then show a junior trainee work experience kid how to correctly resize the other images.

Junior Trainee Work Experience Kids

There are a huge number of jobs you can give to a JTWEK. If they know how to use an editor, I can teach them to perform most of an ASP to PHP conversion. The skill is slightly easier to learn than making a great latte.

What do you look for when adding a JTWEK to your team? If your team is messy, look for someone who is neat. If your team likes caffeine, make sure your JTWEK knows all the appropriate delivery methods, tea, coffee, chocolate, headache tablets, and Guarana.

If your team is all male, add a female. Do the reverse for all female teams. Teams are more polite and cooperative when there is a member of the opposite sex present.

If your team has no concept of colour, look for a JTWEK that has studied colour. Good use of colour makes web pages 35 percent more effective.

Teaching HTML is a bore and everyone learns HTML at school so get a JTWEK who knows HTML.

Even the best universities fail to teach students the real differences between client and server programming so teach that yourself.

Give the JTWEK Gimp and a good book on GIMP. If your scanner arrived with Photoshop Elements on CD, still start the JTWEK on GIMP so they know there is something other than Photoshop. Paint Shop Pro is another good starting point if most of your work is on Windows and most of the work is simply resizing images. Remember to teach them about JPEG damage.

You now have a person who can take care of all the Coldfusion and ASP conversions with just a few hours introduction to PHP.

How Many Skills Do You Need?

If you are hiring a Web developer, the skills list should start with PHP then databases, development skills, a selection of team or business skills, and then, perhaps, another programming language. If you want a range of other languages, hire them one at a time while you build your development team.

Java is difficult to learn because there is so much you have to learn before you can do anything useful. Your first Java person really needs to be an expert. Do not limit that person's Java skill by hiring a generic programmer with a little knowledge of many languages. Get a person who focused purely on PHP and Java.

Put Web development ahead of Perl and all those other specific skills. Learning XML is easier than learning Web development. I teach both. People learn XML easily because it is an extension of what they already know. Only XSL creates problems because XSL is different to everything else.

People either understand Web development or struggle for a long while because they learn so many wrong ways to develop Web sites. If you have a team working on one Web site, they will lose more time due to team members overlapping their work than they will lose through XML problems.

CVS is promoted as a solution to team development problems but is just a small step toward a solution. You have to learn to use CVS and learn all the things not handled by CVS. There are products that automate much more than CVS but those products are seen as a hindrance by most developers because the developers have not learnt all the steps needed for a good final product. Avoid people who say that CVS will solve all your problems without needing an investment in planning or training.

Why do all those job adverts have many languages listed but no mention of CVS or basic Web development skills? Why do some adverts emphasise must be a team player without the company every hiring a team coach?

Mentoring

You can transfer skills from experienced developers to inexperienced developers using mentoring. Unfortunately some companies want mentors to spend 100 percent of their time writing code. Those companies then expect the less experienced staff to somehow absorb the experience by cutting and pasting the code written by the experienced developer.

The cut and paste approach does not work. Copying code transfers code but not experience. Mentoring requires the discussion of the why behind the how. Mentoring requires the allocation of time for both the mentor and the people being mentored.

Marketing Party

Marketing people like to advertise Web development companies as specialising in everything. They like to have a long list of things they can sell as yes, we do this. If you can hire only one developer and that developer has one day of experience with every Web language, the marketing people can sell Web development to anyone.

The alternative is to hire one person who specialises in one language and try to market that language as the solution to everything. Some prospective customers will walk in the door with the idea that they need Java or some other fashionable technology. Marketing people will have to work harder to get open minded prospects through the door. You will miss out on some sales.

Which is the better approach? You will miss out on some sales no matter which way you go. You will get better long term results by having staff who do a good job. You will get far more repeat sales when your staff do a good job. If you have the opportunity to focus on one direction, you will get customers walking in the door from word of mouth references. Start with one good focused developer instead of the scattered jumble of skills loved by marketing people.

Long Term Cost

What happens when you start a project with someone who knows a little bit of everything but not much about anything? The project starts at too low a level of capability to create the final product. The customer pays an increased long term cost through continual rewrites of the Web site components.

I have worked on a number of projects that started too low, typically in cases where I was brought in to fix someone else's work or to finish a project that someone else could not finish. I was often asked to finish a complex Web site and stick to using techniques designed for simple projects. The simple approach does not work.

When we fly around the world, we use aeroplanes powered by jet engines. Jet engines require far higher levels of technology than the simple reciprocal engines used in early aeroplanes. To most people watching a working model engine, the jet engine actually looks simpler. The result is that the most complex technology looks the simplest to the end user of the technology, the most complex technology gives the best service.

Web sites are often the same. If you go from a large Web site with no database to an equivalent Web site that uses a database, a whole lot of Web site development and Web site usage becomes far easier. There is a small extra load up front to get the database working but everything else becomes easier.

When you hire staff, you need someone who can work at least one level above the most complex site you work on. That person can then predict when you need to step up to a higher level approach. To get staff with that level of knowledge and experience, you cannot hire someone with just a small drop of knowledge in each language. You need a higher level specialist. If you want to develop in several languages then you need at least one high level specialist for each language.

Conclusion

Many Web development job advertisements read like a shopping list for a marketing party rather than a serious attempt to select skills. The marketing people get to show the public a long list of skills provided by the company while the accountants pay just a few salaries. The customer pays the long term cost of fixing up the mistakes of the seriously over stretched developers.