Shift-M/4

Transcript

Yegor: Hello, everybody. This is a Shift-M podcast, episode number four and I have a special guest today. It’s Yakov Fain from the United States, as far as I understand, and we have about 45 minutes to discuss project management in software projects. So, Yakov, say a few words about yourself.

Yakov: Hello, how are you? My name is Yakov Fain. I live in New York and I am a co-founder of two companies actually. One of them is consulting called Farata Systems and the other one is a company called SuranceBay. The first one is, as I said, consulting and in the second one we create a product for insurance industry. The first one was created in 2006 and the second one in 2009. I wrote a bunch of books. I don’t know if it’s relevant in this podcast.

Yegor: Well, yes, it is. Well, I can say a few words about you because I was investigating your profile over the last few days and… you wrote books about programming. I found that you’re a Java champion which is quite important title and that you are speaking at many conferences time to time. So, that really makes you not a regular programmer or manager, as far as I understand. But my main question, the first one which I want to ask… Well, actually I have a kind of problem, because when I was watching your presentations about management, I more agree with you than disagree, which makes it more difficult for me to interview you because I kind of agree with you in most places. But I found actually some places where I disagree. I will ask you about them, but my first question is: What do you think in general about managers? Are they good creatures or they are problems and are you one of them? Do you consider yourself as a manager, as a project manager?

Some people are just the managers who try to pass their problems down to the software development.

Yakov: Well, I think that they are needed, first of all. Second of all, I think it depends on the manager. Some managers are problems and some managers are not. The thing is that a manager is a person who oversees the development of the software and this manager can be either helpful for the developers in terms of providing directions, making sure that priorities are set, making sure that deliverables will meet the deadline. But some people are just the managers who try to pass their problems or maybe their management’s problem down to the software development which presents a problem.

Yegor: So, you are saying that we have good managers and bad managers and you want to be a good one and bad ones are just bad ones, right?

Yakov: Well, that I want to be, but I have to manage people. This is what happens but this is not my dream career so to speak. I do it because I have to, but I’d rather not.

Yegor: So, you would prefer to stay on the technical side?

Yakov: Right, and actually I do a lot of technical work as well but in my case it helps in understanding of developers but it’s not a requirement. In my opinion, a manager doesn’t have to be a former software developer.

Yegor: Yeah, I’ve heard you were saying that in your presentation “My Manager Sucks.” But you were saying that the manager should not be a programmer and it’s a good thing if he or she is not a programmer, right?

Yakov: I didn’t say it’s a good thing. I said it’s not a requirement for a manager on IT team to be a former programmer. This is what I’m saying. Some people come from the software development. See, at some point in every software developer’s career, he or she asks himself or herself: “How many more years will I write code because in my long career? I’ve been writing these if statements back-and-forth and programming at some point became a routine.” I mean, obviously new software comes around and I learned how to quickly master this new software but in the end, it’s writing if statements, in my opinion. For some people, it may become boring. When it becomes boring, some of them become managers. In some cases the executive of the company doesn’t have a chance to find a professional manager so they try to find, say, a lead programmer and they will say: “From now on, John, you’re going to be a manager!” John may or may not be happy with the decision.

Yegor: So, you were saying that technical people like programmers, the longer they stay in the company, they do more and more routine job there. Did I get it right?

Yakov: At some point, any programmer, if he doesn’t change places and he assumes that he knows everything about the software and actually he becomes comfortable with the software and if he becomes, I wouldn’t use the word “lazy,” but there is not too much motivation of improvement. I see that specifically in larger companies, in larger enterprises. They think that they are there for life and they don’t grow that much as software developers. So, when the opportunity comes to become a manager, they go for it.

Yegor: So, instead of changing the company, instead of finding a new project, you would recommend to become a project manager. So, it’s kind of a logical step after being a programmer?

For some people it’s the worst nightmare to go and look for a job.

Yakov: I don’t recommend that because this is not what I do. I spent many, many years working as an independent consultant and I am not afraid of going and looking for a new job, for a new contract, I’m not afraid of passing interview but people are different. For some people it’s the worst nightmare to go and look for a job. They would be happy to stick to the current employer for as many years as possible and then within that organization, they want to build their career and maybe they will become manager.

