I want to share my experience here from the companies I have worked at. All of the companies are have settlements in Bulgaria but are foreign ones (the last one was an American company and one of the fastest growing companies).
I really don’t have a great experience at the moment in companies – I have around 3 years and a half working for companies but I really notice some things that bother me and I hope that the appropriate people reading this article will make some notes of these and change the workflow at their job just to have a better experience with devs.
- Pay attention to devs – Most of the project managers and team leads I worked with are just a people who give tasks. No more than this. They have a lot of work and they rarely have time to help you with advice or something else. Most of them don’t even listen or read what you are trying to say to them. And I am so deeply involved with a problem which most of the time stops my work that I am eager to get an answer for it. And I am waiting for that answer more than 2 days. Why? Because PMs don’t have time to ask the client or just are not very familiar with the project and give everything in the devs hands. If PMs have tons of work – may be it is time to tell your boss to hire another PM to share the work with you?
- Think as a client – most of the time I need answers. And all I have is questions. So you must have the answers and be deeply involved with the project. This is why you are the Project Manager. Tell me the details, don’t always redirect the answer to clients. Ask about the details first, not last.
- Stop e-mailing. Organize! – in an age where we have things as Google Drive, Pivotal Tracker, Trello, Jira etc. you still send me tons of emails with this and that and client responses. Really!? And in 3 months I get 2000 emails and when I try to see where was that email with that screen look I loose myself in the Inbox folder. Start making spreadsheets, docs, open projects in Trello or Pivotal, make notes, follow conventions in emails Subject field etc. I cannot be organized for PMs, Team Leads, QAs and clients. I have to be organized for the code I write.
- Multitasking = No – Stop multitasking. And don’t make me do it. As a software developer I cannot do 2 projects at the same time. I tried that and it makes my code bad and I don’t even want to look at it on the next morning. I tried to do a .NET WebAPI services and an Android project at the same time. I would never do that again! The two clients push you to the limits, everyone wants working functionalities and QAs are breathing down my neck. At the end I made the two projects working with some of my worst ever written code. I am not proud of it.
- Leave me alone – First and one of the greatest mistakes is to put QAs next to Devs in one room. Most of the time the QAs are worked with were people with NO QA experience and didn’t know anything about programming. They were just “Clickers” – clicking on buttons and see if they work. And when that persons sees that the dialog displays in 3 seconds, not in 2 he starts calling my name in the room where I am at and starts asking why is this happening. At the same moment I am at line 640 at BL project in UsersService and the first words I get in my mind is “That sad f****r calls me again”. I need time without any pauses from anyone so I can give everything from me to finish the project.
- Respect privacy – you don’t need to stop me from checking facebook, watch videos on youtube or just chat with a friend. You should not put a standard to me – like dress code, behavior etc. As a person with a brain I need time to relax and just leave the work I do. Most of the devs just relax for 10 minutes just listening to the breath they take and nothing more. Give me that moment. Don’t restrict me, I really need that time to be productive. The time I left the last company I worked at they put a timer mechanism on the doors so you could unlock only by a chip so they could follow you when you leave work.
- Everyone needs a stimulus – A stimulus is not 100$ per year so you can feel special. That is what they do in Bulgaria. A stimulus can be just the simple respect to listen to the person next to you. A respect can be to appreciate someone’s hard work a week in a row just to complete the project in time. and give him some free time. In the last company I worked with our clients where americans so I had to stay late at night just to respond to emails. I had some nights when I replied to emails at 3 a.m.. I also had days where I released a build at 1 a.m. because I found a bug at 9 p.m. My working time was from 12:00 to 20:00. So may be money can be a good stimulus but they must be appropriate to the overtime. 100$ for 5 days multiplied by 6 hours and these 100 bucks are per year – that is a real joke. That should be per 2 days overtime at least. Otherwise I would be happy if you give me some free time so I can leave work earlier, come later or just give me a prize like going on a movie for two people or something like this. It is so simple.
- Respect other peoples work – Team building is not the event where you say thanks to all of your employees and let them drink and eat. And sending emails from a template to all employees for Christmas is as bad as saying “Hey you, have a nice holiday!”. Can’t you just personalize it and put something from you in it? Or just hire people to do it? Can you just write my name, write few good words for the projects I am in, give me an opportunity to write to you and just do this by yourself and not templates? I had this team building again with this last company where they got us in a big hotel, gave us foods and drinks and made some people from some projects stand up and forgot about other projects. I was in one project which was giving a lot of money to the company but nobody appreciated it and the client was so happy and they made me sad and feel part of the mass. I hate that and I hate employers like that.
- Give a chance to shine – most of devs are so smart people that I am really wondering why company owners don’t give them the chance to be something more. I know devs which talk with the client to check the details, make UX/UI design better, optimize code performance, coordinate the other people in the project so the work would be going simultaneously, organize every step in the project and always know what is to be done next. And those people are far more than devs. Why don’t you give them the chance to shine and coordinate people? There is no reason to say no.
- Free time > money – give devs free time. I see that most of the devs don’t have free time to check facebook for example. And I really need this time to improve myself, to learn new technologies, to do unit tests, to refactor code, to write documentation, to improve current code, to research new ideas and design, to do some A/B testing models, to research code on github or watch Google I/O or DotNet Conference. I really didn’t have time for the things above when I have worked at companies. I could do such amazing things with one of my projects but I was always pushed doing new features instead of improving previous ones. Choose to improve the project instead of making new features. It is worth it.
- Support people sharing knowledge – as a rookie in a company and a beginning developer the most common feeling is that you don’t know anything. So it is very supportive if the people around you share their knowledge with you. The company can even make weekly meetings and make the employees do presentations on various topics. That way people will have the opportunity to share precious knowledge.
- Pair programming – Why not? Pivotal Tracker do it. Microsoft do it. And probably a lot more companies do it. Why shouldn’t you? Now when I work with my friends we do pair programming and we don’t even need QAs because we just have two heads thinking over the same thing. We share knowledge and we fix even the minor mistakes easily. And when you get stuck (which happens often) there is always a person to help. And we got an amazing productivity. We finished a mobile advertising website and android SDK for it in 2 weeks. That included ad management, registration, displaying mobile ads on the devices etc.
- Comfort zone – as a dev I want my place to me comfortable. I want to have a good chair, so I can spend 8 hours without having back pain, I don’t want to bring my mouse and keyboard from my home, I want to choose them and buy them for me, I want two monitors so I can have more space and I want a comfortable desk, so I can make notes and write code without having to push my keyboard aside. And with that comes great productivity.
Thanks if you have read all of this. Most of the points sounds very egoistic but from my experience most of the developers I have worked it feel it the same way. That is why i decided to share it with you. May be you can take a note and make devs life easier.