I recently had the opportunity to work with some young developers who were new to the organization. That made me reflect on my journey through the world of software development and consultancy. What do I do differently now than when I was a junior web designer/developer, fresh out of university, at a small computer service shop years ago?
Ask more questions and speak up
This is applicable in so many areas that I thought of this as soon as I started to write this blog post. I wish I could tell my younger self that asking questions would not show my weakness and that the only useless question was the one that I did not ask.
You never know if anyone else in your team has the same question. It is not about one person not knowing something. It is about sparking discussion and achieving the sprint goals as a team.
Reviewing a pull request and do not understand part of the code? Ask away. The least you would get is more insight into that area of the application. And contrary to popular belief, senior developers do not know everything. Your question might trigger deeper thought and help uncover hidden bugs.
Plan before code
Developers love complex problems. Sometimes we are so eager to dive into problem-solving that we start coding right away. It feels great to come up with a working solution quickly and move on to the next problem. I still remember the joy I had after getting everything on my first portfolio site aligned “properly” using absolute positioning only 😅.
There is a lot more about software development than just writing working code. It is imperative if we are in a team instead of working alone as a freelancer. These are some questions that I think about before opening up my code editor:
- What problem am I solving?
- Is this part of a feature or a tech debt where there is more room for refactoring? Or is this a bug fix that the end-users are waiting on?
- How do I break down the problem into smaller digestible tasks that result in smaller pull requests?
- Do I have all the data I need? Do I need to talk to another team about it?
- Is there an opportunity for pairing with another developer?
If there is proper planning, we are less likely to miss something. It is also easier for your manager and product owner to keep track of the project progress.
Communicate proactively, set proper expectations
This is something I learned from my consulting years — There is no such thing as too much communication.
When things are going well, providing constant updates to your clients, peers, or manager gives them the peace of mind that progress is happening. If there is a delay, we must acknowledge the issue as soon as possible and provide regular updates on what we are doing to rectify the situation.
More often than not, what matters is not that something went wrong but how we communicate and keep the stakeholders informed.
Know when to draw the line between greatness and perfection
Eons ago, my high school art teacher gave the class an assignment of self-portrait sketch. Thinking that the eyes were the window to my soul, I decided to start with my eyes and spent over a week perfecting them. The results were stunning. I do not have the sketch anymore. But it looks similar to this:
I spent so much time drawing my eyes that I had to hand in the assignment before finishing the rest of the sketch!
How do we decide what is good enough? Responsible developers care about code craftsmanship. Refactor early and often is their mantra. However, there is a difference between taking days to rewrite everything and leaving your code a bit better than before.
There is no perfect code. We can always find more DRY-ness to have, more milliseconds to shave off of loading time, more edge cases to handle, or newer technologies to use as we become more knowledgeable, etc. The key is to have a clear vision of where you want to go, break it into small tasks, commit, test, and ship often.
Make impact beyond writing code
When I first pivoted from a designer to a developer, I was obsessed with learning new technologies. I would ask my project manager in advance what kinds of projects were in the pipeline. Then I would spend almost all my free time doing research and experimenting with different programming techniques.
However, after many months and multiple development projects were completed, most of the people in the company still saw me as a designer. “What went wrong?” I wondered. I worked hard and learned as much as I could. Then it hit me—People did not know. All my hard work was invisible because I did it in my little silo. I did not share my success or failure during the journey, nor did I speak up and offer my help when my co-workers were having technical difficulties as I thought I was too inexperienced to be of any use.
Coding skills, or hard skills as some would say, are just one side of the software development coin. Equally important are soft skills. How do we communicate with other teams and people from different companies? How do we offer value to our team, customers, and the organization?
Here are a few things that we can all do to increase our impact:
- Learn something new every day and share the knowledge.
- Build expertise in a domain to become the go-to person.
- Identify areas of improvement and take initiative.
These are by no means the only things that help us grow as developers. But they will for sure make the journey more fun and fulfilling. Feel free to share your thoughts in the comment section. I would love to hear from you!