TL;DR - These are not just great times to be a Software Engineer - it's even better to be a Software Engineering Manager. Plenty of open development opportunities help in shaping your own, individual professional profile. Physical world borders are far less constraining in that industry. True engineering expertise (& individuals who can apply it within whole organization) gets noticed & appreciated. And in the end, you don't have to work for Amazon or Google to build top-notch products, quite the contrary - in many cases small, companies with the headcount of few dozen are capable of things that were recently unthinkable for industry behemoths.

I've already written a lot about today's software developer job market - when to switch jobs, what to look for, what to expect in future, etc. And it's not just me of course, on the web you can find plenty of tips & whole articles for developers looking (passively or actively) for new "career opportunities". But what if you've already raised the bar a bit higher? What if you don't want to be paid for writing code yourself, but for leading the whole engineering unit? What if you have a need to out-scale your passion, experience, skills & attitude? What if you're an Software Engineering Manager (I'll be using the abbreviation SEM from now on)?

  1. What are the "typical" openings - what are companies looking for?
  2. Who is favored by the current market situation? Job seekers or job offerers?

I think I have few remarks I can share as by accident I was very interested in this topic recently ... To keep the long story short, in December 2016 I've decided I don't like my current job anymore & I need a change. To make things more spicy, my wife came to the same conclusions, so we've both started 2017 on our notice periods. Hellyeah! ;)

Don't worry, I'm not going to post the full story, just some points I find most interesting, so it may seem a bit chaotic - sorry for that, in advance. And one more thing - these observations & remarks are based mainly on the situation in Poland.

Taxonomy doesn't help

Software engineering is still quite a new discipline (that keeps evolving rapidly), so different companies have very different ideas for positions/roles, their responsibilities, level of impact & precise area of interest. That applies to managerial technical positions as well ...

  • majority of job offers is for S&S Project Managers (S&S = Spreadsheets & Slides); deadline keepers, estimation enforcers, with a key ability to deal with Microsoft Project - past experience with hands-on software engineering is very welcome, as clearly such individuals are much lesson prone to bullshit ;> To summarize: role straight from 90s, "a factory taskmaster" without a hint of actual, engineering leadership - meh, I'm not interested.
  • another frequent case is Salesman / Account Manager - typical centurion in B2B software houses that build stuff in contracted projects; this one ain't much into engineering either - (s)he's most interested in filling his teams' future pipeline (with projects to do), asset re-use (to minimize own cost), fullfilling contractual obligations (over common sense / actual value - hard to blame her/him - a contract is a contract ...). These all may actually require some knowledge about software delivery (to scent the new opportunities ...), but what really matters are: the networking skills & building client relationships. Next, please.
  • there's a separate category that appears only in large enterprises - Plumber Manager. Genesis of this role is quite simple: at some point an issue pops out - usually a derivative of bad decisions, wrong structure or other "skeleton in the closet". Unfortunately no-one wants to take the ownership & solve it, quite likely no-one knows how to do it & even understands the root cause of the problem. What happens next is disarmingly funny - organization finds a budget to create a new managerial position, accountable for this one particular issue ;D For patching it, neutralizing it, removing it from the view of others. Problem ... "solved". No way, Jose.
  • By FAAAR the most interesting positions (usually placed somewhere between Delivery Lead & Chief Architect) appear in companies that meet these few criteria:
    • they develop & maintain their own products / services (X-as-a-Service, not developer outsourcing) in-house
    • the products of their development are a critical piece of their revenue streams (they earn money due to them)
    • they don't outsource any work on their core (market position differentiating) domains to any other company / don't rely on 3rd party system (or service) as a key element of their platform

Actual position name is really not that important - but what you're doing really is. Needless to say, the most compelling options are the ones when you can actively shape your position & lean it towards the area that needs most focus & effort: either towards people factor or technical (architectural) expertise.

This list is not complete, but majority of "categories" I've omitted are typical to enterprises I've completely filtered out of my search: consulting, large corporations, companies that treat their software delivery as a sad necessity & burden. Examples? "Policy" Manager (deals mainly with bloated bureaucracy), "Translator" Manager (business executives can't find a common language with their IT guys, so they need someone to bridge ...), "Bait" Manager (there's a political decision to do something, but no-one wants to, either because of negligible chance of success or poor - sometimes even negative - potential payoff), ...

Where to look for?

If you're at this point of your career, your main source of job offers should preferably be the network of your professional contracts. People ...

  1. who know you
  2. who've cooperated with you
  3. who've experienced the effects of your work
  4. or at least who've heard / read about you

That's why the visibility & unobtrusive personal branding is so freaking important in whole software engineering career: it's not enough to be good & do your stuff properly - you also need to make it public, so the interested people recognise it & keep it in their memory:

  • "Yes, this dude has the ability to deliver something like that."
  • "Yes, she has already cleaned a mess much bigger that that, 1 year ago in XYZ."
  • "Yes, actually I've seen him pioneering a similar project from scratch ..."
  • "Yes, ABC & DEF are good examples of next generation of leaders risen by her."

I don't really find myself a social-monger :) but it worked in my case - it was enough to spread the message that I'm up for new challenges & offers have started to appear "out of nowhere". Sometimes surprising offers, based on very surprising recommendations, via even more surprising chains of peer-to-peer endorsement. It's not really a case of favouritism or (ouch) cronyism - the fact is that even if the number of job postings for SEMs is much lower than for "standard" developers, the number of available, fully capable potential takers is even more limited, so you really don't want to miss a good player within her/his short period of availability.

What is more, it's much more harder to assess a SEM candidate - technical skills & experience are important, but her/his leadership qualities, architectural pragmatism, soft skills, proper focus & crisis management proficiency are MUCH more important. Evaluating these with any kind of test / interview is much harder than getting a firsthand opinion from someone who have seen you in the trenches.

What about other options (except from network)?

On-line job bulletins, head-hunters, offer crawlers & aggregators - all these work (to some degree), but all the typical flaws do apply. Unless you approach a higher-grade executive head hunters directly ("Hey, I'm XYZ, here's my CV, it will make your clients howl in anticipation to get me on board."), you'll be getting shitloads of poorly targeted spam.

About going global

"Może lepiej by było, kto by to ocenił
Gdybym rzucił to wszystko, miejsce bycia zmienił
Mogłem jechać, wyjechać i stąd się oddalić
Ale jednak zostałem z tymi co zostali"

Grzegorz Turnau, "Tutaj Jestem", 1997

There's already a wide discussion (on the Internet) regarding whether capable software developers in countries with low labour costs should move to so-called "highly developed countries" to pursuit higher wages (... & higher costs of living). IMHO it doesn't really make sense unless you're targeting something very unique or specific (rare technology, particular organisation, etc.). Yes, western markets have the capacity to suck-in the talent from Eastern Europe and other developing regions, but these days you'll easily find very interesting developer job in Poland as well. Or a remote one that will not force you to move out of your homeland.

But the situation is slightly different when we look at more senior positions (like SEM). Recent disastrous tendency to move all engineering roles & positions ("outsourcing spree") to Far East have left Western Europe (mainly Scandinavia, but also Germany & UK) with a gaping, generation-wide hole in the technology leadership job market. As there were fewer developers there couple of years ago, there are now fewer capable, experienced leaders with technical background - so if you're really good (& these guys know how to assess you ... in my case I had external companies hired to screen me, my past accomplishments, publications, etc. ...), the biggest problem is picking the city you'd like to live in ;P

Of course first you have to be willing to move. Frankly, I was struggling (in my case it was UK), but I've decided it's not the good moment, so I've passed.

For now.

One more remark here: I've ruled out US from the equation (as a potential target job market) & I hope it doesn't require an extensive comment. H1B visa is tricky enough to get & with Trump at the steering wheel it won't get any easier soon.

"Burn, baby burn"

Nothing makes senior executives appreciate proper engineering leadership more than "a burning platform" under the (organisation's) hood, e.g.:

  • problems with stability, resilience, overall quality of service
  • not being able to handle the scale (volume, throughput, latency, etc.)
  • extremely inefficient development process, due to excessive tech debt / broken architecture / dated development toolset
  • and on the top of all the above - no-one feeling responsible & taking ownership over the gargantuan mess that seems unlike to get fixed ...

Realising any of the above (IF it happens, as it's not that trivial ...) C-levels understand that their engineering squad didn't manage & applying a strong injection of proper, focused technical leadership from outside of the organisation is critical. Majority of the most interesting offers I've got were of this sort & ... I didn't mind as this is the kind of journey I am looking for.

Such scenarios not only shape & harden the best teams (of the ones I knew), but also provide the biggest feeling of accomplishment & enable the most intense learning experience. Technical difficulties & high level of pressure aren't that burdensome if: you feel that what you're doing has a true meaning, there's a real urge & desire in people to do something, you feel the support of your superior & peers as all are sharing the same, common goals.

Starting with a greenfield sounds very sexy & brings you the false hope that everything will be perfect this time, but in fact there are very few start-ups with open positions for CTOs or SVPs of Engineering - as these positions are usually held by the founders. And if a technical start-up doesn't have a technical (co-)founder, I'd rather advice you to be cautious - most likely there's something very wrong about this organization :)

Going for Big Names

If you've already got a documented track of successful working experience as a SEM, you may actually think about joining one of the Big Players - global mega-unicorns, companies that are synonymous with success in Software Engineering industry. Amazon, Google, Microsoft, Facebook, Uber - they all are already present in Poland & they usually have some open positions, even ones that sound technical :).

Sadly, it's not such a good idea (at least IMHO).

As far as I know none of these companies (or other similar ones I haven't mentioned) have decided to build any core engineering teams here in Poland (at least not in Warsaw, which I'm mainly interested in). Local teams usually work on support, aid local partners, help client implementation endeavours or just participate (on various stage) in (pre-)sales processes ... Sure, you'll have an opportunity to warm yourself with one of the most recognised tech brands on the planet. And that's pretty much it, in terms of pros.

Overall recruiting experience ...

... in my case was very, very positive. I had plenty of time (>2 months of overdue vacation) just to make sure I did a proper research & picked the option I like most. So I was fastidious & thorough. I was in advanced talks (2+ stages of recruitment process passed) with 10+ companies. I had all kind of interviews: phone ones, video ones, site-to-site over-the-VPN ones, face-to-face ones in Poland & abroad, etc. I had to pass written tests of all kinds (psychological, intelligence, language, logical thinking, ...), do case studies, role play, even do some pair-programming :)

But by far the best & most interesting part was meeting all these very interesting people. Executives with vision, with passion, with interesting plans & high aspirations. In some cases, in the fire of open & straightforward discussion one could almost "read" the given company's DNA, its culture & values (both good bits & sometimes the bad too). It's not an exaggeration to say that I'd like to work with at least 50% of them, but of course I had to pick a single offer.

Nevertheless, many of these meetings were nothing less than inspiring. Of course not all of them. Sadly, some were disappointing or even distasteful. Not because the other party decided to not pursue with my candidature (which is a normal thing, both sides need to be fully convinced that it's a win-win scenario to make a positive conclusion), but because of immature, unprofessional behaviour - being dishonest (usually hiding facts), giving fake promises (& knowing that from the beginning) or even (in one case) cutting of whole communication w/o a single comment when they've apparently changed their mind at the late stage of process.

Oh well, I guess it's still better to learn about their lack of professional behaviour then, than after being hired :)

P.S.

I guess I went a bit overboard with the post's length. Sorry for that. But in the end it was a truly exhausting journey & I'm happy it's over. I believe I've managed to pick the most interesting offer - the one that will provide the greatest benefit to all involved parties. At the moment of writing these words my work contract is already signed, I'm all set for the new role & I hardly can wait to start my new adventure.

3rd of April is the day ...

P.S.S.

Yes, you've guessed right. Most likely I'll be looking for more capable people very soon :) Never too many good engineers on board, right? ;) I can't reveal too many details just yet, BUT here are some keywords to focus your attention:

  • .NET tech stack (hedging with other tech is very likely due to practical reasons, but TBD)
  • modern front-end (heavy JS) & API for collaborating partners
  • OUR OWN global, on-line, highly available platform (no consulting, outsourcing, external project, etc.)
  • distributed, in the cloud - so automation is the key
  • office in the centre of Warsaw (company is global, but not branch-organised though)

Pic: “the handwriting of lillie coit” by B.S. Wise is licensed under CC BY 2.0