IT Jobs and Working Conditions

Mark Glossop has written about the best designs for offices to increase productivity and attract qualified staff [1]. He makes a lot of really good points and cites the Joel on Software blog post about “Bionic Offices” [2], it’s sequel “Updated Offices” [3], and Joel’s “Field Guide to Developers” [4]. Interestingly Joel disclaims a connection to “stereotypical Asperger’s geeks” while his points about private offices to avoid distractions, technical issues trumping politics, letting developers choose their own projects and tools, and making the company seem to be doing things that are good for society would apply well to people with Asperger Syndrome [5].

While Mark has made some great points, he has totally missed one important issue – that of being able to do some useful work. The section about “no dysfunctional politics” in Joel’s Field Guide does to some extent cover that issue if broadly interpreted. But generally anyone who is good at a job will want to be allowed to do it and anything which prevents them will make “work” less pleasant. I wonder if Mark has been fortunate enough to miss out on the experience of working for a company that has problems which are suitable for submission to The Daily WTF (Curious Perversions in IT) [6].

The Worst Company I have Worked for

The worst environment that I have ever worked in was for a financial organisation. They were proud of providing a good working environment, all Occupational Health and Safety issues were properly addressed, the office was always clean, etc – many of the people who worked there considered themselves to be fortunate to work there. But almost no work was done due to foolish paperwork! The worst example was a bug in an Apache module that caused an Intranet server to hang every couple of days, the symptom was trivially fixed by restarting Apache or it could have been worked around by a cron job that restarted Apache every night at midnight (the web application was only used in business hours). But instead every few days there were a few hours of down-time while managers worked together to get appropriate approval for me to restart Apache.

On one of the first occasions that Apache hung I asked my manager if I should restart Apache and get the paperwork done afterwards (which is standard system administration practice in every office where you would want to work). I was told that anyone who did such a thing would be sacked and slandered to try and prevent them from gaining other employment. It’s generally regarded that a wise manager won’t say anything bad about a former employee when asked for a reference due to legal reasons, it’s the absence of good things being said that indicates a problem. Deliberate slander would be good grounds for a law suit, but it seems that the management of some companies think that they are above the law.

When I resigned I told my managers that I was depressed and couldn’t stand being there.

In future I will try and identify such companies and walk away from job interviews. I will ask about the paperwork requirements and also ask to inspect the workstations that are used. Any company that pays top rates to people while forcing them to use workstations that would be in the rubbish at any normal company is obviously extremely dysfunctional and should be avoided.

The Best Company I have Worked for

I have worked in a few environments that were really good by various objective measures. One that stands out as being a little better than the rest is a small company that provides network support services. A large part of their business involved maintaining network gear for medium sized organisations. Small companies tend to have financial problems and this one was no exception, there were minor issues such as holes in the carpet that would have been regarded as OH&S violations at any corporation – but everyone knew that it was best to just walk carefully and not complain so that there was money for more important things (such as payroll). Of course many other aspects of a good working environment (such as good office furniture and good monitors) were also lacking due to financial issues. So by the Joel’s standards they were doing quite badly – but this didn’t make them a bad employer.

One significant positive aspect of this company was that everyone there was really friendly, I don’t know how much of this was due to hiring nice people and how much of it was due to having a positive social environment that encouraged the best behavior from everyone. Another major benefit was that things got done with little resistance, small companies that last tend not to have much in the way of political problems. Joel states a principle of not hiring jerks, but an average person can act like a jerks on a bad day. To have a team of people consistently not act like a jerks is unusual.

Another big advantage of that company was it’s positive and supportive attitude towards staff. When I started working for them my car was having some major repairs, so the owner of the company lent me a car for a couple of weeks. Staff who wanted to apply for work at bigger companies due to the limits for career growth in a small company were encouraged to do so. This is a great contrast to the attitude of managers in most companies who want to do whatever it takes to retain staff and who are reluctant to accept that employees will sometimes have good reasons for working elsewhere. This was good for employees and also good for the company who ended up with a ratio of payroll expenses to skilled employees that was far better than the industry average.

