The way of the samurai in programming

A Whirl of Experience in Anadea or the Way of the Samurai in Programming

Why continuous education matters

Every client wants to know how good his programmer is. Seriously, would you entrust the realization of your dream to an amateur? I wouldn't.

Whichever industry you deal with – construction, transportation, building space shuttles or developing software – you don't want the house built with your money to fall apart, your cargo to get lost on the way, the shuttle to crush before even reaching the orbit, and your application to throw errors when launched. That's why a business task must be assigned to experts. And as it is known, a master is someone who never stops learning.

See for yourself: is there a certain level you can't surpass? Let's take, for example, a widely recognized symbol of mastery – the black belt in karate. Does earning it mean the end of the way? The holder of the black belt will become only better if he/she continues to master other martial arts techniques. Or, for example, the Oscar Award. The best minds of the Motion Picture Academy hardly ever rest after getting only one statue – the best of the best possess about a dozen of them.

The same rules work in the IT world, moreover, they are even stricter. In martial arts and cinematography there already are deeply-rooted rules, schools and requirements to a master. The gained black belt or Oscar statue will be a standard of mastery for the next centuries. However, certificates of taking courses may lose their value in just a few years.

All kinds of frameworks and programming languages appear and disappear so thick and fast that it is sometimes difficult to keep up with them. We have already written about this problem in the article about modern frameworks for Javascript. You can read more about it here.

Modern programmers have to constantly improve, read materials and take courses even decades after graduating from higher educational establishments. In our company we aim at creating the most supportive environment for developing and acquiring new skills because we understand – a good, quality and clean code will be written only with good, quality and clean (yes, we do have soap!) hands.

Interview with Sergey Verovets: developer, learner and teacher in one

I had a chance to talk about courses, self-development, guiding young talents and how it all happens with Sergey Verovets – an Android developer and one of our teachers. And here is the result of our discussion.

Hello, Sergey.

Are you ready to talk about the courses?
Fire away.

Do courses help to solve everyday work tasks?
Yes, they do. Moreover, it is always exciting to learn something new while you have free time. For example, some courses address Java and Scala in a quite interesting way. While dealing with a web server on Java, I discovered some new aspects for myself.

What are you studying now?
At the moment I'm taking two courses: WebUI development (which is actually not my field but won't hurt to learn it) and Python (which hasn't been used in our company yet but it's something worth having up your sleeve).

In other words, courses are built in a way that allows you to easily study non-major fields.
Absolutely. Everything depends on your desire and curiosity. And time, of course – it sometimes happens that you take up three courses and think where to fit the fourth one (laughs).

And what about majors courses?
Well, for example, recently I have passed Adam Porter's course (Maryland University), but I can't say it particularly excited me. It was excellent in terms of theory but there was too little practice. You are literally given to comment four lines out of four hundred in a ready project. It doesn't lead you to any global thinking. It's not like that everywhere, of course. For example, in Python courses there's a whole array of practical tasks and not at the expense of theory. On Java course, there was only one practical task but it was big and at the very end. We had to create a simple server which would reply to user's requests in a particular way. While the course on algorithms I took was held by some deranged dude. It looked like he had to pay for every minute in front of the camera – he was rushing, pressing on, jabbering, floundering. Of course, I managed to learn what I wanted, but only after I got to the practical part. I had to search for some theory myself, read Wikipedia and so on because it was impossible to follow anything he was saying. In references I recommended him to work on his presentation of the material because the guy is as far from teaching as I am from ballet, for example.

And have you used in projects the knowledge you got on courses?
Of course, I have. Take binary search, for example, which is used practically everywhere. Or sorting method which is suitable here and now. Actually, it's worth saying that this or that knowledge may become necessary at any moment. Once in my practice there was a task to write a channel map. It's something like visualization of Facebook network – contacts and how all of them interrelate. I had to build a kind of radial diagram from the root person or company. I designed and built the algorithm myself – and it is exactly where both vector algebra and analytic geometry came in absolutely handy. Here's a very recent example. Our Java devs are currently working on a project where they faced the necessity to implement a schedule. The teachers' schedules are placed on a timeline and they have to see if these segments overlap or not. A similar task with segments on a timeline was in the course on algorithms - and here I have applied it in real life.

It really is! You never know what awaits you in the next project. So, the more you know, the better.

As far as I know, you are holding a course on databases yourself.
Yes, I'm reading a special course on databases through the example of MySQL. IT school "Hillel" engages our specialists in teaching their students. I'm currently having my third batch.

