January 2009 Archives

I've been trying out JavaScript mapping APIs from Google and Microsoft, which prompted me to revisit the question of JavaScript IDEs and debuggers. My first stop was Visual Studio, since I use it anyway for Windows and ASP.NET development, and I was impressed by how well it works even for projects that do not use Microsoft technology. Take Google Maps, for example. Fire up Visual Studio 2008 (earlier versions are less good for this) and start a new project using the Empty Web Site template. Right-click the solution, Add new item, and choose HTML page. I always name these with an .html extension, not the default .htm which exists solely because DOS could not cope with four-letter file extensions, but it is a matter of taste. You now have an empty web page. Click Debug, and let Visual Studio add a web.config with debugging enabled even though you will not be using this for deployment. You will also be prompted to turn on debugging in Internet Explorer, if you have not already - yes, you have to uncheck disable:

jsie-1.png

If you then try to debug, Visual Studio fires up its internal web server and opens the blank page in Internet Explorer. So far, so good. Next, I added the code to display a Google map - it's only a few lines of JavaScript. Visual Studio does a good job with syntax highlighting and code completion, for types that it knows about. I found that I could easily set breakpoints and inspect variables; everything worked smoothly: 

jsie_3a.png
You can even debug into the incomprehensible Google library code if you feel so inclined - just press F11 to step into the code. You also get windows for autos, locals, watched variables and call stack; and there is an immediate window.

There are a couple of snags with this. One is that browsing the web with debugging fully enabled in IE is painful, either because the web is littered with broken JavaScript, or because IE breaks easily; I guess both of these are true, and you will see constant debug dialogs. A solution is to use a different browser for everyday use. The good news is that this is said to be fixed in IE8; Visual Studio will turn on debugging in IE8 on demand, though I have yet to try this.

The other unfortunate aspect is that attempting to debug with other browsers does not work in the same way. You could edit in Visual Studio and debug with something like Firebug; but you lose the smooth integration. IE8 mitigates this a little, because it is more standards-compliant so its JavaScript engine and DOM is closer to that in FireFox and Safari, but there is still no substitute for debugging in all the browsers that matter. Of course we will also have to cope with IE7 for the forseeable future.

Still, if you are a Windows developer casting about for a JavaScript IDE, don't forget the one you most likely already have installed.

 

As public awareness and government agenda put pressure on companies to adopt more environmentally sound policies, opportunities for those who fancy “saving the world” are on the rise. Green technologies such as videoconferencing, virtualisation and power management are all hot topics at the moment and as adoption rates increase, demand for IT staff to maintain, run and manage these systems has risen accordingly.

Green IT has come to prominence over recent years as businesses look to cut energy costs and the need for business travel. Many organisations have already begun to implement green initiatives; with a number of larger companies even having dedicated CSR (Corporate Social Responsibility) teams to oversee the companies green goals. For the business the benefits are clear, allowing them to reduce overheads, cut carbon emissions and communicate their green status to their customers and stakeholders.

For IT professionals, the benefits are also there for the taking. As companies invest in a greener future, they need staff with the right skills and attributes to handle and oversee the smooth running of new technologies and new systems.What is also encouraging, is that the green IT market is constantly expanding, meaning a steady stream of jobs should be available in the years to come. If you are thinking of taking a fresh direction in your career, getting up-to-speed on green IT could set you on the right path to better, greener things.

Confirm the date and time of your interview and make sure you get directions if necessary. Check out the travel time either by road or public transport. Make sure you allow for the time of day. If necessary make a dummy run at the same time so that you are completely familiar with the route. Aim to arrive at least 15 minutes before the scheduled start time and then allow another 15 minutes just to be sure. There is nothing worse than arriving late for an interview!


Having sorted out the logistics now you need to start your research into the company or organisation. One of the first questions that interviewers often ask is "What do you know about us?" Have a good look at the company web site but also use a search engine to research as much background information as you can. Having this information will ensure that you can answer that question confidently and also give you the opportunity to ask some smart questions of your own. "I see you've recently opened a new call centre, what CRM package are you going to use?" sounds a lot better than "What time do you finish work on Fridays?"


