I’ve made a few transitions back-and-forth from companies that develop in Java and C#. On the surface, the only difference appears to be the language, the runtime and probably the operating systems. Technically, there’s really little difference for Internet companies. You can in fact, create functioning high performance systems in either environment. Development is similar, tools are similar, performance is similar. Both languages fit in the just-in-time compiled type environments which is a sweet spot for web development (sitting somewhere in the middle of compiled languages like C++ and dynamic, interpreted languages like Ruby).
My latest transition was from LinkedIn (mostly a Java environment) to LendingTree (mostly a C# environment). What struck me about the transition this time was not actually something new to me, but I think I saw it in a new light. It’s also probably more of a symptom of transitioning from Silicon Valley to the east coast (which I’ve also bounced around a bit with) but so far I’ve been able to associate with the languages.
In Silicon Valley, we were Software Engineers. In Microsoft shops, we were Software Developers. Again, this may solely be anecdotal of my experience, but that experience did have me considering those titles more closely.
I thought about the nuances of what those titles imply. Not so much of the proper definitions, but what they meant to me. To complete the picture, you need to examine the entire technical ladder. Both Google and LinkedIn follow something akin to Software Engineer, Senior (Software) Engineer, Staff Engineer, Senior Staff Engineer, Principal Engineer. The “developer” ladders went Software Developer, Senior (Software) Developer, Architect, Senior Architect.
The title “Architect” didn’t sit well with me. To me, every creator of software not only develops it, they design, architect, and build it. More junior engineers tend to architect things with smaller scope and more senior engineers tend to architect with larger scope. However, at all levels they still wrote code and decided on its organization.
A pure Architect sounded like someone who drew a lot of boxes and connecting-lines on whiteboards (and specification documents). Titles are always approximations as most everyone wears more than one hat, but they do specify an intent. From what I have seen, developers and engineers did not do anything notably different in their day-to-day jobs, especially at web-based companies. So the name difference really came down to perception. The word “engineer” to me did convey some responsibility on the title holder that they engineered software. They designed it, architected it, and built it – at every level.
The Engineering ladder (per Google and LinkedIn) also had the advantage of continuity. That continuity promoted a strong sense of ability to grow within an organization’s technical ladder. Plenty of engineers I know never want to follow the managerial track. To me, if a company is intent on building a world-class engineering organization, its paramount they provide a technical ladder that provides a real career path through engineering. One that conveys progression of (at a minimum), responsibility, accomplishment, reward, compensation, and respect.
I recall at Google that it was important to enter the company at the right title. You didn’t want to be pulled in at a title you weren’t ready for because you’d likely receive a subpar performance review out of the gate. They would and do reduce your title if a mismatch became evident. The title truly followed the ability. You didn’t earn a title – you earned the technical ability and stature that was indicative of a title. The title itself simply followed along.
Similarly, when you received a promotion up the technical ladder you were probably getting used to excellent performance reviews. After all, you were getting a promotion. After the promotion however, you should be ready to potentially receive more mediocre reviews. You’re doing the same or better work, but the expectations of your position have been raised. Your new title expects more.
I joined LendingTree a few months ago and started exploring how people felt about their software titles and careers. I talked to all our engineering managers and good number of developers and architects. After gathering a lot of data, we changed titles – from developers/architects to engineers. The entire engineering department all at once.
Software and Senior Developers became Software and Senior Engineers. Architects and Senior Architects became Staff Engineers and Senior Staff Engineers. We created a technical ladder that laid out concretely what those titles meant. What was expected of anyone in those positions with a roadmap for advancement. Employee performance is composed of many things but the requirements of your title on the ladder is a big component.
We’re not software developers and architects anymore – we’re Software Engineers. Different specialties, different skill levels, different technical experiences – but we’re here with one mission to build the best software and systems we can for our customers.