Yegor: And the management is more fun you think? The management job is more interesting than this? Maybe management is also going to be boring if it’s the same company, the same team?

Being a manager can be more rewarding than just coming to your desk every morning and writing code.

Yakov: In my opinion, it’s a livelier job because it requires communication with many people. When I worked for example as an independent consultant, I know myself, I know my skills, I know that I depend on myself and only on myself. But in case when you have to manage a team of people, it’s not only you who can make a project succeed or fail. You depend on many other people and some people may have conflicting interests and you as a manager need to find something to bring them together and deliver the product. So, in that regard being a manager can be more rewarding and interesting experience than just coming to your desk every morning and writing code.

Yegor: Okay. I’ve heard that many times. I’m kind of changing the subject a little bit. That’s a very famous quote by Napoleon Bonaparte. He said that there are no bad soldiers, only bad generals. Do you agree with that?

Yakov: I agree with that and I’ve been hearing on multiple occasions that this programmer didn’t do this or didn’t do that and in my opinion it’s a fault of a manager. You should not be blaming soldiers if your project is failing, if something is not being delivered in time. Of course, I understand that there are some exceptions maybe. Software is not well-defined, maybe it’s very complicated software but in many cases, it’s a responsibility of a manager to make sure that the product is delivered and when I hear some managers say that John Smith didn’t deliver something on time or because of that, our project is failing, I think it’s a poor manager or bad manager that leads to this situation.

Yegor: But what can a manager do? For example, the manager doesn’t know programming, doesn’t understand the technology and then this John Smith shows up and says: “It doesn’t work; it takes more time; so sorry; I planned one week but it’s going to take way longer.” How the manager can deal with that?

Yakov: It depends on the company. First of all, I am lucky to work in a small company and I’m lucky that we can afford to cherry-pick software developers which is not always the case. In our case we don’t have junior developers, we have senior professionals who know what they do and don’t require that much of a supervision. On the enterprise setup, at least what I see here in the United States, it’s not the case in many situations. Many large companies have so called “outsourcing partners”—it’s a company given to this enterprise for one or the other reason and they have to go to those companies and find people from the pool of available workers. These people may not have decent skills or skills may be different but a manager may not have a say. He gets a team and he has to manage it. So, that’s a completely different story. So, if you are the one who hired your developers and if you can rely on them, the management portion is very little but if you are given a team of developers then you have to work hard and this work may be not very pleasant.

Yegor: Okay. Well, let’s say I’m a manager, I have a team and I got this team. People say I “inherited” the team. So, I just got the team and I cannot just change these 15 people and some people just don’t deliver, don’t do what they have to do. Do you think I have, as a manager, to punish them somehow? I mean maybe that’s not the best word but still. What would you do?

Whenever developers have a problem they need to share it with either a more senior developer or with the team.

Yakov: You don’t have to punish them. You have to find the reason why they don’t deliver. Also, I wanted to mention maybe it’s more related to the previous question. What do you do if you are not a former programmer and you need to manage a group of programmers? If you are in this situation, first of all what you should do, you should find or hire a senior programmer, an expert ideally who you trust. If you trust this person, this person will be like a middleman between you and the team. So, this person can estimate and judge. For example, if you will say I need this job to be done in two weeks, how do you come up with these two weeks if you are not a former programmer, if you didn’t spend time to analyze the business requirements and if you didn’t spend time to write a detailed estimate. So, in that case having a technical lead is super important. So, this is what I think and if a person doesn’t deliver, again, if you are a former programmer, you can figure out why and, again, I don’t think that punishing developers is a good idea. The only thing that I think is important is to make sure that your developers understand that if they face a problem, they shouldn’t fight with this problem alone and then by the end of the week when you were expecting something to be delivered to you, that guy, the developer comes to you and say you know what? On Tuesday, I ran into this situation, I tried to do everything I could, I tried to do it best but it didn’t work out and that’s why I couldn’t even do what was expected. So, that is important. Developers need to know. Whenever they have a problem, they need to share with either a more senior developer or with the team.

Yegor: But in your presentation, I remember, you said that you sometimes let people go. So, you sometimes fire programmers for some reasons, right?