Make sure you also research your interviewer(s). You may find a profile (or even a CV) on the company web site or try searching for the interviewer's name on the internet. It's important that you know as much as you can about your interviewer and their background as this will enable you to predict the types of questions they will ask and how you should pitch your responses. For example if your interviewer comes from an IT background similar to your own then you can expect a technical grilling but what  if your interviewer comes from a finance background? Clearly you will need to pitch your responses at a different level.


Try to put yourself in the interviewer's shoes. If you were interviewing a candidate for this position what questions would you ask? Try to prepare strong responses to the most likely questions.


If you are working with a recruitment consultant ask them to provide you with a thorough briefing. They may have had candidates who have previously attended interviews with the same interviewer. What questions were they asked? If they were unsuccessful what was the feedback


Try to find out what the format of the interview will be. Will this be a formal/informal interview? Will there be just one interviewer or a panel? Might you be required to make a presentation? Should you take examples of your work? Will there be any kind of technical test?


Remember that interviewers (particularly from HR) often ask "Competency Questions". The theory behind competency based interviews is that past behaviour is often the best indicator of future behaviour. So these questions will often start with "Tell me about a time...." or "Can you give me an example...?" Try to think carefully what competencies are likely to be relevant to the job. If you are lucky they may be listed in the job specification.


If you decide that the competencies will include:

leadership, communication, influencing skills and innovation


Then make sure you that you have a store of good examples of your experience in each of these areas.


The best way to structure your response to competency questions is to use the STAR technique. STAR is an acronym for Situation - Task - Action - Result.


So for example if the interviewer asks:

"Can you give me an example of your ability to provide innovative solutions to problems?"


Using the STAR technique you could answer:


I was the leading a team at XYZ company (SITUATION). I was asked to come up with a plan to improve communication within the project management community and provide a central resource for project management tools and templates (TASK). I created an intranet site which contained all the necessary documents plus a forum for the project managers (ACTION). This has proved extremely successful and I recently received an award from the company congratulating me on the success of this project (RESULT).


Note that you should use I (not we!) in your answer and that this response follows the STAR format, - in simple terms "it's a story with a happy ending"


In preparing for your interview try to prepare as many of these "stories" as you can that will be relevant to the role.

Finally be positive! Taking this amount of care with your interview preparation will give you a head start and ensure that you perform at your best on the big day.

Good luck!

How good is Windows 7?

January 21, 2009 11:52 PM

There is a kind of Windows 7 fever sweeping the Web right now. Some observers are getting carried away:

As a person who performs almost every computing task on a Mac and tells anyone who will listen that at this point, the average consumer should be using a Mac instead of a Windows machine because of security and usability, I'm starting to prep myself for the single moment that I thought would never come: I'll be using a Windows 7 machine as my main computer and telling anyone who will listen that, believe it or not, using the latest Microsoft operating system really is worth it. [Don Reisinger]

I've spent a lot of time in Windows 7 these last few weeks, and in some ways I see what he means. It has a smoothness and elegance that is lacking in Vista, though it is there to some extent in Server 2008. But let's be clear: the popular view that Vista is rubbish and Windows 7 is great does not stand up to close analysis, for one simple reason. It is just not sufficiently different. Microsoft actually makes a positive of this characteristic, explaining how preserving the core architecture of Vista ensures good application and driver compatibility and therefore a smooth upgrade.

What about Windows 7 versus the Mac? I agree that Windows 7 is superficially more Mac-like; and more important, that the factors that made Vista such an unpleasant experience for some (not all) early adopters will not apply. I'm thinking of things like laptops that were underspecified, or had buggy drivers, or barely adequate graphics hardware, or that were weighed down with so much foistware that Windows would hardly run. However, other factors that make users prefer Macs will not have changed. There is the control Apple exerts over both hardware and software; its design excellence; the fact that Apple is less tolerant of legacy software, whereas Microsoft has Windows jump through hoops to keep it running,adding complexity and inconsistency; and there is the absence on the Mac of the culture of chaos that afflicts Windows. I'll leave aside religious arguments about Unix vs Windows, though it is a matter of record that OS X has to date proven far more secure, for whatever reason.