Update: ComputerWorld has an article about managing geeks [7]. The summary is that senior managers should listen to the technical professionals, have some basic technical knowledge, and that IT staff should be involved in recruiting new managers.

6

The Main Security Problem

All security problems are to some degree people problems. Code may be buggy, but it was written by people who could have been better trained, had more time to spend on code review, etc. When there are multiple programs, OSs, libraries, etc to choose from then choosing a suitable combination of software is a matter of the skill and background knowledge of the people involved.

There are issues of software choice where there is no provable benefit of making one particular choice, EG choosing between a popular product that is OK and for which it is easy to hire skilled people to use it and a less popular product that has better security features but less public knowledge. But this is minor compared to other security problem.

I believe that the greatest security problem is stupid people. Stupid people in technical positions write buggy code and configure servers to be insecure. In consulting and analysis roles they develop bad procedures. In management they hire bad people to do technical work.

The vast majority of security problems can be fairly directly and immediately traced back to stupidity. In the corporate environment that is stupid programmers, stupid managers who hire people who are obviously stupid, and often stupid executives for mandating that software that everyone knows to be insecure should be used across the entire enterprise. In both the home and corporate environments there are a huge number of people who run machines that they know to be compromised. Apparently using a computer that is known to be under the control of an unknown hostile person is something that they don’t consider to be a problem – in spite of the obvious risks of fraud, data destruction, and risk of being implicated in crimes such as the distribution of child porn.

3

Normalising Wages

John Robb writes about the normalisation of salaries that is driven by the use of the Internet and global corporations [1]. He cites an example of IBM forcing many of it’s employees to work in developing countries for lower wages.

It seems to me that IBM is leading the field in this regard and many other companies will do the same. The computer industry which has been very well paid for the last 20 years seems likely to have some significant reductions in wages. Some computer jobs can’t be immediately outsourced to other companies such as network cabling, hardware repair, and training. But they will experience a pay reduction due to competition from software engineers and other people who’s primary work is easily outsourced.

For a job hunter it seems that the best thing to do is to look for work that requires site visits and customer contact. One of my long-term clients has a large business in installing wireless devices. For a long time they have had an open offer for me to climb up towers and install wireless devices. If the rates for system administration and software engineering in Australia (and the outsourced work from the US that I sometimes do) drops to Indian pay standards then I might do some of that wireless work.

When recommending that my clients hire people to do software engineering or programming work I am considering seeking out people in low-wages countries that I know through the free software community. I believe that through an organisation like Debian I can find people who are as good as the people I have been finding through my local LUG but who can feel happy earning a much lower rate. My clients seem to periodically need PHP work, so if you live in a low wages country, have good PHP skills, and are well known in the free software community to a degree that I can feel happy in skipping personal meetings then you can email me your CV.

Don Marti has written about the Linux vs Windows situation on Netbooks [2]. He suggests that neither Intel nor Microsoft is set up for a Netbook world. If both Intel and Microsoft were to pay the majority of their employees rates that are only slightly greater than typical wages in India then things might look a little better for them.

During the dot-com boom I was working in Europe (firstly in London and then later in Amsterdam). It was a lot of fun in many ways with large amounts of money, easy work, and parties. The down-side was that I had to work with druggies and other people who were not suitable employees as the companies I worked for felt that they had no choice. Since the dot-com crash the quality of the people I have worked with has increased significantly which was a good compensation for the lower pay. Also I believe that the lack of silly money was one factor that helped Linux and other free software increase market share after the crash. I expect that the economic depression that we are now entering will have a similar effect. I will earn less money, have fewer parties, and work harder. But generally the quality of the staff in the IT industry will improve and the usage of free software will increase.

