Outsourcing state of mind in software development
Tags: career
Published: 2020-04-15 13:24:55

Last ~8 months I started working in a non software development company. What it means is that I used to work for companies which only had interest in developing software for others (outsourcing) and therefor, my job was to read tickets/issues/whatever on JIRA or such software and put some code into app/service/web by copying previous code of the "wise men before me" and changing it just enough to fit the need of the current task. Gradually you start learning patterns as a demand for job position and start "copying" stuff from your head instead from previous code writers or at that point stackoverflow. Now you might think well that's the way to do it but by changing jobs and getting more and more interaction with other people on the project (besides developers or IT guys) and in the end, with clients requesting the project, I started to get in conflict with my bosses, system architect, and such people by just asking questions like "is this task 100% correct", "should this be in the system at all", "I didn't understand client the same way you did", "why must we use X technology and do it in months when we can switch to Z tech for this part of the task and do it in 3 days while having it super easy to change later without bringing down the system".

I learned a lot about copy pasting without thinking like following patterns, DDD as explained by others, using libraries and frameworks for every piece of tiny problem, and how I'm not good enough to ever develop such a solution or my code always needs to be reviewed by boss (usually developers that founded the company in my case) or some external boss like system architect from company outsourcing job in absence of workforce on theirside.

What I didn't learn is how to use my own head and actually talk to people once I spot the problem... Thing was they didn't learn how to do projects just how to brag about being "full stack tech dev ops sec architecutre TDD DDD certified..." you get the point right? Now last switch was from software developer used to getting orders to being called backend developer while doing system architecture, cost planning, DevOps, project management for backend, partial involvement into new feature planing (yes, not only client requests features but I had to think of some too), team management and such. And WOW. What a responsibility change. I found out guys with 15 years of experience (whereas I have a bit less than 7 as time of writting) have less idea about development than I do simply because they never got out of "outsourcing state of mind". They got the "guy" working here before, he will make tasks in JIRA, tell them what to do and they will just put in some code. Boy what kind of well written useless code have I seen, from completely missing the point of task to skipping crucial steps because "I'll get back to it I didn't have info" - where later one is mindset in terms of "this is something we can consider template, we just swap later" and this one was wrong on so many levels.

I'm not encouraging devs to fight their bosses, go against their will, question everything and refuse to do obviously stupid stuff. I'm just saying thinking can lead to a great product, if your supervisors disagree, you can shut up do your work and change your employer ASAP orrrrr **start up your own company**. No I didn't have b** to risk my non existing finances and bankrupt my wife and me but you might and you should. Just because I chickened out many times doesn't mean you should. My wife had ideas, I wanted to start a lot of stuff but never was I willing to leave paid job and live under tent to try to make my own goals. I might try at some point but this post is not about that.

Have you ever had such opinion on industry that it's discouraging usefull product development in favour of well written software that misses the point of feature requests or maybe even well written useless software?

I might be under heavy stress now, work too much, learning 6 things at one just to make ends meet in product, my employers might have no respect towards effort required to build such a huge system, but that doesn't mean I will quit nor does it mean its worse than before. In fact, this is the first company where I can see how useful can thing I'm building be. I don't think I'm skilled enough or smart enough for this project to make it's architecture and make it work well but no one accepted the job before me. I wasn't told what I was getting into, and in the end when we tried to find skilled architect and other developers, one refused and that's about it no application no nothing. So someone has to build this, someone has to try and make it work, so since I'm here it might as well be me.

However do you think you would accept average salary for this kind of job? Some people might refuse this position under statement "not enough paid" or "because they like their job". But some of them will brag about their skill proficiency, how much books they read, and how what kind of products they read, but both you and I know that some of those would not stand a chance without being told WHAT to do but just given feature requests and left to handle the whole project. Why am I saying this negative stuff? Well it turns out that a lot of devs I had contact with are just fine with being ordered around and have no intention of ever knowing what to do. Why is that so bad? Well it's great to be that developer but someone has to be in charge of the project, someone has to make tasks, think ahead and so on. I wish I wasn't that guy because I do not think that I'am ready (skill-full) to do so but since I'm already in it I gotta do my best. Important thing for me was to inform people "hey guys this is too much for me" and they were like "yeah we know, we're gonna try to find someone but keep on the work".

Any similar experience? Any such negative opinions about certain people that you crossed career-path with?

Hope I didn't come out as someone who just nags about stuff.