Let's ask some awkward questions. Will a substantial number of Windows 7 machines fall victim to viruses, worms, trojans and botnets? Almost certainly. Will Windows 7 from time to time flummox users with obscure errors like "the system could not find the file specified"? Almost certainly. Will some Windows 7 machines be built down to a price and be sold with obvious design flaws and insufficent attention to quality? Almost certainly. Will some vendors wreck the sweet install experience Microsoft has created by imposing their own clunky utilities and third-party trialware on top? Almost certainly. Will the Windows 7 event log become populated with perplexing entries like "The Workstation service terminated with the following error: The redirector is in use and cannot be unloaded." (plucked from my Windows 7 beta 1 laptop)? Almost certainly.

Let me add that I realise how smooth and reliable a well-managed Windows machine can be. Further, while I have had some frustrations with Vista it has always been stable for me and I have never wanted to go back to XP. Vista, then, is better than its reputation; Windows 7 is better than Vista but will have trouble living up to the proclamations made by its more enthusiastic admirers.

As a hiring manager, I was sooo disappointed when I met promising candidates who had the same year of experience 5, 10, even 20 times. Sometimes their resumes disguised that fact, because they'd moved to several projects or to several different organizations. But, they hadn't done anything new in years.

The worst example of this was when I interviewed someone who'd finally been laid off from DEC (Digital Equipment Corp) in the early '90's sometime. (I can't remember if Compaq had bought DEC by then, and he'd been laid off by Compaq or DEC.) I phone-screened this guy for a client, and thought he had some promise, so he came in for an interview. During the interview, I discovered he'd worked in the same facility, working in the same office, working on different projects for different managers, but doing the same work day in and day out for 20 years.

I was blown away. Surely I had misunderstood. I asked more behavior-description questions, trying to discover what he'd really done, and sure enough, he had kept the same role, doing the same thing he'd done for 20 years at the same company in the same office.

I asked him why he was looking. "Because I need a job." Had he looked inside DEC? "Yes, but no one needs this type of work anymore. I was hoping to stick with it." Didn't he want to learn something new? "No, not really."

My goodness. Not the kind of person my client needed at the time. And, no, we didn't need precisely his skills, which is what he wanted to find a job doing. I don't know what happened to him; I was astonished that he'd spent 20 years doing literally the same thing every day.

It's easy to get in a rut at work. So, now that it's January, take stock of your skills. In fact, take this time to edit your resume. (I'm reviewing Andy Lester's Land the Tech Job You Love: Why Skills And Luck Aren't Enough, to be released soon, and he has excellent advice in how to organize your resume.)

Write down your achievements from last year. See if you can quantify anything about them, so they pass the "so what" test. "Led the team that reorganized accounting workflow" is interesting. Add ", saving the finance department at least 20 hours a week according to the CFO" is a huge thing. Write all of these down. You likely have somewhere between 2 and 5 for the year. That's good.

Now, take a look at your resume. Do you see areas that have gaps? Maybe you haven't led a team yet. Do you want to? If so, put that on a list. Have you explored a particular language or OS or database that intrigues you? If not, put those on your list. Make sure you have at least three things on your list.

Now, you have fodder for a conversation with your boss, about what you might want to do over the next year. If your job doesn't allow you to do those things, look for an open source project. (No, you don't have to leave your job to do other work.)

No matter how you approach getting more experience, make sure you are making each year count. No years and years of the same experience for you. That's not the way to grow a career.
burnout-cycle.png
Feeling bored? Disinterested in work? Like you're not making any progress in your career? For those of us in technology jobs, burnout is a common problem. The continuous pressures of deadline after deadline, and the degree of thought required for complex tasks will eventually take a toll on even the hardiest of IT worker.

Left unchecked, a general malaise can often turn into a vicious circle of stress, ineffectiveness, lack of motivation and ultimately a depressive slump. Some people can stay at this nadir permanently - some recognize their own symptoms, and seek a new job - although the same descent into burnout often occurs over and over, giving rise to the term 'serial burnout'.

The key to avoiding such problems relies on a couple of factors: firstly, ensure that you don't over-exert yourself - personal time, holidays, and other means of rest are important between deadlines. Secondly, you must identify and resolve any external issues that could place undue pressure on you - whether it's a lack of procedure, or even managerial issues.

It's easy to get caught into the trap of over exerting yourself for the benefit of your career - pulling in late shifts is a great way to make impossible deadlines (and to gain the kudos that comes with that), but such periods of hard work should be balanced with time to recover. Relaxation time away from work is important, and ignoring this need can be perilous.

