Tuesday, January 19, 2010

Employment Opportunities

I've been unemployed now for more than a year, and I've been meaning to say something about this for a few weeks now.  Actually, this subject is one that inspired me to create a blog to share with all you fans, interested people, enemies and so on.

One of the great things about being unemployed is that I have been privileged to see lots and lots of job openings and how they're written, and why they don't work.  I can tell you right here that the main reason they don't work is that they are not written for the job seeker at all, they're mostly written from the employer's HR perspective, and that really hurts.

For one thing, we seekers are looking for something that describes a position where we would feel competent, capable, contributory and challenged to do well.  Most of the job descriptions I've seen are so idealistic that they would not be available at all if the ideal candidate existed.  (In other words, if that employer could find a candidate like that, they would already be employed and not looking for a job.)

I say this because I've seen a whole lot of job openings that are easily jobs where I could perform well and contribute a lot, and with over 30 years in my field now, I can learn what I don't already know.  But most of the job descriptions are written as if the candidate has to fit perfectly, and my take on that is - if that person existed, they wouldn't be looking at the description to find a new job, they'd already have it.

I should probably also say that I have yet to find a job description that fits me that well, but, then, I'm not employed, either.

I'm going to go through a few actual job postings I've seen right here, so I can make it clear what I'm saying and you, the employer or seeker reading this blog, will have no trouble understanding what I mean.

These are actual job listings taken from CalJobs, LinkedIn and a few other places, with names and other unique identifiers removed so as not to make it too obvious who goofed (especially if that would be me).

Here's one from LinkedIn:

"Looking for talented PHP developer - for company in Israel 2+ years experience"

This is one I like: it tells me what the company is looking for and where it's located, right up front.  In fact, most of the postings I've seen on LinkedIn are really good.  The ones that are not either don't include the location or have other deficiencies in common with the rest, which I will now proceed to cover.

I'm registered for searches at CalJobs, a free job listing service provided by the California Employment Development Department, with a resume built in their system using their forms, designed to get me a job in software development in C or C++ on UNIX or Linux systems, applications server-side or system level (except that I don't do device drivers, but there's no way to say that), OR providing PC services.  Their search engine doesn't have a lot of flexibility, so my primary area of focus is software applications development.

Here are four from CalJobs:


COMPUTER SOFTWARE ENGINEER
Irvine
92612
Not stated
Long Term
1/15/2010
SOFTWARE SOLUTION ARCHITECT
Irvine
92612
Not stated
Long Term
1/15/2010
SENIOR ENGINEER
Lake Forest
92630
Not stated
Long Term
1/15/2010
SOFTWARE ENGINEER
Costa Mesa
92626
Fair market
Long Term
1/15/2010

