Back to blog

Learn about who a programmer is and what hard & soft skills a programmer needs to possess.

There is a number of classifications of programmers, both simple and complicated. They can be either focused on some particular aspect of activity (e.g. technical skills) or complex ones. We will familiarize ourselves with the classification of programmers with a view to their business value:

  • junior – knows that there is something to be done;
  • middle – knows how something can be done;
  • senior – knows how something must be done.

Here’s an example: a programmer has been told that he must do something.

  • junior – starts doing it, asks questions on how to do it as he goes. If you explain it to him distinctly (or give a clear instruction at best), he will do it;
  • middle – explores the task and suggests possible solutions, may recommend several optimal ones. Having received your approval, he will do it;
  • senior – asks questions on why to do it and what you want to achieve. You tell him what your goals are. He explores the matter, maybe will make some corrections by suggesting that this way is wrong and the other one is better; of course, he’ll provide arguments. As soon as you reach a consensus as for the goals, he will find what and how to do best to achieve these goals (it may turn out that they are absolutely different from what you suggested in the beginning) and he will do it in the best manner.

Let us look at these types of programmers in more detail.

Junior Developer

It is a young developer with little experience or without any experience at all, who has just started working in the chosen technical field. As a rule, learns from video courses and video lessons mostly all the time. As he has very little development experience, he spends a lot of time seeking advice from more experienced developers and understanding the way the team works on a project. Learning for a junior developer is his all. As he feels a constant need in doing tasks on a project, the ideal studying scheme for a junior developer is video learning of programming within the chosen technology. On the strength of watched video lessons on programming, online tutorials and advice of more experienced colleagues, junior developer grows fast enough to hold a position of a full-fledged developer in 1,5-2 years.

Junior’s description:
  • Constantly requires not only self-education but supervision as well.
  • Is always optimistic and always underestimates the difficulty of the given tasks.
  • Complains only about lack of time; is afraid to complain about anything else.
  • Doesn’t ask the right questions as he is afraid to show off ignorance.
  • Often makes mistakes so he overstates deadlines in order to have time for a redo before the due date.
  • Feels permanent animosity towards tester for he finds the bugs.
  • Doesn’t take managers seriously at all, as he doesn’t grasp all the gravity of their functions yet.
  • Finds even the most habitual work to be difficult, though he is capable of writing thousands of lines of the “alike” code.

Developer or Middle Dev

It is a person who is in charge of quality and timeliness of software and data systems development, that base on the application of modern software technologies. A programmer carries out a mission of writing and basic testing of entrusted him system components and works on external specifications. He supports Junior developers, works both on project architecture and modular implementation; performs prototypes’ operability implementation. He never stops self-educating, understands algorithms, Software Engineering Processes, has knowledge in such fields: markup languages, understanding Web servers’ and application servers’ technology, knowledge in client-server technology; browsers’, DBMSs’, operating systems’ and office software suites’ work. Also has knowledge of development frameworks, profile programming languages, and technical English.

According to programmers, it is common for a developer to:
Like to lecture Junior developers; often get irritated at Junior’s direct questions; not to require his work to be supervised – he is responsible for specific functions and modules and he himself controls his work. He realizes that the work he does influences the colleagues’ working process. A Developer is a responsible person. He seldom needs to be taught as he is constantly self-educating: he attends seminars, participates in webinars, reads specialized literature and resources. He can do assigned tasks on his own and understands the basics of building project architectures. He thinks not in terms of language, which he finally rejected, but in terms of the subject area. He can write structurally and consistently; thinks about future product support.

Developer’s description:
  • A pessimist who underestimates himself and lives in fear of blunder and failure.
  • He always finds a novelty to discuss, time for a smoke break to discuss, and time for a cup of coffee to learn what others discuss.
  • Does not feel shy and can even exploit colleagues by swindling out all the knowledge and skills possible; forgets to mention colleagues when using these.
  • Having stepped on a rake, he keeps silent and gritting his teeth he himself tries to amend the situation so that no one even knows about it.
  • He shares Junior’s opinion of testers.
  • Understands what the role of managers is, but, nonetheless, has little liking for them as for those who don’t understand elementary things.
  • He knows his own price and demonstrates he knows it at every opportunity.
  • Tries to work only on what he likes.
  • Junior developers are often amazed at how he contrives to do 2-3 projects at a time.

Senior Developer

He is the lead programmer, a person who is in charge of quality and timeliness of software and data systems development, that base on the application of modern software technologies. Has deep and structured knowledge, works within the project team without any need to keep in touch with client’s management representatives. Does the following work:

  • detailed design of large-scale projects and creation of project specifications;
  • fully controls and often himself carries out small projects and subprojects (modules) designing;
  • programming and basic testing of components.

As a rule, has higher education or, which is rare, incomplete higher education and has at least 3 years experience as a developer. He can comment on the programmes without consulting a dictionary, elaborate documentation and is fluent in English. Knows the methods and analysis and development tools, Software Engineering Processes and markup languages. Shows deep understanding of client-server technology; knows how browsers, Web servers, application servers, DBMSs, operating systems and office software suites work. He can supervise other developers and assign tasks to them.