You can’t teach a programmer to be a nice man and a good team player.

Yakov: Really it’s very rare where we have to fire a person because of his technical abilities. First of all we try not to hire a person if he is technically not that great as the job requires. Again, it didn’t happen that often, maybe a couple of times, we fire people because of their attitude, because of their personalities, because you can teach anyone syntax of any programming language. It takes longer, it takes shorter but you can’t teach a person to be a nice man and a good team player. That’s kind of hard and surprisingly, I’ve seen more problems of this kind among senior developers. At some point developers think that they know everything and they become superstar or as we call them, prima donnas. These are the people who are good candidates to be fire.

Yegor: Yeah, that’s exactly what I want to know. So, I think there is a long period before a person is manageable and works like you expect him or her to work and then another situation when you’re ready to let this person go. So, my question is: You don’t punish them on this long period? You just wait till the person becomes unmanageable or you do some kind of, I mean not punishment, but some kind of control and some kind of corrections to the behavior or to the performance of a developer?

Yakov: I definitely try. It’s not like I’m sitting behind the bushes and then I’m just watching and saying ah-ha, he doesn’t do it, she doesn’t do it, he doesn’t do it again so let me fire him now. In many cases and especially this is important in our reality when we work with developers who are located anywhere around the world and when you have only online communication to them, in many cases it’s more difficult than if these people would be working right next to you. So, for example, developers are sitting in some chat, in the comment chat, maybe in Skype or anything similar to Skype and this guy is not around. His Skype icon is not green but yellow and I sent him a text message and he is not responding. He is not responding in two hours, in three hours. He never told me where he wanted to go or maybe he had a reason to go. So, that’s the first red signal. If the person is not available and I don’t know why, that’s the first signal. So, in that case, we would tell him next time you need to leave for a couple of hours, let us know where you are. If I told him once and twice and third time and this guy doesn’t change, then of course it’s a signal for us maybe he is a candidate to go.

In some other cases, we look at how this senior person works with other team members. If these other team members get help from this senior guy, that’s great. But in some cases I’ve seen that we have so-called “lone ranger.” This guy knows how to do everything and he does everything and nobody in the team knows what’s going on and whenever something is required, any help, it’s very difficult to get the help from the senior guy. Again this is a red signal. This is not good. The third reason could be how he behaves with the customers, how he communicates with other clients and customers. We try to let our clients work directly with our team members, especially the senior team members. If he is not polite in communications, if he believes that his issues are more important than the issues of the customer, it’s also a flag. Again we will talk to this person saying this is not the way it’s supposed to be, but some people have personalities, say, that I know everything but how could I be polite to this client if he is saying stupid things. Well, this client is paying your salary so find a way to communicate with the client anyway.

Yegor: So, basically instead of, as I call it, punishment, you’re basically talk to these people and try to convince them or teach them or train them to be better, right?

Yakov: Right and many people listen to us and many people adjust their behavior. Only once in a blue moon do we run into a person who doesn’t want to do this and the reason they don’t want to do this is because they may live in countries, in particular we have many people from Eastern Europe working and the job market over there is overheated. So, he is thinking: “Oh, why do I need to have problems over here if I can easily find a different job?” But, again, this doesn’t happen that often. We have people working for years.

Yegor: And that’s another subject which you just mentioned but I wanted to ask you about it anyway. So, you said in your presentation that it’s better for you and well, I don’t remember you said you recommend it, but you said it’s better for you that people sit together instead of being remote because they’re easily accessible, they’re close, you can, not control, but you can see what they’re doing. Is it still true or…?

I don’t think it’s the right thing to have everybody work in the same office.

Yakov: I think you misunderstood me. It’s not “better” I’m saying. We live in a real world. In 2017 it’s very difficult for you to work in a setup where everybody is sitting together. So, for me it’s not a requirement at all. The only thing is you have to have a team again that you trust. Our team is working from any location in the world and we never ever time clog them. I never ask them or I never question when they say “You know what, I spent three days on this issue?” All right. You spent three days, you spent three days but when did he work. I don’t care. As long as he attends the required meeting sometime that is required, he can work in the morning, he can work at night. If he needs to take his kids to hospital or something like this, he can take, he can do this. We are good enough technically to understand that this guy really works and we trust this person. So, this is a reality and I don’t think it’s an ideal world when everybody has to go to work. I live in New York and actually for many years, I lived in New Jersey and I was commuting to New York. So, I was spending between three and a half and four hours every day on commuting to and from work. I mean total, together. It’s a waste, it’s a waste. It makes you tired, you’re tired when you came to work and you’re tired when you came home. So, why? Why do this? I don’t think it’s the right thing to do to have everybody work in the same office.

