Surprisingly, short answer to the question from the title is 'yes'. For longer one, keep reading.
Few months ago I joined OLX and a team taking care of completely new project. Plan was to introduce a new feature that will be added to the current flow and will change it significantly for both, clients' and tech side. I was really excited - I hadn't have an opportunity before to work on such big feature from scratch. Of course, I worked on bunch of smaller things. Things that also changed the system and were important for clients but here stakes were higher. It was all about clients' money safety. Pretty big deal.
The idea of the project was clear, rough mock-ups were ready. However, the process itself turned out not to be so simple as I had thought. I was used to having planning meeting, then a little bit of discussion on the feature. A chat with designer. A chat with product owner. A chat with engineering manager if needed. A chat with QA to double check acceptance criteria. Defining the scope of the ticket and then - starting the work. Can you see it? For me, work started with coding. I didn't see all of the stuff before as 'working'. That was a problem.
With this new project, we started with event storming sessions. Then discussions. Then workshops to better understand how this feature should work. Reading docs and existing code. Thinking of where and how to introduce our thing to the existing system. Reading, making notes. Memos. Summaries. Bullet points. Going through designs, going back to designer. Asking product manager tones of questions. I got myself thinking: "I am really not coding! Am I a fraud? Programmers are supposed to be coding like all the time!".
The true is, I had few coding tasks. I was onboarding in the new company, I had to get to know the system. This is why I took few small things to implement from the other team so I could work with code. Nevertheless, to me it wasn't really coding cause my main project's code was untouched. To be honest, it was actually non-existing.
I am a front-end engineer. Mock-ups were ready. They weren't final but I kept having these thoughts that I should be coding my main project. You know, I am a person who likes to act. This is me who's asking during the meeting "So what't he action point here? What are we doing? Does this discussion lead to any action right now?". I was really struggling with this no-coding-yet-lets-talk-about-it-first situation. It lasted almost two months and I didn't know how to handle it.
Then it hit me. I wasn't doing 'nothing' for these two previous months. I worked really hard. I went through my notes, all the docs, checked few things I implemented in the code to test the flow and figure out how to proceed further. That was true that my code wasn't in production and clients weren't using my feature. However, it didn't mean that my job wasn't worth anything. It turned out that I had actually a lot of work done. Very important work.
We were able to finally decide how the flow should look like. We even had optimistic and more pessimistic approach in which we didn't get all needed integrations with other systems. Mock-ups were finalised, designs were ready. I was able to start working on the code and finally put it in production. For now, under feature flag but it was there.
I looked back and then I realised that this time when I wasn't coding helped me a lot. Thanks to that I had really detailed plan. I had a chance to talk to other engineers, plan frontend structure, choose the best way to approach it. What's more, I already knew the project a little bit thanks to these small coding tasks I had implemented. If I had started with new feature right away, it would take me much more time to code it. I hadn’t known the existing code, so I would have to go back and forth with every small thing. Thanks to the fact that I had a chance to implemented small things in existing flow first, I felt much more confident and didn't have to spent hours starring at the code and wondering if I was doing right thing there.
I guess a take-away is pretty clear here. Programmer's job is much more than coding. Talking with other teams and discussing new feature may not seem to be coder's core work but in fact, it is. Without having clear picture of what you should implement and what you clients need, coding is worth nothing. You don't want end up programming something that nobody is going to use. Let me assure you - talking with others is a big part of your job. And sometimes, it may lead to no coding at all. But if this is what your clients need, this is what you should be doing. Good coder knows that sometimes coding is not the most important thing.
Top comments (0)