As an aside, Don suggests that people who create web sites etc will want more expensive machines. I regularly use my EeePC for running servers in several data centers, I do all types of system administration and system programming on it. The screen resolution is not that great, but it shouldn’t be difficult to design a Netbook that can drive a 1920*1200 external display (as is being commonly deployed in new hotel rooms – it seems that all new large-screen TVs have VGA and DVI input). A netbook which can drive a 1920*1200 display and a full-size USB keyboard could allow me to do some very effective work in a hotel room while also allowing me to work when traveling in public transport. Now all I need is for the hotel booking sites such as www.wotif.com to allow me to search for rooms that have such a display. A business hotel could even provide a USB keyboard in the room to allow guests to travel light. Of course it would be possible to design a slightly larger laptop at a Netbook price point, the extra plastic and metal needed to make a larger frame and keyboard costs almost nothing and given the low prices of large desktop TFT displays I find it difficult to believe that the factor of two difference in price between the cheaper and more expensive Netbooks is due to the display.

My main machine is a Thinkpad T41p, I really don’t need a high-end machine on my desktop. I am considering the practice of avoiding purchasing expensive machines as a matter of principle. Maybe if we try and avoid buying expensive machines we can help drive the market towards Netbooks where Linux has an advantage.

Employment Packages

Paul Wayper has said that he only wants to work for companies that will send him too LCA [1]. While that criteria is quite reasonable it seems overly specific. Among other things the varying location of LCA will result in the expense for the employer varying slightly year by year – which employers generally don’t like.

I believe that a better option is to have an employment package that specifies a certain amount of money (related to the gross income of the employee) should be set aside for training, hardware, or other expenses that help the employee (or their colleagues) do their job. Such an option would probably only be available to senior employees who are most able to determine the most effective way of spending the money.

For example an employee who earns $100,000 per annum might be permitted to assign 10% of their income ($10,000) to training or hardware that assists their job. Modern PCs are so cheap that any reasonable hardware requirements could fit within that budget with ease.

There are several benefits to such a scheme. On many occasions I have had colleagues who had inadequate hardware to do their work, slow PCs with small screens really impacted their productivity, in such situations buying a $400 PC and a $400 monitor for each person in the team could make a significant direct improvement to productivity before the impact on moralle kicked in!

Some years ago Lenovo ran some adverts for Thinkpads which said “demand one at the interview”. That made sense when a Thinkpad was an expensive piece of hardware. While there are still some expensive Thinkpads, there is a good range of cheap models, two which cost less than $1200AU and another eight which cost between $1200 and $1800. Now it makes more sense to allow each employee to choose their own hardware (both desktop and portable) and not even bother about issues such as whether the IT department blesses them. As Tom Limoncelli suggested in his LCA keynote, users are going to take more control over their environment whether the IT department like it or not, so it’s best to work with them rather than fighting them.

For training a common problem is that management can’t correctly determine which conferences are worthy of the expense of sending their technical staff. Then when a conference is selected they send everyone. It seems to me that when there are a number of conferences in a region (EG AUUG, LCA, OSDC, and SAGE-AU in Australia) there is a benefit in having someone from your team attend each one. Planning at the start of the year which conferences will be attended by each team member is something that appears to be beyond the ability of most managers as it requires knowing the technical interests and skill areas of most staff. If each employee was granted one week of paid time per year to attend conferences and they could determine their own budget allocation then they would be able to work it out themselves in a more effective manner.

2

Mental Benchmarking

One thing that seems overlooked by most people who discuss productive work habits is the varying mental capacity for performing different types of work. While it’s well known that alcohol and other substances decrease mental ability and it’s slightly less well known that sleep deprivation has a similar affect to being drunk [1], the reference cites the case of medical residents – the effects of sleep deprivation can affect people with medical training who presumably are better qualified to recognise and mitigate such problems than most people.

Previously I wrote about increasing efficiency through less work [2], which was mainly based on the total number of hours worked in a week – with some mention of extreme fatigue.

However it seems obvious that things aren’t that simple. The ability to perform work can be reduced due to temporary issues, poor sleep the previous night (not the same as sleep deprivation but enough to decrease performance), general health (I find that having a cold really reduces the quality and quantity of my work), and physical state (skipping a meal due to being busy can lead to lower quality work).