Yegor: That makes sense but don’t you think that this kind of a free mode like you’re saying your programmer can do whatever he wants, he can spend his time on his own and then just be on the meetings and that’s it. But it sounds like lack of discipline. So, in a traditional setup the programmer has to be at nine o’clock in the offices, to leave the office at 5:00 so it kind of disciplines the people and they work better. That’s what most books and studies say but you’re saying quite the opposite. Just let them do what they want and just…

If they cannot behave as professionals, for us it’s easier to fire them.

Yakov: Right, but again don’t forget that we are at a luxury to hire, to cherry pick people. So, it’s not like somebody gave me a team and I say all right, guys, do whatever you want. No, I pick these people and they are professional and they work. I don’t need to discipline them. I’m not their dad. So, if they cannot do it themselves, if they cannot behave as professional, for us it’s easier to fire them.

Yegor: Okay. Let me put it this way. Let’s say you have the same team, the same people and these people let’s say they live together in the same city in New York and they start to go to the office. What do you think is going to happen with their performance? They will work better or worse?

Yakov: I don’t think they will work better or worse but they will definitely spend more time wasted on the commute for sure and some people cannot work from home. It could be a case when they live in a small apartment and they have small kids or their wife or husband bothers them assuming that if the person works from home, he is actually not working. So, some people want to go out, some people want to leave the house, some people cannot afford to have a place where it’s quiet which is their office. So, some people cannot do this and some people, actually many people work more hours when they work from home. So, it’s very personal. If, for example, I would have an office in New York and a team of 10-20 people, half of them would say I prefer to work from home and the other ones would prefer to work from work. Let us say this way then.

Yegor: So, you think there is no relation between the performance of the place where they actually work if the place is comfortable for them?

Yakov: Yes, I don’t see any reason. I remember I was working for a company many years ago, Wall Street company in New York, and the manager didn’t want to let their employees work from home. I remember him saying: “We have a meeting and on the background, I can hear how his dog is barking.” What’s the big deal? So, that’s why he wouldn’t let people work from home. On the other hand, he was having an entire large team in other country like over the ocean, 12 hours’ different and that’s okay with him. So, those people work from a distance and the hours are different but his own people cannot work from home. I mean, I don’t like that.

Yegor: But I can understand that. I can understand that guy even though I don’t think like this guy but it’s kind of annoying when you’re sitting in the office and you’re in this suit and you spend your time in the office and then you call somebody and you imagine that person sitting in the back yard with the dog barking, maybe in the shorts and not properly dressed, kind of relaxed. So, the manager become envious I think. That’s what the problem is, no?

Yakov: Take off your suits and don’t be envious and if that developer is more productive sitting in the back yard in shorts and having his dog next to him, what kind of envious behavior is this manager supposed to show? Isn’t the goal of the manager to have a developer be most productive? If that environment is more productive for him, why fight with him? Because you can’t afford this?

Yegor: Maybe the manager just doesn’t know how to control that people and he’s just…

Yakov: Exactly. You see, you’re asking me questions and I am talking about myself. I’m not talking about a general manager whose background I don’t know. I am telling you how things work in our company. That’s it. Maybe it not work for anyone else.

Yegor: And you’re saying that this is because you have this luxury of finding the best people on the market you can, yeah?

Yakov: Yes.

Yegor: So, you think the quality of a programmer… I think you’re paying your people also decent money, not the average money but because they are the best people so you are paying them best salaries I guess?

I don’t believe that they stay in our company because they like me.