Who exactly comes? Front-end, back-end?
Actually, everybody who wants – it's an optional course. Come if you want, don't come if you don't. It's all voluntary. At the moment I have a group of 35 people with different majors: front end, QA and Java. Before that, there was a group of testers and iOS developers.

Are you the only teacher?
When I first came, Kirill Machuhin and Vadim Eremichev had groups. As far as I know, Alexey Derkach used to do that before them. Evgeniy Oleynikov held a course on Linux administration. At this moment there is only me left in "Hillel" from our team.

Which batch did you like most?
The first one, I suppose. You see, I had to prepare the material on the go (laughs). A bunch of all kinds of different literature, slides preparation – everything was in a hurry. Now it is, of course, much easier to teach – the material is ready, including all practical and home tasks. The first batch had shining eyes that's why teaching them was a real pleasure.

And what about those who are studying now?
We also have good contact – they nod, understand, it's clear that they are interested. I feel some feedback. Unfortunately, it didn't really work out with the second batch. There were about 40 people on the first class and gradually, they dropped out. I saw only about 15 people on the last class. I suppose, I failed to schedule the classes well. Now I returned to the initial variant that's why everything is going fine.

In other words, everything's fine with their motivation, isn't it?
Of course, it is. On my first lecture I told the students that their education is for their own sakes, because teaching young programmers is now put on the assembly line. At the moment I'm having my third batch - 40 people, before that I had two batches - 40 people in each as well, and after them 40 more people will come. And this is only in "Hillel"! But there is a dime a dozen of various IT schools nowadays – just go out to the street and look around! Almost half of all adverts are invitations to different kinds of courses for testers, designers, front-end coders and so on!

And they offer ridiculous time limits.
Yes, here it depends only on the extent of imagination – some promise to teach you in three months, others even in one! Although I don't understand what you can teach in this time period. When I was taking courses on Android myself, I had to spend half a year on learning only Java. With accelerated cources, you get a monkey with a grenade, which knows how to pull out the safety pin but has no idea what to do next in order to avoid having its arm torn off.

Expectation for fast results probably has a negative impact on the audience as well, doesn't it?
To some extent. Some people think that if they paid for the courses, they can just sit on a chair and all the knowledge will be transfered into them like in "The Matrix" movie, and after that they will open their eyes and say: "I know Kung-Fu". Others, instead of learning the material, already anticipate their future salary, imagine an interview to their dream company and so on. That's why I always tell my students at the very beginning that even hundreds of courses and the best teachers are certainly good for them but they won't get rolling without constant practice.

Have your students achieved some good results yet? Is the knowledge you gave put into practice? Do you receive any gratitude from them?
As for putting into practice, databases is a common question asked during interviews and at least here my classes come useful. I keep in touch with some of the guys from the first batch – I have many times heard "thank you's" from them both when talking and messaging. I'm very pleased that the matter which, I may say, I've put my soul into wasn't in vain. I tell my students from the very beginning that the biggest reward for me will be if they apply in practice the knowledge gained during my classes. I have tried to include maximum information into those 10 hours of the course. As a result, there is even a little bit more material than in an academic course because I included the things, for example, that I wasn't told about at university. I often hear from my students that they later use the slides (that remain with them after the course) as a study guide. I really hope that they will frequently resort to what my course gave them in their future work on projects.

Thank you for a pleasant and insightful talk, Sergey!
Good bye for now.

How it works in Anadea

In order for the tree to bloom and bear fruit, plant it into hearty soil and water it. The correlation between high quality of a software product and a high qualification of programmers is obvious. That's why standards in our company are growing all the time.

There is an established assessment system in Anadea and our employees have to certify their qualification once in half a year. The level grows together with the salary, which is undoubtedly a great motivation for employees to improve their skills. Internal mini conferences, which you could have read about in the blog, are an example of how our system of self-development works. The reports are made by employees for other employees. Each project release is held according to one and the same concept: a team tells about its experience and then a discussion with the audience about the project takes place. Apart from that, one hour a day the company assigns specifically for educational purposes.

But we go beyond that. We often exchange experience with other companies (for example, LevelUp), hold IT duels and so on. The assessment system allows us to understand clearly what each employee is capable of, which languages he/she is proficient in and at which level. This, in its turn, allows us to allocate resources by choosing tasks which a programmer is able to cope with. In other words, as soon as we get your project, we select developers who suit your appetites perfectly.

As you could have understood from our talk with Sergey, our masters continue to improve and gladly share their experience with colleagues. That's why it may really happen so, that all your ideas will be realized even better than you could have expected.