Problem-Solving vs. “Skills”

Alex Rogachevsky
8 min readFeb 5, 2018

I am writing it mostly for fellow geeks who’ve reached their career cap in IT. Let’s cut to the chase. Whether you sold your soul to the corporate world or are employed at one of the alleged “best places to work”, you do it to get paid. Career == money + everything else. When your compensation stops to grow, your career stops as well.

I am guilty of stupidly putting “hot” acronyms on my resume and job-hopping through 3–5% pay increases during the first 10 years of my career. The problem is much deeper than the naive beginner’s desire to monetize learning the new technology faster than the next (cheaper) guy. The real issue here is with corporate IT departments and funded startups. Neither needs us to solve any (technical) problems. They hire bodies with specific skill sets to fix bugs at best, if not just look busy. Then they fire the first wave of “expensive” bodies (like you) when more developers e.g. from the cheaper countries cram the same tutorials and offer their “expertise” for less.

The situation yet again raises the question who you want to be professionally and where you want to be employed at: a typical dysfunctional IT department, a vaporware startup, or a team with the real technical problems to solve and real reward for solving said problem. I hate to be the Captain Obvious, but your real (financial) growth and real job security comes from solving somebody’s business problem instead of a rare “hot” specialization.

Most enterprise automation problems require diving deep into a particular technology — almost always an existing and proven one like Java. Sure, the “bodies” discredited Java, so all cool new kids chose JavaScript, which is getting the crucial patterns like IoC and MVC only now, while missing thousands more. You don’t want to be a “body”, do you? You want to be paid better, than a “body”? Then forget how the “bodies” use Java, writing their DAOs, DTOs, and other verbose glue code. Think how you can use it to its full potential to solve the problem at hand. The Java vs. JS vs. Clojure vs. Go debate is superficial. A true expert is technology-agnostic. He/she has the uncanny ability to choose the right tool for the job. That’s what truly differentiate you from a “body”.

The problems experts are asked to solve are always nontrivial, requiring one to research how to use the familiar technology in a completely new way. I never get bored — doing it with Java every day. You can do it with something else. But in any case your mind needs to be occupied with that research and problem-solving instead of cramming trendy tutorials. Tutorials have never taught anyone to solve tough technical problems. And no employer would pay you higher that a “body” to solve a trivial one.

Having a real problem to solve and being paid for that is a rare opportunity. I haven’t had much luck with it during my consulting career. Of course no one would tell you they’re hiring bodies to look busy and fix doomed project bugs. After the first week on the job you’ll know, who the customers are and whether you are solving any problems or just banging on the keyboard to look busy. If you have the time to play with something “hot”, unrelated to the problem at hand, you are already hired as a “body” to look busy and log hours, so your recruiter can collect commissions.

Such free time is very common. Use it to work on your own projects, solving real world problems — discovered by you rather than your dysfunctional employer. Many of such ideas come from the realization that you can do your entire team’s job — all by yourself and much better. Many self-funded (non-vaporware) startups have been founded that way. Do something aimed at real customers. Something you or your friend(s) can sell and profit from. Start thinking about it and you’ll have plenty of ideas.

In any case problem-solving comes first. Any new technology should be learned on as needed basis to solve a specific problem. Why to torture yourself? You cannot remember everything. Train yourself to learn and forget, freeing your brain’s RAM space when needed. And quickly refreshing the unloaded technologies when they become relevant again. Start doing that and you’ll discover you can learn absolutely anything in a week.

Lastly, learning unrelated to work stuff is not painting you in a good light for prospective employers — the smart ones you want to work for. I understand scientific curiosity and desire to grow, but when I see an ML or blockchain course/certificate, never tied to a specific project or job, I can’t help thinking, that you are unhappy and most definitely underpaid at your current job. I might cut a fellow dev some slack, since I know firsthand how unfair his/her situation can be, but generally speaking, no one likes unhappy employees looking to put things on their resume and leave at the first opportunity. Especially if there is a clear pattern of learning and leaving throughout your job history.

It tells me one thing: you don’t get deep into any technology to put it to good use and, yes, solve the problem someone is paying you to solve. The chances are you wouldn’t even spend enough time with the latest and trendiest of the abbreviations you were just hired for. Why? To keep job-hopping? Haven’t you realized that anyone that “smart” is approaching or already reached the compensation cap: the maximum amount any IT employer would pay for any, even the rarest of abbreviations?

