You get extra points on an interview if you can mention these things:
- Understanding the full software lifecycle. If you can mention how a solution reduced support costs I'll love you for ever. So many architects and developers think their job is done when the software is released.
- Mention "-ilities" and how one of your proposed solutions took -ilities into consideration.
- Somehow work in that you understand what requirements are (they are NOT something that you CREATE, rather they are something that you DISCOVER through analysis and then DOCUMENT.
- I like to see a wide range of development and business environments. Some people think you are worth less as a developer if you never worked on a 100 person development team.
Hiring Process Items I Disagree With
- I don't like giving proficiency tests to candidates. I think they tend to focus on minutiae ("if you compile this code what error will you see?" ... who cares? It's a stupid block of code I would never write that way!) that isn't important. I would rather have a conversation with a candidate and understand how he thinks, projects he has worked on, teams he has interacted with, etc. The mechanics of programming can be learned easily on-the-job, if necessary.
- Hiring managers who focus on tool-based knowledge when advertising an opening. They want to list every software package that the candidate may have to use. If my company uses ClearCase for version control I really don't need to list that on the ad. I would *never* choose one candidate over another based solely on whether she has experience with my version control product. The "concept" of version control is what is important. The tool-based knowledge is not. Similarly, a lot of ads will mention required experience with SSIS, yet I wouldn't want to disqualify any candidates who have broad ETL experience, but with DataStage or Warehouse Builder and not SSIS. Granted, if the primary skill is Oracle administration, a SQL Server DBA wouldn't be a good choice. I'm merely referring to the software used on the periphery.
- Ads that mention "Sr Level Experience in Java. Sr Level Experience in SQL Server, Sr Level Experience in C++" etc. Again, this is tool-based knowledge and as mentioned above, the "Senior Level" qualifier is meaningless. If I see this ad I know the company uses C++, Java, and SQL Server, and they think they need a guy who has been this for years. I would rather see something like "Knowledge of C++, Java, and SQL in a high transaction online environment using SOA". Less words, far more meaning.