For the work I do (system programming and system/network administration) there are a range of tasks that I need to perform, which require different levels of skill. Now when I have several tasks that need to be done it makes sense to do the most demanding task that I can do well. The problem is in assessing my own ability to perform such tasks, while I can have a general idea of how alert I feel, it seems likely that self assessment by subjective criteria will decrease in accuracy at least as fast as my ability to perform the work in question.

So having an ability to assess my mental capacity at any time seems useful in determining when to work on the hard tasks, when to work on easy tasks, and when to just give up and go to bed! ;)

Fortunately I have found a benchmark that seems to give reasonable results. I have found that I can reliably solve the game Codebreaker (based on the board game Mastermind [3]) on the Familiar distribution of Linux running on my iPaQ in under 30 seconds when I’m fully alert. So far my tests have indicated that when I seem less alert (due to finding tasks difficult which should be easy or making mistakes) the amount of time taken to complete the game increases (my worst day was when I couldn’t complete it in under a minute).

It seems likely that someone who is doing intellectual work could take one day off work a week without a great decrease in productivity if it was their least productive day. If there was a factor of three difference in productivity between the best and worst days then skipping the worst day might decrease productivity by 10% if the 8 hours in question were used doing something as demanding as working. If what might have been the least productive day had been spent relaxing followed by going to sleep earlier than usual then it doesn’t seem impossible for productivity to be increased enough on the next day to provide a net benefit.

One thing I plan to do from now on is to use Codebreaker to help me determine when I should cease work in the evening. If I take more than a minute to complete it (or have difficulty in solving it) then it’s probably best to finish work for the day.

3

Contract Pay Rates

In a comment on my post about Bad Project Management [1] Don Marti [2] says “the more money you charge, the less of your time people waste, and the more seriously they take you” and “you can affect the client more, whether you’re peddling idiocy or wisdom“.

That’s a nice theory, however I don’t recall seeing an example of it anywhere that I have worked. There are two broad categories of employers, large and small. Large companies have HR departments etc who decide on rough pay scales. Once the budget is approved (by senior management and HR) for someone’s contract fees or salary the amount of money seems to be of little concern to the line manager. They have a group of N people reporting to them who are all paid by money that comes from some mysterious place (with no direct connection to the quality or quantity of work done) and therefore the amount of money paid is not very relevant. Often team-leaders don’t even know how much the people who report to them are being paid! Note that this applies to people who have a similar job title, if I am paid twice as much as another sys-admin in a corporate environment I don’t expect to get more attention, but someone who has a more senior job title (or in the case of the UK has been to a more prestigious school or has a better accent) may get more attention.

Small companies are rarely in a position to be silly in this way. This doesn’t mean that the most highly paid person gets the most attention, it’s more a matter of making a logical case. Most of the small companies I have worked for have been run in a sensible manner, and my ideas have often received more attention than those of others because I have had a better technical background than my colleagues. However in some cases my suggestions have received less attention because I was receiving a higher pay rate. The reason is that I was being paid a rate that the company could not afford in the long-term and therefore the people who would work there in future years would have to maintain the systems in question which meant that their ability to do such maintenance was often considered to be more important than my ideas about the best way to design the system.

I have worked for a small company that had no financial pressure to do sensible things (they had some sweet deals going with major corporations which essentially gave them money for nothing). They had chaotic management which they could get away with because there were no immediate consequences for doing silly things (such as not forcing their clients to have a method of backing up servers that they installed).

I can’t claim that Don’s advice in this regard never applies, but my observations of situations where it didn’t apply lead me to believe that it’s applicable to some situations in limited areas and is not a general rule.

Don also refers to “a high number that you would quote to a client you didn’t want in order to get them to go away“. This is an issue that causes a lot of disagreement. One consultant I respect advises people to never make such quotes, if you don’t want a job then say that you are not available – one reason is that if a position is so bad that you want the potential client to go away then you don’t want to be tempted to reconsider if they agree to pay you a silly amount of money, another is that it may be considered ethically wrong to make an offer is not genuine. Another consultant I respect claims that his greatest career success was when he turned up to an interview in casual clothes, explained to the potential client that he would never wear a suit and demanded an excessive amount of money. The client agreed to such terms and he then went on to charge other clients similar amounts of money and continued to refuse to wear a suit.