External factors can be harder to deal with - coping with bad management or poor procedural systems at work is more challenging than simply taking some time off, and may require liaison with a third party. Key issues usually revolve around communication - such as incoming work flow management (a common issue for many within IT). It is here where installing procedures to help control and formalise communication may be effective (for instance, replacing an ad hoc system with a more structured one).

It's easy to fall into bad habits, and hard to break free from them - but if you're mindful of the danger signs associated with burnout and take positive action to avoid it, you should be able to stay focssed, keen and otherwise happy in your chosen career.

I saw a request for information the other day on how to be an "indispensable" employee. I'm sure most of the respondents talked about technical skill. But the real key to being indispensable is to be adaptable.

If you're adaptable, you can work on a variety of projects. You can work in different languages, on different platforms, even in different databases (!), as some examples. You're not a "GUI guy" or a "platform geek" or a "middleware marvel." You're a person who likes to contribute across the project.

That's really indispensable--someone who can contribute anywhere.

What would you have to do be adaptable? You don't have to contribute everywhere, but contributing in more than one small area would make you closer to indispensable.

Microsoft has published development guidelines for Windows 7 applications. They make interesting reading even if you don't plan to develop specifically for Windows 7 - after all, it has only just gone into beta - because they presumably represent Microsoft's latest thinking about how Windows applications should behave. In fact, I don't see much in the document that is specific to Windows 7. Arguably many of the problems with Windows are a result of badly-behaved applications, so I'd suggest that it pays to follow the guidelines unless there is a good reason to do otherwise. Most are applicable to internal apps as well as publicly available software. You can read them in detail by following the link, but here is a quick summary.

First, there are three "policies":

1. Don't be malware or spyware. Goes without saying; yet even supposedly reputable applications stray over the line sometimes, for example by phoning home with user data without proper explanation or consent.

2. Do not modify Windows Resource Protection files. This is about not installing system files except with official Microsoft redistributables.

3. Sign up to receive crash data from Windows Error Reporting. Probably not relevant to internal applications, where users soon let you know about crashes, but a great idea for anyone distributing software more widely.

Next, 10 guidelines. Note that there can be good reasons for breaking the guidelines; Microsoft's logo rules allow for waivers in these cases.

1. Install and uninstall cleanly, and never force a reboot at the end of an installation. The guideline doesn't address the question of how much user data to leave behind on uninstall. Most applications leave user data in place; but occasionally users reinstall to try and fix a configuration problem that is in the user data.

2. Install to the correct folders. Apps in Program Files, for example, and user data in AppData. An interesting twist here is that if your app is available for all users on the machine, then it cannot write user data during the install, but only on first run:

Since the install potentially elevates to a different user account during a "per machine" install, there is no correct user location to store data at the time of installation.

3. Support x64. That doesn't mean a 64-bit version, just that it works OK on 64-bit Windows.

4. Follow User Account Control (UAC) guidelines. This is the security feature in Vista and Windows 7 that means even local administrators run with limited permissions. I have seen app vendors advise customers to turn UAC off for the sake of their application. UAC is a security feature, and Windows insecurities afflict all of us in the form of viruses, spam and other malware, so I reckon we should support Microsoft's efforts and work with UAC rather than against it.

5. Do not load services and drivers in safe mode. For obvious reasons - safe mode is meant to be safe.

6. Digitally sign all executable files - both DLLs and EXEs. Worth doing, if only to avoid the user seeing ugly warnings about unknown applications.

7. Do not prevent an installation or application from launching because of version checking. This is an interesting one. If you write and test your application for, say, Windows Vista, it seems reasonable to block it from running on Windows 7, which you haven't yet been able to test. Unfortunately this kind of thinking causes major problems for users, who upgrade Windows and find that it "breaks" their applications. However, you are allowed to check for a minimum version - after all, if you know your app won't work on, say, Windows NT 4.0, there is little point in permitting the user to try.

8. Listen for system shutdown messages, prompt to save data if necessary, and avoid unnecessary reboots.

9. Support multi-user sessions. This means that multiple instances run by different users have to be isolated from each other.

10. Don't crash. Pass Application Verifier checks (Microsoft's utility for finding heap corruption and other common problems).

In the past I've read Microsoft logo guidelines that have struck me as placing unreasonable burdens on developers; but these seems concise and sensible. I'd be interested in opinions - has Microsoft set attainable goals, and is there anything here you violently disagree with?