Yakov: Again, I’m very pragmatic in this regard. We are paying them, I guess, competitive rates; otherwise they wouldn’t stick to us. I don’t believe in fact that they stay in our company because they like me for example or one of my partners. Everybody has a family, everybody has to put bread on their tables, everybody has to cover their bases. So, I’m pretty sure if they could find a better package, important I didn’t say better pay, I said better package, then they wouldn’t think twice and they would leave. They are a professional so they are in demand in their markets and if they stick to us, if they’re happy, they like the package. By package I mean not that we pay for their insurance. They work as contractors with us. We signed agreements with them and they work as contractors. But if they believe that there is a value in the fact that (a) they work with good professionals, with people who are technically really good, (b) that they have absolute flexibility, nobody is standing behind their back, seeing what they’re doing and (c) they have decent pay, that’s package. They like this package.

I remember we had to hire a couple of times people in that online service that used to be called Odesk and now it’s called Upwork and that company proudly advertised that you know what? “We have special software that takes snapshots of the screen every so many minutes so you will always know what the programmer is doing now even though the programmer is located overseas.” I hate it. So, what kind of environment is that? If I know that somebody is monitoring me, that I cannot move, that I have to have on my screen only thing that are related to work. What if I want to switch? What if I want to read the news? I don’t like this approach.

Yegor: Well, I agree 100% but another question which is also interesting. Let’s say you have a programmer and you trust that person and he’s a professional or she’s a professional and then he’s supposed to work on the back yard or whatever and then you find out he doesn’t tell you that but you find out that he’s also contributing to an open source project of his own. So, he’s doing something maybe in the evening time, maybe in the daytime but you don’t know that because you don’t control him, you don’t see the screen of that person. So, what’s going to be your reaction in this case?

Yakov: I don’t care. If this person can deliver what I expect him to deliver and he can do it faster, that’s great so let him do it. I remember myself, when I was working as a software development, I mean 100% of my time as an independent, I was pretty good at what I was doing. I mean even the software that I was working with. So, if I would be working for a company, for a client, I would physically go to the client, I’d be sitting there. I was able usually to accomplish lots of tasks maybe in four hours, maybe in six hours. My manager was always happy because he could compare myself with the other people. So, if I wanted to do something else in additional hours for myself like open source project in USA, I’d be doing. So, that’s okay. If your manager is happy with what you deliver, why are you supposed to work eight hours?

Yegor: But many managers in many companies don’t allow people to do that and I’m having this discussion with many programmers. They keep asking this question because I’m promoting the same philosophy you’re saying. So, I’m telling them look, you have to do something on your own, write a book, create an open source project, contribute to open source project, all the same. But they keep coming back to me and saying but my manager doesn’t allow me to do that.

Yakov: We are not alone. I mean you and me. Google allows their employees to spend 20% of their time, their work time on the pet projects, right? It’s official. Google, a huge company. So, I’m not here like a first person who allows it but we are not Google of course but we can always do this. It depends on the person. If a manager is a person and this person can be better or worse.

Yegor: But what would you recommend to these programmers who keep asking me this question? So, would you tell them to do because they’re saying to me: “Look, they’re paying a good salary but they don’t allow me to do any open source. So, what do I do?”

Yakov: What you do, you ask yourself what are your priorities and I already mentioned this. If you have a family, at least for me, a family is my highest priority and I want to make sure that they maintain a certain quality of living and if I have to go to work to you for example and you are paying me well but you don’t allow me to do something that I like, then I’ll stick to you because you’re paying me well and in the evenings instead of drinking beer, I will be working on my pet projects or maybe on the weekend. So, this is what I would do and I can tell you the other thing. In my career, I had to switch from one software to the other. Again I’m going back to being independent and I remember in 1998, there was a popular software called PowerBuilder. I don’t know if you remember it. I realized back then that I needed to switch to some different software because PowerBuilder was going away but at that point I was making really good living because I was very good at PowerBuilding. I had no problem finding job contracts and everything. But I decided to switch to Java back then.

