15 years ago, finding a job in IT was not too hard. And quite simple at that too. This was mostly attributed to:
I want to talk about the second point. When you search for a new IT job, the typical synopsis is as follow:
[Required Skills]
[Required Knowledge]
[Desired Skills]
[Required Qualifications]
Qualifications are qualifications - not much have changed there. However, knowledge and skills is where everything changed. Now I personally have not gone for an interview in years, so I am not sure how much emphasis other employers place on these required skills - though I myself tend to lean heavily on it when interviewing candidates. Suffice to say listing required skills implies some kind of expectation that job applicants possess those skills.
The problem is that 15 - 20 years ago, the required skills looked like this:
Job: Senior C++ Developer
Required Skills: C, C++, STL, Unix, TCP/IP, Sockets, Threads
Today, a posting for say Java looks like this:
Job: Senior Java Developer
Required Skills: Java, J2SE, J2EE, EJB, XML, UML, OO, HTML, CSS, XSL, XSD, Hibernate, Spring, WebLogic, WebSphere, Oracle, JDBC, RESTful services, JMS, JAAS, JAXP, JDO, RMI, Servlet, JSP, JSTL, Maven, Ant, Git, O/R Mapping, Axis2, Ajax, JQuery, Eclipse, JUnit, PL/SQL, BPEL, WebSphere business fabric service, WebSphere process server.
And I took those from three job postings and combined them. They all refer to real skills required today...
So now I ask of you, who on this planet will have all these skills? Sure I added three job postings together, but even then - what is the chance that you have used Axis2 and JAAS? Or Spring on WebLogic using Maven as build tool?
The problem is specialisation. There is just too many frameworks, platforms, tools... I am a consultant, that means I get exposed to many more different technologies than non-consultants. Even I find it hard to locate one job posting where I have all the required and desired skills.
I think the current state of software engineering is a joke. Just as the name in itself is.