According to colleague programmers, it is common for a Senior Developer to:
Be responsible for the project, be able to arrange the framework, be occupied with solving difficult tasks. He is a mentor for developers and juniors. He has a set of specific solutions in the field of some or other arising tasks, due to which he shows a stupendous productivity compared to middle developers. He makes by far fewer mistakes; mistakes made by Senior are as a rule easily corrected by him. And these mistakes are usually connected with a hurry or a constant lack of sleep. It is curious enough, but it quite often happens that he knows particular languages worse than junior. But he makes up for it with his ability to evade bottlenecks, having 3-5 solutions to any task in his head and the ability to focus perfectly on what is primary, ignoring non-existent details. Actually, that is the reason why he holds this position: he is quite often able to get the point even without having read through the requirements specification.

Senior’s description:
  • Realistic. He always takes into consideration not only his own risks but overall risks as well, without overstating deadlines too much at the same time. Even he doesn’t know how he manages to do so, he comments it briefly – experience.
  • He finds time to do all: meetings, work tasks and helping colleagues.
  • He can freely and at ease admit that he doesn’t know something. At the same time and with the same ease he helps to steer through what he knows.
  • Senior’s rakes are as powerful and critical as the nuclear weapon. If they hit, they do it globally. Surely, there are ordinary rakes, but seniors hide them successfully, so nobody knows about these.
  • They love their job. They rejoice at their projects’ success like children do, even if these projects don’t affect their well-being much.
  • A tester is an adviser.
  • A manager is a shield from a client.
  • Utterly doesn’t like strangers and novices to be involved in his work, even if the latest know and can much and well.
  • Grumbles, but does his job and always succeeds in what depends on him.

And how to assess your level?

The first assessment factor is execution time

It takes a week for Junior developer to do an identical task. Senior will manage to do it in a couple of hours. Estimating deadlines is also significant. A developer of “Junior” level looks at the task, assigned to him, too optimistically and thus underestimates its difficulty. Due to lack of experience, he doesn’t meet a deadline. A developer of “Middle” level is inclined to look at the task pessimistically as the experience of being a Junior developer tells upon him. He overstates expected project implementation period too much. A “Senior” level developer is realistic. He takes the risks into consideration wisely, without overstating deadlines too much.

The second factor is the code quality

For several years the applicants were assessed at writing a simple “tic-tac-toe” browser game. Depending on a vacancy they were recommended to use a specific language and technology. If they were planning a significant staff increase, applicants were free to choose software tools themselves.

Now we have dozens of checking tasks’ options. EDISON testers have chosen 3 code excerpts
(web application query processing) written in PHP by developers of different levels, and added commentaries.

Find an error/inconsistency

<?php require_once $_GET[‘mod’]; ?>

$user = userRequestWithPassword($_COOKIE[‘login’], $_COOKIE[‘password’]);

public function testPushAndPop(){
$stack = array()
$this->assertEquals(0, count($stack));
array_push($stack, ‘foo’);
$this->assertEquals(‘foo’, $stack[count($stack)-1])
$this->assertEquals(1, count($stack);
$this->assertEquals(‘foo’, array_pop($stack));
$this->assertEquals(0; count($stack));
}

$query = “update Deals
set name=’$name’, date=’$date’, nameOfTheInsured=’$insured’, nameOfTheObligor=’$obligor’,
countryOfTheObligor=’$countryObligor’, amount=’$amount’,
currencyOfTheDeal=’$currency’, percentToBeInsured=’$percent’, tenorOfTheExposure=’$tenor’,
typeOfTheDeal=’$type’, targetResponseDate=’$responseDate’, nameOfTheContactPerson=’$person’,
documents=’$filename’
where id='”.$_GET[‘dealId’].”‘”;

<?php if (array_search(‘needle’, $array) != FALSE) {…} ?>

mysqli_query($connect, $query);
mysqli_close($connect);
header(“location: http://example.com/view.php?dealId=”.$_GET[‘dealId’]);

$connect = mysqli_connect(BAZA_SERVER, BAZA_USER, BAZA_PASSWORD, BAZA_MYSQL);

<?=$last_active_tab == “idTabTestimonials”?”sheetActive”:”sheetUnactive”?>

if ($starter = $db->GetFByQuery(“SELECT u.login FROM games g
LEFT JOIN users u ON g.starter=u.id
WHERE g.`invited`=$uid”))
{ echo “<a href = ‘#’ onclick = ‘return invite(0)’>$starter ” . $document->Translate(17) .
“</a><br><a href = ‘#’ onclick = ‘return deny()’>” . $document->Translate(19) . “</a>”;
}

foreach ($rows as $row)
{
echo “<a href = ‘#’ onclick = ‘return invite(\”$row[login]\”)’>$row[login]</a><br>”;
}



Popular Posts

Like This Article? Subscribe to Our Monthly Newsletter!

Comments are closed.