So, I decided yes, I need to switch to Java which was a completely different world. Application server, what is that? For a guy who is in the client server, what I have in the client server world? I have a UI tool which I know well, I have a database which I know well and that’s it. Now all the sudden, there is a server and there is something called servlets and Enterprise JavaBeans. I had no clue how to put all these things together but I knew that if I will switch from that PowerBuilder software to Java, I need to switch without losing in pay. I was a senior programmer in software A and I want to get a next contract using the software B without losing in pay. Nobody would allow me to learn Java at work. I did it in my own time then I pay my own money, I took a week off and I pay I remember like $2,500 back then in 1998 and I on myself enrolled into a class. I remember back then it was a guy from [inaudible 0:34:16] server. It was a five day training, five day course and everything started to make sense and I learned this new ideology, had class having my previous experience in other software. Now I could sell myself with the new one. So, there is a way if you want.

Yegor: So, if the people are interested in open source, they have to find a way to do it. You would recommend not to stop that but keep doing it even though the manager is saying no?

Yakov: Of course. If you cannot do it during working hours, if you cannot do both I mean, do the task that is given to you by the manager. If you have extra time, work on the open source. If you can’t, do it in your own hours but working in open source is definitely beneficial for any programmer.

Yegor: Okay, and one more thing which also triggered my interest in the things you said. You said that if the people are unhappy with the project, are unhappy with the company and they are not working there because they like you, they’re working there because the whole package is good and if there somebody else offers a better package, then they will just switch and you admit that. You kind of realize that, but many people are saying that a good manager is the person who can convince people to work in this project and get a full commitment from them and get a full loyalty because that manager inspires them that much and they love him or her and the project and everything and they will stay with the project even though the package is not as attractive as the packages offered on the market. So, what do you think about this philosophy?

Yakov: I don’t believe in this. Again this may be a very pragmatic approach but I think every person I work with has similar desires and responsibilities that I do. How can I say to the guy “You know what, John, work for me for $50,000 a year. It’s a great product and I will teach you software X and software Y and don’t go across the street where they will pay you $10,000 more.” I cannot do this. I don’t think it’s fair. I mean people are not stupid. When I read things about the Google company again, I read that they offer you free van and that van has a Wi-Fi and they have laundry in the facilities and they give you free food. Being a practical person, I understand that most likely they under pay some people but they give them these nice little things. For some people, it’s important. It’s cool for them to say that I have free food every day. I have free laundry. I can bring my dog to work. So, that’s maybe important for them. I’ve seen people who have different priorities and I remember that person. He wanted to have a plate with his name on the door and he wanted to have that corner office in the 100th floor. That’s his goal. It’s very important, it’s his priority. I am not agreeing with that but it’s his priority, it’s his choice and for that, he would be staying with the company and making his way up the career ladder. So, different people. I cannot say that you can give advice to everybody that will work with you for everybody.

Yegor: Okay. What about your people? You said you have senior people, they’re good developers, they’re professionals. Will they accept that intrinsic perks like things which are not measurable in money but it’s like you said free food, bed free office and all that stuff instead of money or they will tell you look, no, just give us the cash and don’t bother with these things?

Yakov: To be honest with you, we never offered free food because they work in their homes. Some people work from Ukraine, some people work from Russia, some people work from Belarus and it’s hard to offer them free food to be honest with you and besides, in those countries, food is very cheap comparing to the money they make. So, this is not a perk and again, if any of our developers will tell me tomorrow. I’m leaving and I had a couple times this situation, well, I will say good luck and we’ll remain friends.

Yegor: I see. You’re not expecting them to be loyal or committed?

Yakov: No. Why would they be loyal to me? Why? Explain me why? Because I am a handsome guy or what?

Yegor: Well, that’s a good question actually. I’m on your side but I’m trying to play the devil’s advocate here. So, they may say that: “You know what? My job is my second family so I don’t treat me like a resource, treat me like a valuable member of the family and I will give you something back. I’ll become valuable member because you don’t leave the family when the father has no job.” You stay with your father even though the father has no money and you have to live in a poor situation because you love your father.

Yakov: I don’t expect love. I believe that our developers enjoy the freedom that we give them. Also, for some of our developers, it’s important that when we have a chance, for example, we have a chance on a couple of occasions to offer them to participate in writing the book. For them it’s an advance in their career. We offer them to participate in running trainings for example. In my opinion, it’s an advance. Some people will say you let him do this, they are building their names and they may leave because of that. Now he is a published book author. So, I wish you luck but these little things are important in my opinion. But we don’t give free food, sorry.