I won’t claim that it’s wrong to demand excessive amounts of money to make an unwanted potential client go away and I will not rule out the possibility of doing so at some future time. But I think it should be noted that the practice is controversial and not referred to as something that anyone might do. It is something that I don’t recall doing at any previous time in my career (so I haven’t done it in a formal manner at least – I may have done so at the informal discussion phase and forgotten).

Please note that I encourage you to read my previous post with Don’s comment in it’s original context to avoid any risk of misinterpretation. The purpose of this post is not to disagree with Don (I agree with him almost all of the time) but to disagree with some very commonly held beliefs which Don represented in his comment.

1

Apprentice Computer Journalist Wanted

In a comment on my post about apprentices [1] Don Marti pointed me to a blog post of his from 6 months ago where he mentioned a need for an apprentice [2]. I had read the post in question before but didn’t think about it when writing my previous post.

When I was about 17 I had my first article published in a computer magazine, it was a small magazine for a computer club and the article was merely a long email on the club BBS which someone decided to publish. The option of trying to make a career out of journalism occurred to me then as I had been published once without trying, and the quality of the magazines at the time indicated that anyone who wanted to write technical articles would face little competition. :-#

If someone as skillful as Don had been offering apprenticeships during school holidays when I was at that age I would have been very interested, but at the time there was too much cultural pressure (and too much pain invested) to make quitting school entirely an option.

I encourage other people who have the ability to take on an apprentice to blog about it. Please make sure to mention your approximate location and whether school-holidays work is OK.

1

Bad Project Management

I have just read a rant by Sean Middleditch about bad project management [1]. He describes his post as “personal, rather angsty, and especially whiny” but I think it’s useful and informative. He makes some interesting technical points about PHP programming (I wasn’t aware that there were so many ways of easily getting things wrong and having difficulty to get them right). But of course this isn’t all limited to PHP, the web site WorseThanFailure.com has anecdotes about mistakes of similar calibre being implemented in every language imaginable.

Sean is apparently considering leaving the computer industry after having numerous bad experiences of having highly paid people mess up projects while he gets paid a lot less to try and fix the worst of the bugs and get the systems working in production. I understand what it’s like, I have occasionally idly contemplated leaving the industry after bad projects. However the fun of working on free software combined with the amounts of money that I can earn in the computer industry made me quickly abandon such ideas.

His stories in some ways resemble my experiences in working as a contractor, most of my contracts have been profoundly weird for various reasons (I’ll use the WTF [2] category of this blog to document some of them). I had two theories as to why I ended up in so many strange contracts, one was that I was in some sort of Twilight Zone and the other was that taking contracts based on the amount of money offered puts you at high risk of being employed by people who have no financial pressure to do things in a sensible manner.

My advice to anyone in such a situation is to try and find a contract position paying an unreasonable amount of money. Getting more than $80 an hour (the rate Sean cites as being paid to the idiots who cause problems) is going to be difficult, but getting $50 or $60 an hour is much easier to achieve and should be enough to alleviate the pain of working on doomed projects.

3

Apprentices

Shintaro wrote an interesting post about Rakugo (a form of story-telling) and Mottainai (a particular form of gratitude that is now becoming an English word in reference to environmentalism) [1]. My definitions of the two words are poor, I encourage interested readers to read Shintaro’s post for the links.

Recently I had been considering which jobs are most like a senior programmer position in terms of skills and the work environment. It occurred to me that a chess-master has a job that bears some similarities to that of a senior programmer. A chess master might play a Simul [2] which compares to a programmer or sys-admin fixing lots of small bugs at the same time. In a serious chess tournament up to seven hours may be on the time clocks – not an uncommon amount of time taken to find a subtle bug in a program. For quick chess games as little as three minutes may be on the clock for all your moves – similar to the situation where the network goes down and the CEO is watching you fix it. The intellectual abilities for playing chess and programming have many obvious similarities, memorising significant patterns to avoid re-calculation, having a large mental register set to allow considering complex situations or multiple possibilities at the same time, and being able to spend many hours thinking about a problem.

