Summary time
I left the company for which I’ve been working for last 4 years and now it is time to summarize my experiences. It is not the story of shady business nor confession of my sins (not all of it anyway), but rather my thoughts and experiences on working for a long time in the same company from which most of the time remotely.
Lesson learned good onboarding will produce not so confused employee
I started as a java developer and my first task was to create a tool which will be able to import data into the system under active development. There was no time to do it manually before the product was scheduled to be released on production because it was already late and there was no chance to deploy it early enough. It was a great way of onboarding. I was able to get familiar with all the technologies used in the project, figure out available APIs and was guided very smoothly to produce working solution.
Lesson learned never leave anyone without supervision for too long especially when time is crucial
Meanwhile, there was the problem with UI development and it was the time when I’ve learned that it’s possible to do something more useful than falling snowflakes in javascript ;) I’ve learned angular and all the tooling around it. With the help of the team, we picked up frontend and were able to deliver it on time. When someone is not producing results for too long ask what is going on and expect results. If there is nothing for too long then it is time to act.
Lesson learned if everything is working do not cut in into the process
Now we were a good functional team. There were some personnel changes but we were able to keep good atmosphere and idea of good quality in mind. After first release (which went smoothly) new project was on the horizon…
Lesson learned when working remotely have your routines which will get you into "you are in the office, do your job" state
In the meantime, I’ve decided to go 100% remote (team was scattered all across Poland) from my perspective there was no reason to commute to the office since I was working remotely already. Thanks to understanding PM it was possible and company allowed it. At first, I was little afraid that I will not be able to work effectively from home, but with a bit of practice I was able to pull it off and it worked just fine. First of all, I had my office hours and I’ve tried to stick to it. I had my workplace. When I was there I was working when I was not I was out of the office. This small procedure allowed to fool my brain into thinking now you are in the office do your job. I also had my morning, lunch and afternoon routines which allowed to easily get in and out of the office.
Lesson learned don’t force your ideas just because they are yours. Talk about them, argue, discuss and listen to other members of the team and eventually everything will land just fine
Sometime after I went remote new project was assigned to our team (we already had two on production in the maintenance mode with a new feature to developed once in a while). It was the first project in which my role was something more than just regular developer. I was heavily involved in the planning process and then I’ve leveled up to something more like a tech leader. Although I was expected to lead and point the direction I always discussed my ideas with the team. Before anything was decided I looked for confirmation from the team that it is something they want. Usually, I was able to sell my idea and it was accepted. Sometimes team convinced me to do something in a bit different way (I was the stubborn one ;)) or implement something using new technology.
Lesson learned let the team improve the process
Technologies used in this project were not developer friendly but with a bit of the effort we were able to isolate ourselves from it. For the first release it wasn’t yet perfect but it was working. On some level of abstraction you didn’t care what was below and after initial struggle with this "technology" we almost forgot what was below :) For the next release we took it to the next level and developed some extra tooling around it and now it was almost too good to be possible :)
Lesson learned don’t give up easily
Not everything was so shiny there were also failures. From my perspective the biggest one is agreeing to do the project with the tools which were not optimal for the job. I should’ve come up with ideas on what can be done about it and discuss them more aggressively with architects.
Lesson learned make sure everyone in the team knows a little about a lot
We were still maintaining two older systems. The oldest one started to look a bit like a legacy software… It was time to do something about it. I was able to sell the idea of refactoring it. It allowed new team members to get familiar with the system. We refactored frontend which was developed by backend developers learning angular 1.1 without frontend developer supervision. It was far from good. Refactoring sprints allowed the team to dig into the system and get a bit more comfortable with it.
Lesson learned working remotely does work and produces results
We all were working 100% remote (not offline, but remote, we had office hours and daily meetings). There is nothing wrong with remote team. There are challenges but with proper management and communication it is possible to have very efficient remote team of developers. It is important to communicate and discuss a lot of stuff. You should get familiar with the team, figure out what people like to do and what they avoid, let them pick tasks they want to do. It might be a bit of the bump at the beginning but this investment pays off quickly once you notice that every person of the team can do anything and you can go on long vacation and don’t be bothered with work.
During those 4 years I’ve been working with great people. We had some harder moments and a lot of good ones. We did pair programming. We organized mini hackathon. We spend a lot of time discussing ideas. We exchanged countless number of comments on code review and we produced good quality software :)
18 Jul 2017 #other