Yegor: And one more thing which is interesting, what do you think about this idea that good managers are good leaders? So, they have to lead the team forward, not just manage them and tell what to do and control scope and budget and quality and risks but also to lead them, and the leadership is way more important now than all these project management documents and everything? I’ve heard that many times.

If you can be hired in a team where you are the least skillful person, you got lucky.

Yakov: In my opinion, it’s BS especially when I go to large companies and they come up with different mottos for our company, these three phrases and they come up with the program that employee like, they should repeat it as mantra. I don’t believe in that. What is a leader? A leader is a guy who you as a programmer can learn from. By the way one of the advantages in our company in my opinion that programmers can work with some senior guys. In our company in many cases when a person joins the team, he is one of the less skillful people in the team and in my opinion it’s the best thing in the world. If you can be hired in a team where you are the least skillful person, you got lucky. You can learn, you can enjoy working in a team with more senior people. So, this is another benefit and it’s a benefit I think that people see in our company, enjoyment in working with high-level professionals and again they are absolutely free to go any minute if they will find a better deal. It doesn’t happen often still but again I will wish them good luck. I will not try to give them counter offers or anything. I don’t believe in that either. So, leadership is not an ability to tell stories about beautiful life in five years. No, it’s comfortable and convenient place to work among professionals that you respect. That’s what I think makes sense to any person including myself.

Yegor: That makes sense to me. One more thing, the quote I got from your presentation. You said that “I love programmers, that’s why I’m a good manager.” So, can you comment on that because it kind of sounds good to me but I want to know a little bit more. So, what does it mean, you love programmers and that’s why you’re a good manager?

Yakov: First of all, I’m not sure that this is an exact quote but I want to say that I believe that our profession is unique in a way. So, we are or at least the people who really believe that this is their profession, we are creative people, we are those who are learning all the entire career and I understand programmers will be probably more appropriate way. I understand when they are happy. I don’t remember, his last name Eric, Eric Ross, one of the books. He was talking about himself. He said “I love the smell of a freshly killed bug.” I understand this phrase and you probably also do. So, I respect developers. I understand what makes them happy and what makes them not. Maybe this is what I meant when I said I love developers. That’s why I enjoy talking to them. I can appreciate when they’re happy and when they tell me something that they achieve. So, I’m pretty glad to share with them or to hear their story.

One other thing is that we never mentioned over here in this podcast but I wanted to bring this up. There is a term called “manage the manager.” This is important for developers, important skill to acquire. What I mean by this? I’m sure you’ve been working in teams where there are some people who speak loud about their successes and there could be a person who is sitting programming all day long, he is really good but he would never tell about what he fixed and how he accomplished something, how he solved some serious stuff. And this is wrong because managers cannot know everything that is going on in programmer’s mind or in a team. So, if you are a programmer and if you are accomplishing something technical, you fix something and it helps in a way to the teamwork, it made the application better, talk about it, manage the manager, make sure that the manager knows about it. Otherwise, there will be always some other people who have bigger mouth and they will be visible, noticeable and they will get promotions even though you may be better than them but you are sitting quietly in the corner and just writing if statements.

Yegor: But if it happens, if you’re sitting in the corner and the manager is not paying attention to you and paying attention to people who are the most loud, it’s a sign that the manager is not really professional, isn’t it?

Yakov: Not necessarily. A manager can be busy with other things. A manager if he’s not doing micromanagement, cannot possibly know about every little success that every person makes. So, everybody is fixing something. There is a list of bugs in your software you use for bug tracking and they see Mary fixed five bugs and Joe fixed five bugs but is this five and five, are they the same, do you know about it or you just do quantities?

Yegor: So, you’re saying there is a responsibility of us programmers to bring our problems up and speak to the manager.

Yakov: Not problems but successes as well. Don’t give me problems, give your solutions. This is another name for managers.

Yegor: Interesting. Okay, and one last question. You’re the manager and you’re managing people for many years but I’m sure you have still some problems or troubles which you still don’t know how to solve, I mean problems in your management. How do you think you need to improve yourself, what to learn maybe, what to fix, what problems do you have? Can you share them?