(Column four is the rate of pay, if you didn't guess....)

These aren't too bad, although the job titles are kind of bland and unrevealing.  Let's take a closer look at the job descriptions themselves.

COMPUTER SOFTWARE ENGINEER
"Providing pre-sales technical and business support Work closely with Sales Delivery Teams Manage project timelines, scope, budget, risk and resource allocation and scheduling Help Project teams and assist resources in the technical development Manage POCs Conduct Presentations and demos Participate in information gathering, define work problems, and design programs and procedures to resolve problems. Gather, understand and document client requirements. Prepare for and actively participate in client meetings when required Other Build a Microsoft Business Intelligence Practice working under the auspices of the BI Program Manager"

(The format is also an artifact of the CalJobs system - it's pretty flat and, thus, a little tricky to read, but that's not what wrong with this entry.)

To begin with, a software engineer is a person who engineers, or in plain English, develops, software.  This position is for someone in pre-sales and technical support.  In fact, there is nothing in this job description that even relates to the profession of software engineering.

Okay, so maybe the listing employer has something a little different in mind from me when they call this a "computer software engineer" position.  However, that makes it no less a complete waste of my time because I am a computer software engineer and this is nothing like what I do.  I could do it, but it's not what I want or in my areas of expertise, and the misleading title makes it look like something it is not.  Foo.

SOFTWARE SOLUTION ARCHITECT
(Let me say up front that I knew from this title it wasn't what I'm looking for, but it is such a broad-scope title it could mean anything.  Let's take a look....)
"Providing pre-sales technical and business support Work closely with Sales Delivery Teams Manage project timelines, scope, budget, risk and resource allocation and scheduling Demonstrates architecture and design expertise in the area of Microsoft BI and SharePoint Help Project teams and assist resources in the technical development Manage POCs Conduct Presentations and demos Participate in information gathering, define work problems, and design programs and procedures to resolve problems. Gather, understand and document client requirements. Prepare for and actively participate in client meetings when required Build a Microsoft Business Intelligence Practice working under the auspices of the BI Program Manager"

Hold on a minute - isn't that almost verbatim what the Computer Software Engineer position said?  It's pretty close, but the names make them seem worlds apart.  I think this is the same company, and that worries me, too.  Here's the one distinction between these two positions:

"Demonstrates architecture and design expertise in the area of Microsoft BI and SharePoint"

So what was the point of all that other stuff that was word-for-word the same between these two positions?  Why was it buried in the middle?

Another really big point here is that both of these descriptions clearly involve Microsoft expertise, but neither one of them includes that tiny little tidbit ("MS") up front in the job title.  In fact, a whole lot of the CalJobs and other job search listings leave out this rather salient fact that could be called out in the title with just two letters.  In general, I haven't done a lot of Windows-specific development, and my expertise is in UNIX and Linux, not Microsoft, so these little distinctions are extremely important in my field.

Let's try number three:

SENIOR ENGINEER
"Participate in the architecture and development of software utilities and tools that are used to develop, validate and support Western Digital disk drives. Provide technical guidance for developing applications in the Windows and Linux environments. Develop driver, kernel and application level solutions with SAS, SATA, legacy ATA, and serial IO drivers. Under moderate supervision, write drive testing tools for CPU architecture, including PPC, ARM x86-64, and perform system-level programming in Linux with Slax, Fedora, Ubuntu and RedHat. Interface with other groups to define and develop new tools and enhance existing software utilities. Perform PCI device driver development utilizing T10/1760-D SAS and T10/1826-D SAT-2 protocol. Implement the Linux driver stack for storage devices. Write software applications that interface directly with hardware in C/C++ and Java with the aim of optimizing operational efficiency. Support Western Digitals integration of advanced features into new drive products. Required skills include: System-level programming experience in Linux: Slax, Fedora, Ubuntu and RedHat; Linux driver stack for storage devices; PCI device driver development; C/C++ and Java; writing software applications that interface directly to hardware; SAS ,SATA, legacy ATA, and serial IO driver; writing drive testing tools for CPU architecture, including PPC, ARM x86-64; and T10/1760-D SAS, T10/1826-D SAT-2 protocol. Education and experience requirement: Bachelors degree in Electrical Engineering or Electronics Engineering or Computer Science + 5 years progressively responsible and post-baccalaureate experience. Will also accept a Masters degree in one of the same fields + 3 years experience."

When you get through all of that, what it boils down to is a senior-level Linux device driver writer (okay, engineer).  This is more of a hard engineer position than the average software engineer and it is a low-level, close-to-the-hardware kind of job.  The question is, how do I get that from the title "Senior Engineer?"  I don't, and neither do you.  Why?  Because "Senior Engineer" is an HR title for a particular level of technical developer in this company's internal parlance.  I was a "Senior Engineer" early in my career, for two years after I had been an "Engineer" for a year and a half and before I became  "Principal Engineer" for at least two years after that.  In all that time, I never once wrote a single device driver (nor since, but I digress) - I was a key software engineer in the development of a brand new operating system, and I loved that job.

Here's one more chance:

SOFTWARE ENGINEER
"This engineer will design, code and test medium to large software modules as they apply to a specific product. Will also create the requirements analysis, functional design, and detailed design specifications as they relate to the implementation of the software. Essential Functions: Designs, codes, and tests medium to large software modules Participate in short term planning of IT projects and programs Participate in group design meetings Analyze, interpret and make decisions affecting work methods and procedures within an overall program Participates in the development of larger modules which may also include requirements analysis, architectural design, or detailed design tasks under the direction of a more experienced engineer Will write technical documentation Develop software using at least one programming language and platform Will utilize source control tools and related build mechanisms Will install and configure software development tools and/or operating systems Will debug and correct problems in existing software Estimates the complexity of a certain task and an appropriate schedule Will create the requirements analysis, functional design, and detailed design specifications as they relate to the implementation of a software module Will provide direction to less experienced engineers Can resolve complex software problems/bugs via advanced debugging techniques Will follow all company standards, including the software coding standards document Additional Functions: Must be able to work independently with little supervision. Must practice regular continued self-education. Exercise troubleshooting and problem solving skills. Must have a willingness to teach others. Requirements: Candidate must be experienced with OO concepts and have a working knowledge of Java. B.S. Computer Science or equivalent experience. Strong understanding of object oriented analysis, design and programming. At least 4 years of Java programming experience, object oriented analysis, design and programming. Ability to work both individually and in team environments is essential. The individual must be articulate and communicate effectively, both in written and oral formats. Experience in a J2EE application server environment. Experience in Ajax, JSP, hibernate Experience in an enterprise transactional environment, a plus. Experience in XML, UML and SQL a plus. Real time programming or other thread management, a plus. Box Office Management or other ticketing experience, a plus. Experience as a group Leader a plus. All other duties as assigned."

Wow, now that's a mouthful - 363 words.  Here's the sad part - the first mention of what this job is really about doesn't occur until word number 243, 2/3 of the way through the description.  What is that?  "OO" which is computer parlance for Object Oriented, followed a few words later by a really important key word, Java.  Do you remember what I said earlier about what I do?  I develop software in C or C++.  No mention of Java.

So, what, Mark?  For crying out loud, what do you want, anyway?

See, there are lots of languages used in programming computers, a.k.a., developing software.  Some are similar, some are so different you wouldn't know they even fall into the same class of anything unless you happen to know the field anyway.

My point is this:  what this company is looking for is a Java Developer, not just any software developer.  This routinely excludes people who specialize in C, LISP, COBOL, PHP or any other 4GL, SQL - in fact, it pretty much excludes anyone who doesn't know Java specifically, or, at the closest, C++ or C#.  As a job seeker, I not only want to know this up front, I need to know it, for their benefit as well as mine.

There are just a couple more things I'd like to go through here, and they're pretty simple.

PRINCIPAL SOFTWARE ENGINEER - [COMPANY] CLIENT DEVELOPMENT - [unique identifier]
"Location(s) US - California - IrvineTitle Principal Software Engineer - [Company] Client Development - [omitted]Job Description [Company]’s software utilizes patented data de-duplication technology to backup data once – and only once – on a global basis. [Company] identifies redundant data segments at the source, thereby reducing the amount of network bandwidth used and data stored. Using this and other patented [Company] technology, customers can achieve an industry leading 300:1 daily data reduction in real-world applications. [Company] already leverages [---]’s broad portfolio of offerings, such as [unique identifier] as a target for disk-based backup. For customers that require both disk- and tape-based data protection solutions, [Company] wants to talk to candidates interested in the position of Principal Software Engineer located in our Irvine, CA facility.Principal Software Engineer - [Company] Responsibilities* Software engineer to work on development and support of an advanced, multi-platform, disk-based backup system. Work on a small development team in Irvine, CA on a dynamic and fast growing product within a large, stable, publicly traded company.* Development tasks: designing, developing and maintaining multi-threaded, client/server C++ code, correcting bugs, handling field escalations, etc.* Possibly acting as a project leader or liaison in coordinating communications between development teams, QA & Customer Support.Skills* Experience with development of Unix/Linux and Windows software products highly desired* Experience with backup, data compression and filesystem internals highly desired* Experience with databases (Oracle, SQL Server, Exchange, DB/2, etc.) or multiple operating systems (Windows, Linux, Solaris, MacOSX, HP-UX, AIX, Netware, etc.) highly desired* Understanding of requirements for Enterprise-class software products highly desired* Very good problem-solving analytical skillsExperience /Education* B.S. (or better) in Computer Science* 8+ years industry level software experience* Skilled in C++ programming* Excellent English communication and writing skills* Enjoys working on a team and helping others [EOE disclaimer, etc.]"

I know this company, I interviewed there a few years ago, when they were looking for this exact same position.  I didn't get the job then, which always left me a little mystified, but I know it's one I could not only do and well, but excel at - it's in my area, I'm familiar with the technologies, and so on.  My suspicion is that it's one of those openings where they want an exact fit, and the sad part is that they won't find one.  After this many years and still having the same opening, anyone they hired between then and now didn't work out, for whatever reason, and they're either too picky or they don't really need this position filled.  Either way, it's a lose-lose for them.  (BTW, I did apply, haven't heard back, may apply again with a better cover letter - we'll see....)

To make the rest short, I saw a whole slew of listings on another job search site for "Software Developer III," "Software Developer IV," "Software Engineer II" and the like.  Do you have any idea what those are?  Don't they sound a lot alike?

In fact, they are not (of course), and for the same reasons I noted above about those positions, too.

So, what's the point?

Employers: if you have a job opening for a Java Applications Developer, please call it that, not just "Software Engineer."  If you're looking for a hardware engineer, please do not call it "Applications Engineer" - yes, I saw a few like that.  If you can just step a word or two outside your HR title boxes, you make it easier for those of us looking for work to find a good fit and benefit you.

Job Seekers: remember that the majority of employers don't do what I just asked, and be patient.  Above all, don't expect the perfect description you find to be a perfect fit.  If you should happen to find a really good fit, make sure you write a really good cover letter that says so.  Otherwise, your resume will wind up with every other not-quite-perfect match - in the HR file for "future prospects" or just the circular file....

No comments:

Post a Comment