If you apply for a job these days the chances are that you may be applying through a Recruitment Agency. What should you expect from an agency and more specifically from a Recruitment Consultant?

Let's assume that you have applied for an IT position on http://www.cwjobs.co.uk/. You should receive either an immediate automated response or a personal response within a few hours acknowledging that your application has been received. Alarm bells should start ringing if you don't receive any kind of acknowledgement.

How long should you wait before following up? I would suggest two working days, however if you feel that you are uniquely well qualified for the job then do call sooner.

Assuming that you have the right experience then a professional Consultant will want to interview you for the job. Treat this "agency interview" in exactly the same way as you would a "proper" interview. The Consultant may well have a long list of up to 10 candidates and will want to see who will be the best fit for his client. Do try to attend face-to-face as this will always give you an advantage over candidates who can only commit to a telephone interview. Make the effort to attend the agency interview and you will demonstrate your motivation and commitment. This may also make you think twice about which jobs to apply for. I suggest that, in the current job market, you only apply for jobs where you have all the skills required. If the advertisement says "in-depth experience of developing mobile phone software using J2ME" chances are that your C++ experience is not going to be right for that particular job!

This agency interview can serve a dual purpose as once you have convinced the Consultant that are right for the role he or she will be able to give you a thorough briefing on what to expect at the proper client interview. Remember that the Consultant may have had several candidates who have already attended interviews for similar roles with the same client. The Consultant can brief you in detail on the organisation, the working environment, the other people in the department and most especially the interviewer or interviewers. What sort of interview questions can you expect? Will this be a formal or informal interview? Will you need to make a presentation?

If the Consultant now confirms that you have been short-listed, make sure that you get his or her assurance that your CV will be sent to the client. Make a note of exactly when your CV was submitted together with the name of the client. Don't give your permission for your CV to be sent anywhere unless you know where it is being sent. This can lead to potentially embarrassing instances of your CV being received by the client from two different agencies. Keep a record and don't let this happen. I recommend that you maintain a simple spreadsheet of the jobs that you have applied for, when you applied, the name of the Agency and Contact and perhaps a note of the version of the CV that you submitted. Ask the Consultant when you can expect a decision regarding an interview and put a reminder in your schedule.

At this time the Consultant should also ask to see your passport or proof of identity. I know that many candidates are concerned about identity theft but this is a genuine requirement of the Employment Agencies Act. Check that the agency is a member of the Recruitment & Employment Confederation (REC) who will also be able to re-assure you and confirm what information you are expected to provide to a registered Recruitment Agency. Apart from checking your identity the Agency will want to see proof of your right to work in the UK if you are not a British or EU Citizen. They should also ask for copies of relevant qualifications and details of your references/referees.

Hopefully all of this should lead to a face-to-face interview (or interviews) with the client and eventually a job offer. Your Recruitment Consultant should then be able to guide you through the whole offer process. You should be completely open about your current earnings and be absolutely clear about your salary expectations in the new role. There is nothing worse than getting an offer and then finding that it is for much less than you had expected. Be up front about this and make sure that the Consultant understands exactly what salary and package you are looking for and there should be no confusion.

Your Consultant may want to stay in touch even after you start your new job. It's always useful to have a good contact in the recruitment industry, you never know when you might want to recruit some staff for your team or even look for another job!

Last week, I taught several project management workshops. When I spoke about moving to Agile methods, a number of the PMs were quite concerned. "But people aren't interchangeable. I have only one kernel/GUI/database specialist (pick the specialist of your choice)." But they don't actually need specialists. They need people who get things done.

You can overcome this specialist/generalist problem by expanding your skills. If you're an application developer, learn about the platform or the GUI. Maybe you want to learn about more testing approaches or patterns. The key is to expand your skills across the product and to expand your repertoire of functional skills.

One technique I especially like is to look at feature slices (slices through the architecture) and learn more just above and just below where you currently work. The more you do that, the easier it will be for you to see the whole architecture, whether you are developing, testing, writing, or whatever you do for your project.

You are not interchangeable with any other person, even if you expand your skills. Especially if you expand your skills! If you stand out from the crowd, you will be more valuable to the organization. Which makes it much easier to succeed in your current job or find a new one.

Current Vacancies from CWJobs

(* Required field)










Preferred format
   
Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4