This will be a bit of a rant-sorry.
I work as a software developer. This means lots of things – the most obvious is that I create and develop softwares. I can’t think of myself as an “IT Analyst”, because I don’t just “analyze” software, and I don’t think of myself as a “Programmer” because I do more things than only program. Also, I don’t like my last two job titles “Software Engineer”, mostly because I associate Computer Engineering with calculus and digital signal processing and neural networks and such. Also, I think that here, at Brazil, people like the “Engineer” status, and I’m don’t care for titles and such – I’m interested with knowledge and abilities more than anything.
That being said… when I search internet to find a job, most of the time we find: “We’re searching for computer Jedis/Ninjas”; “If you’re a master of the computer arts, please apply for…”; or the innocent looking “we’re not looking for someone to work, we’re looking to someone to have fun with us while we create a great product”.
Okay, let’s start by the beginning: I am a professional Software Developer looking for a job. This needs to be clear, and it’s nothing better or worse than that. I’m not a Jedi – sorry to be the one with the bad news, but Jedi doesn’t exist (sorry UK). Ninjas do exist, but their primary concern is not softwares… and yes, I studied a little of Ninjutsu (Bujinkan school) as a martial arts, but I’m no ninja (I did not graduate a single time).
We spent years trying to get rid of the title computer boy. Why do we, now, allow ourselves to be called of something we are not? Just because it’s cool to be a Jedi or a Ninja?
So, now the innocent one – again, I must remember that I am looking for a Job. Does this means that I don’t have fun while working? No, I do have fun. Does that mean I don’t like my job? Again, no – I do love programming. So, what does this matter?
It’s kinda simple – when I’m working, I need to make things that I don’t like – prioritize things that I don’t agree, work on really simple or really complex things that will give my job the maximum ROI, and even use technologies that I don’t agree are the best possible for my job, just because I was told to use then. Most of all, I have deadlines, I can’t always write the better code I think of, because of deadlines, I need to work a certain number of hours every month, and lots of other restrictions that I simply don’t have if I’m “just having fun”. Okay, most companies that I work relax some of these restrictions, but they do exist. In a personal project, for example, I can decide that some awfully complicated feature that I don’t want to write right now can wait (probably, this is the exact reason of why most of my personal projects simply don’t progress at all); also, I can stop working in my project anytime I want, change technologies all the time, etc…
Also, some companies ask me to “be an owner”, with beautiful words like “this product is also yours”, and such thing. Sorry, but I’m not an owner – I don’t own the company, I can’t decide it’s path, and it’s product will be forever property of my company – I can’t even share parts of code with other people. And it’s ok for me – you (the company) need someone to make your product fast, beautiful, responsible, maintainable; I am here to make this a reality. I’ll work the best I could to make this a possibility – and yes, this means studying new subjects/technologies/ideas, evolving my knowledge, teach people, even do things that I don’t want or don’t know yet how to do; even do things that I don’t want to do, like configuring servers, preparing dev-ops scripts, inventing new ways of doing scripts, awful meetings to convince people that we need to fix bugs in code before our customer notices then…
But work the best I could means that I will not work when I’m sick, when my wife is sick, when it’s a holiday, when I’m traveling, when I’m sleeping… probably I would do these things if I was the company’s owner, or if it was my product. Also, I’ll not work “better” if I think the product is mine – probably the opposite (as I have no emotional attachment with the product, nor the product’s success will bring me more or less money, I can probably pinpoint that we have a problem with the “fast-paced deliveries” right now, creating a lot of entropy and bugs that will blow up sometime later, something I probably wouldn’t think if I was trying to deliver fast to bring more clients to my company or to please my backers/investors/stakeholders). So, thinking that what I am doing is “just a job” will not degrade my performance, nor will make me work lazily or worse – and I know this is not true for most developers in Brazil. I’m sorry for that, but I think that people that don’t values his work should find another job, or area.
Probably this is the root of the problem: because most people don’t value their own jobs, the industry needs to find a way, with new words and new descriptions, to hire one who compromises with their work, not just “a person who works here”. So, we re-invent the meaning of job because the old meaning has became corrupt.
But, as a person who loves my job, even with all its bad/non-cool/boring parts, I find it extremely rude to demote all my years of study, my work hours, the time invested in learning something that I needed just to solve that simple feature that was not used, just because a group of people don’t like the word “Job”. So please, stop disrespecting my job – I don’t want to dedicate hours of my day to someone that needs “a Ninja” or “a Jedi” to “have fun”. I will dedicate, happily, my hours to someoneone that needs a “Software Developer” to “work on our products”. And I invite all other developers to do the same.