Yakov: I didn’t spend enough time on learning all these formal things that enterprise manager supposed to do. If you will open up the job searching engine, any job searching engine, say you want to apply for a manager, I would try to apply for a management position in a typical enterprise. I would never pass for technical entry because I wouldn’t have so many certifications that I needed, I wouldn’t be able to write on my resume how I made our company to save $10 million dollars from something. So, I am not a typical manager in this case. So, if you’re asking me a way for improvement, if I would plan to make management my career and work as enterprise manager for the rest of my life, I would have to go and do some formal studying and I would pass some certifications to become a manager that looks good on a resume.

Yegor: Well, that makes sense. So, we can’t recommend that probably to people who are listening us and they want to become better managers. Looks like you would recommend that, right? More formal education?

Yakov: Yes, this helps in my opinion if you are planning to go and work in the enterprise environment. Again in my case I work in more of a startup environment so it’s a little bit different.

Yegor: And for the startup, what would you recommend to do if they want to become a better manager?

Yakov: Just work from early in the morning to late night.

Yegor: So, you’re saying practical experience is way more important than?

Yakov: Right, right. And again, the older you become and again I’m in software for 30 years, you learn people, you monitor people, you see, you understand what they want and they want simple things. So, as you gain your life experience, you become a better manager in my opinion.

Yegor: Again, sounds like I agree with you. Thank you very much.

Yakov: It’s unusual for you, Yegor. Based on what messages you are sending, what you’re writing, what you’re speaking about, you are not a typical person. First of all I don’t agree with you in many occasions but I respect you for being able to speak up and to have an opinion and actually in this regard I am similar to you, maybe I am not that extreme because I’m older to you. Maybe ten years from now, you’ll also come down a little bit. But I was never shy. If I had an opinion that this is why I am saying, this is why but I have flexibility. If tomorrow somebody will convince me that this is actually black, I will say yes, now I see it’s black and I will be saying to everybody this is black. Are you afraid of changing your opinion?

Yegor: Oh, yeah. Well, I change it quite often, of course.

Yakov: Really?

Yegor: Yeah, yeah. Many times, yeah. I’m actually happy when somebody convinces me and we discuss and argue and I’m really interested to change in my opinion, of course. But like you said, I’m always trying to have some opinion because some people just prefer to not have an opinion. So, whatever it is, whatever you want or do whatever you say. So, today I have one opinion, tomorrow another one, that’s kind of wrong. It’s kind of wrong not to have an opinion, I believe so. Some people call me extreme in some cases because I’m expressing my opinion but then I’m ready to change it. But every time I have an opinion, I have it and I’m ready to fight for it.

Yakov: But based on what I’ve heard in some cases of what you are saying, your opinion may be harmful for young people, for people who are junior programmers. They just learned that Java language and all of sudden Yegor comes in and says that object-oriented programming is wrong this way and right that way but they just learn something. They just made their first step in their career and all of a sudden you’re trying to destroy everything that somebody maybe at college or maybe someone else taught them. So, this may be dangerous. For me it’s fine. I can listen to you, I can understand you and I can split what makes sense to me and what is not applicable to me from what you’re saying. But you have wide audience and if you want to take one advice from me, well, next time you are saying something absolutely with confidence, this is how things should be done, I would just add a little bit. If you are just starting, if you’re a junior developer, maybe you shouldn’t take what I say for granted. Learn your experience, try on your own and then see if I am right and I’m wrong.

Yegor: That makes sense, that makes sense. I actually am thinking maybe I will write more like blogs or maybe a book for junior programmers or for people who are just entering the market and they want to learn Java because I’m getting a lot of emails actually, not a lot, but every week probably one email from somebody who is asking me what I would recommend to do and I’m just starting to be a programmer, what would you recommend me to do? What to read, what to study and I have no answer now actually. So, you’re right. I’m writing more for senior programmers and juniors are kind of lost after they read me. So, again I’m taking your advice and this is true. I will try to focus more on juniors and write something for them. All right. That makes sense. Okay, thank you very much. I think we’re done with the management questions. Thanks for your time.

Yakov: Thank you for having me.

Yegor: Yeah, and I hope to see you once maybe in the future. Thanks a lot.