With that in mind one thing that particularly interested me in Shintaro’s post was the reference to a Japanese apprentice system where “They are trained at his masters house from early years maybe after junior-high, living and caring his boss every day life, like Go or Shogi players“. I wonder how this could be used in other cultures and career paths (such as English-speaking countries and computer programming). Probably the “every day life” part wouldn’t be well accepted.

When comparing with the high-school experiences that seem typical of people in the computer industry an apprentice program has a lot to offer. A small amount of pay (as opposed to school-fees) and an environment where laws apply (IE almost no bullying) are both significant benefits.

Anyone who is reasonably intelligent is most likely to find that they can’t learn anything from the teachers in the final years of high-school because most teachers don’t know much about the subjects that they teach and in the instances where the teacher does know more the class environment doesn’t permit teaching more advanced material.

Someone of average intelligence who has worked for 5+ years in an industry can always teach a beginner some useful things so there is some obvious potential to learn.

There is a meme that apprentice programs only apply to trades not intellectual work. This meme is probably correct when applied to many categories of office work but seems obviously wrong when applied to computer work. My observation is that at most places where I have worked there has been a significant amount of time from the most productive, skilled, and highly paid people spent on tasks that are way below their skill level – and often requiring skills that they don’t have. One example is when I was working for an ISP in a senior sys-admin position, when things really went wrong on the network I was usually the person to fix them – but I spent moderate amounts of time fixing hardware problems with desktop PCs and some time fixing Windows networking issues (of which I know little). Some of the problems I fixed could have been fixed by a 16yo apprentice who would probably have taken less time to fix them while also having a much lower hourly rate – and in some cases may have done a better job).

I’m not sure that having an apprentice assigned to an individual programmer would work well, but having one per team should.

I have previously written about how to get the benefits of a university education without attending university [3] so I don’t think that the inability of such apprentices to attend university would necessarily be a problem.

2

The Price of Food

If you live in a hotel for an extended period of time (which can provide significant career benefits – click on this link for details [1]) the issue of food price and availability is going to concern you.

If you are in a decent hotel you will have a fridge in your room that you can use for your own food. A recent trend downwards in hotel quality has been to use fridges that are stocked with over-priced drinks that have sensors and automatically bill you if you move any of the drinks. A good hotel will have a fridge that either has space for your own food/drink or which allows you to temporarily move their stuff out. If you are staying in a hotel for any period of time and the hotel is not run by robots then you should have the option to negotiate the removal of all the over-priced drinks to provide you space for your own food.

If you have such fridge space then you have good options for making sandwiches – which are cheap and healthy.

In UK hotels (which incidentally tend to not have a fridge in the room if they are affordable) the standard practice is to have breakfast included as part of the hotel fee. If you are flexible about your eating then you can eat a large breakfast and have a minimal lunch to reduce expenses.

Finally you have to consider how much you earn as an hourly rate (after tax) and compare it to the cost of food. For example if dinner at a cheap restaurant costs $10 and you earn $30 per hour after tax then you only need to save 20 minutes of your time by eating at the restaurant (as opposed to making a meal and washing the dishes) to make it economically viable.

I have previously written about the efficiency of work [2]. I think it’s reasonable to assume (in the absence of any formal studies on the topic) that when your efficiency of working decreases due to over-work your enjoyment of your leisure time is also reduced on a per-hour basis (in addition to having less leisure time). I know that some people enjoy cooking and consider it a leisure activity (my sister seems to be one of them [3]). But if cooking isn’t something you enjoy then you will probably feel that eating out is reducing the amount of “work” time and therefore increases the quality of your life and the quality of your work.

Finally for the time spent living in a hotel while searching for work (if you travel to another country without arranging employment first) the main financial factor is not how much you can save money on a per-day basis, but how quickly you can find work. The ability to accept a job offer from any region has the potential to significantly reduce the amount of time taken to find work and thus put you in a better financial position in the long-term. This benefit of living in hotels should significantly outweigh the extra expenses of eating out etc.