In an earlier question, I asked for career advice for new software engineers who did well before and during college. But what about people who weren't fortunate enough to go to MIT or Yale, for whatever reason? What if you went to what Joel Spolsky calls a JavaSchool?
What can/should JavaSchool alumni do to develop their skills and make up for the things they missed in college? (Or, was Joel wrong about those schools being disadvantageous?)
Despite the claims made by Joel in that article- and he concedes the point himself- a lot of the subject areas that may be missed by a "JavaSchool" are not necessary of many jobs.
I attended something that I suppose resembles a JavaSchool in that we spend most of our time focusing on high level languages like C# and Java, but that doesn't change the fact that "Algorithms & Data Structures" is still part of the required class list- not to mention all of the other theory-oriented classes. Granted not all "JavaSchools" are the same, but that isn't the point.
In my opinion, more important than an understanding of some of the grittier development topics is being able to problem solve effectively when unique challenges arise. As software engineers we do the vast majority of our learning on the job and as such, two of the biggest aspects of our job description are being able to problem solve and being able to pick up unfamiliar concepts. If, during an interview, one is unable to make a discernible and logical attempt at solving a problem which is new to them, then their incompatibility for a given position will likely reveal itself.
Obviously, when hiring someone for a position that requires constant exposure to and use of some intricate topic that may be missed by a JavaSchool, it is often the logical choice to go with someone who has a prior understanding, but lack of experience shouldn't always preclude job eligibility.
More than likely, the 50 year old Java guy at your company that has been there for as long as anyone can remember did not have any understanding of Java until his job (current or previous) asked him to learn it- and he did so. Strictly speaking, it's bad practice to fire "the old guy" so that a younger and more "up-to-date" candidate can take his place; that being said, if the job description for any employee young or old changes, it is the responsibility of that employee to get caught up or find a new job. Just because an individual (especially a programmer with past experience) doesn't understand some concept, doesn't mean they are unwilling or incapable of learning it. In fact, if they are unwilling to learn then they probably do not belong at any job- much less yours.
It's fair to say that some "JavaSchools" are better than others, and that fact should certainly be considered when selecting a candidate for a position, but there are a lot more important personal traits than just where someone went to school.
It is our aptitude to tackle a problem and find a solution that defines us as engineers, most everything else is secondary.Tweet