Developer

I have written about Software before and i have mentioned that it will be continued. I think i can say the transition in the field of computer and sofware engineering parallel to technological advancements and globalization is not headed to a healthy outcome. I have pondered on the concept of software in order to express this problem. Now it is time to talk about the person who realizes the software. In other words, the concept called the developer. I think i can wrap my head around the situation, at least in my country, with the help of my almost 10 years of experience in this field. In this post, we will talk about the subjects like the developer titles, roles and the terms of junior and senior.

Regardless of what your profession is, if there is knowledge and skills involved, there will also be a sequence of junior, senior and master levels. All these steps will have their own requirements, responsibilities and confidence areas. Now let's think about this as 3 nested circles like the image below. Ideally, you would match the product and one of the circles accordingly to create an outcome. This would work well since the tasks and competence levels of the product and the circles are all well defined. The problem arises when you don't obey the boundaries or ignore them all together. This is rooted by not valuing knowledge and experience. In this case, neither the product will mature enough nor the circles will be able to act effectively.

Let me save the philosophy for the end and get to the part where i mention some examples that i have either seen, experienced or heard in the software industry. Unfortunately a developer of Junior level is usually the poor developer who has jumped from technology to technology either with temptation or unawareness of obligation who know a little about a lot and makes many mistakes nowadays. Naturally, these people think that getting a job mandates this and they are trying to meet the requirements that are being pushed by companies to industry, all the while working conditions are getting worse. They are not expected to be flawless but nevertheless they are burdened with the other circles' responsibilities. This makes them think the term learning curve is about the time passed by while compensating for mistakes. If you ask me, i don't think learning curve is the daily mistake ratio.

The requirement of this circle is first gaining knowledge and then learning lessons. This is exactly the same as what we call, growing up. You need to get ready to dive deeper into your subject in order to get as large and the senior circle. It is not about making a lot of mistakes. Learning the job does not mean getting your hands on everything you can reach and hoping to sort it out along the way. We wouldn't have the people trying to jump to the higher circles without the necessary depth and qualification, if the concept of software were not this much degraded these days. Furthermore, the software technologies in these days are growing faster. Back in the day, it could have been enough to have a deep understanding of 1 programming language to jump to the higher level of circle. Now that we have lots of tools and new concepts involved, it became more important to acquire knowledge about the subjects of your interest. But the "show must go on" logic today is not helping the development of anything or anyone. It is mandatory for the junior step to be involved with a lot of learning for the seniors to be qualified seniors.

The matter gets a bit more complicated when you reach the next level called Senior. Because you can have more flexibility while putting the expertise into use, since the knowledge and experience grows larger in some ways. The first example that comes up in my mind, the senior developer can lift the weight of a cumbersome software. You can call this deadlifting i guess :) Another example, you can be senior developer who takes a number of responsibilities in a small project. Some companies do this in order to not to give 3-4 juniors salaries. You can even be a team leader as a senior developer if you are the most mature person in the team. There are also seniors who has followed the logic of the junior level and gained shallow experience of a lot of subjects over time.

But the most common way that seniors are used is that them working as brute force coder for usually old and faulty systems. In other words, it means "the junior can code and deal with the unproductive environment but the senior can do this faster and with less errors" kind of logic. We become seniors of the jobs or systems we are involved in rather than adding value with our knowledge and skills. Does it make you a senior in software engineering to be able to adapt the business and have more time spent on coding?

At this point, the developers can also make their own definitions of seniority but the average of the sector is mostly a reflection of the companies' approach to this subject. In other words, the professional expertise and principles are evolving in some ways in the means of creating a product. It feels like it should have been the other way around. Let me mention the companies who hire people under the developer role and interview examples as much as my experience goes.

The company

If you work in IT industry (or even in an engineering field) the following statements may be familiar to you. We use our expertise for mostly companies or corporate entities as software developers and this brings us to interviews and being elected or chosen. The definitions above are already not quite understood yet. And we face with strange approaches to our expertise in these interviews where we try to prove ourselves. Some of them are based on ignorance, some of them are strategy.

For example, you would think your knowledge and skills about a subject would create added value and would have beneficial returns for you, regardless of being a junior or senior. But in this case, some will focus on what you don't know and try to undermine your confidence. Some people will directly try to convince you that your knowledge is worthless. Some people would make their preparations beforehand and if you say for example "i have knowledge about Java" they would just ask the most extreme cases to you about java. This is a strategy to persuade you into the kind of profile they want. Technically, a junior may not know about some of the technologies out there but this situation will lead them to think that they are inadequate. Long story short, they expect the developers to obey the circles that they have invented.

Senior developers face with different situations because they usually know a little bit about how the systems should work. People would try to convince you that your thoughts about the existing or developing system are invalid or absurd, when you mention it. For example you may hear something like "what is the point of developing a software if we always transform it", when you state that it could be more logical to re-write the system instead of maintaining the bad one, even if there is enough knowledge base to do this. There could also be people who says "you need to develop yourself in these areas too" instead of saying "we will ask you to do everything without a defined title". These jobs are mostly titled like "senior developer". This is the developer can develop everything kind of logic :) When you mention that you have worked on several programming languages in your lifetime, they may try to convince you with a weird argument like "i have done that too but now i am coding a very different platform".

Nowadays, i also come across with job postings titled "java developer" or ".net developer" but requires a fronted technology (like react or angular) in the details. They actually mean the utopia called the fullstack developer but they don't realise it or don't want to call is a fullstack. By the way, i can write extensively about how the concept of fullstack developer damages the software industry in another post. Also, you can watch this video from Bob Martin about where the programming is headed. The last 20 minutes are particularly interesting and enlightening.

Long story short, software development is not an area that you can claim to be competent in all directions. It is not just coding. I suggest the people with this mindset to as for a braing surgery from a psychiatrist instead of a brain surgeon. They are both working around the brain you know. These faulty understandings results in faulty systems. These faulty systems are requiring seniors in the shape of "junior on steroid". The voices of the people who thinks these concepts are being confused and devoid of meaning like me in this self damaging industry must raise stronger :)

Understand the levels before levelling up

They say software development is constant learning but what kind of learning and in what way? Or learning what? What does it means to specialize in a field of study? By which ways you go through and gain experience and which ways you just waste time? There are development and testing processes involved in software development but i am not even talking about that. We have a vast territory to learn and experience. I don't think we can move forward in this industry with the titles without proper definitions or boundaries. I will write a follow up post about the Master level on top. I am busy with the boss fights these days because i am trying to jump into that circle :) See you at the next post :)


Leave a comment