Whether you are adequately rewarded for every problem you solved, is a different issue. You can be laid off during a recession to be hired somewhere else as a “genius found unbelievably cheap”. That leaves you no choice, but to learn some new stuff and leave as quickly, as you can, restoring your compensation. But with all due respect, no cheap and abusive employer can fool a smart engineer. We accept those sh-tty jobs willingly and consciously, don’t we?

That yet again stresses the importance of presenting yourself right to be found by the right employers — willing to pay you well for solving their tough automation problems. Demonstrate, that you mastered your main technology and used it to solve real-world problems. Nothing else matters to me, as an employer.

Leave Your Money and Career Worries Behind. Enjoy What You Do Best: Programming.

If you want to stay in the rat race competing with bodies in tutorial-cramming “cybersport”, don’t complain about brain-dead recruiters harassing you over the trendiest technology required by some clueless IT manager. Think about a team that need that expertise. A good one already has smart people capable of learning that stuff. Or those smart people contact other smart people with that expertise privately. The managers who go to recruiters are technically illiterate. They hire mediocre bodies, ruin all of their projects, but most importantly pay very little. Doubt you’d enjoy working alongside “bodies” — reminded every day “how much we pay you”: the whopping 10% over the “body” salary.

This is not a hypothetical scenario. I had to listen to those “how much we pay you” for two decades — hoping it’d be better at my next job. Only to see the same crap again and again. Needless to say, you’d be disposed of at the first opportunity and definitely at the first sign of a recession, forcing you into the aforementioned “genius found unbelievably cheap” position.

Don’t you want to forget about the cyclical economy with its recessions and layoffs? Aren’t you tired of the race to learn something quicker than your third-world competitors? Don’t you want to relax and enjoy programming? Write clean minimalistic OO code. Be a perfectionist. I am not sure about others, but I can make it happen for you. All I require in return is solving our customers’ problems.

Whether you view us or similar employer as your final career destination, leave your money and job security worries behind. Take your time. Go deep. Enjoy using both familiar and newly learned technologies to their full potential — working on your current project instead of thinking of the next.

Developers only get bored by doing the same stuff every day e.g. being pigeonholed into stupid bug fixing or narrow niche, let’s be honest, you carved for yourself, chasing a specific trendy acronym. If you are a true technology-agnostic generalist, you’d alternate different activities: from business analysis and solution architecture to the UX. And if you work on a real product solving real problems there will always be challenging tasks requiring you to learn new things and pick the right tool for the job.

I understand, the majority of employers out there needs bug fixers rather than creative generalists. I wasn’t as lucky during my IT career, eventually giving up and founding my own company to do things right. Our startup or another, if you found the right employer, wouldn’t you want to relax and enjoy working there? No strings attached. No gimmicks. No pay cuts to take in the name of “work-life” balance or other superficial “perks”. And if you still feel underpaid, wouldn’t it be much simpler to ask for a raise (that somehow didn’t happen automatically) instead of cramming something and leaving?

It’s capitalism, alright. But not everyone wants to exploit you. Believe you or not, it is profitable for us, employers, to keep you happy and growing. Financially, not just professionally. For those of us, who have problems to solve, anyway.

It is a shame, the current recruiting system makes it nearly impossible for good employers to connect with the top talent. Be proud of your achievements and please, please, please… show them to others — the few employers who truly appreciate your brain and need your inventions instead of tasking you with fixing bugs within a narrow technology stack, no matter how “hot” it is. Let those employers find you.

I was in you shoes for two decades. I desperately wanted to be found. I am proud of many problems I solved — with no reward whatsoever. Take for example the LinkedIn pagination issue I mentioned above. I solved it long time ago. I can paginate and browse data sets of any size with flat (not even linear aka O(n)) performance. How I got rewarded for it? Did I get a raise or even bonus? Was I discovered and hired somewhere else? Rhetorical questions, aren’t they? Call me bitter. I’ve lost my faith in the system. It is up to us, geeks, to found the right startups and become the employers to reward other skilled geeks for their inventions.