Vijay Menon | Portfolio

What’s Different 10 Months Later?

January 26, 2022

← Back

It’s been a while since I last posted, and so I wanted to take some time out of my busy routine to self-assess.

I feel like over the last 10 months or so, I’ve definitely gotten a lot better at understanding how to work in a large team with other programmers.

Through most of my career, I was usually working with a small team of designers, maybe a manager or project manager, and possibly one other developer. In the past, if I wrote something in code, few people really knew or understood what it meant; the only criteria I was graded on was if the feature looked and functioned as expected from design.

So while I did my part to try to write the best code I could for the time, I didn’t have a lot of peer review, so I didn’t really know if I was getting better at writing code or even programming. The only resources I had back then were just books or tutorials I’d go through, or meetups.

In a large team, development is WAY different — the expectation is to definitely build features, but code is largely generated by a team of people and so it’s my responsibility to help jump around in different blocks of code that I might not initially understand but help the team get the project finished.

Hence code reviews are EXTREMELY common, code is scrutinized daily, and you have to be FAST at reading documentation and trying out ideas/tutorials in order to come up with strategies to get the project done.

I’d equate it as something akin to being in a battlefield, where your job is to help your buddies get to the next safe space using all your brains, brawn and willpower.

Have To Make It Work

We have to make LARGE blocks of code work and carry these features over the finish line, while all kinds of bugs pop up (sometimes randomly), services go down, people leave, etc. The engineers that have the best ability to strategize, bravery to jump into code they don’t understand and ability to code solutions that work are the ones that get to “go on” to the next level (aka get recognition at the company). Ultimately it’s about feature completeness, but this time it’s not just about how well you do something individually, it’s if you can help the team finish work all the way.'

Help Your Teammates

What I’ve learned so far is that if you really want to be a good coder, you just have to “roll up your sleeves” and work your way around bad patterns, and improve them to match those “good design patterns” that everyone worships.

But no one starts off writing great code from the start; it’s the result of collective thinking as well as bravery to fix the stuff no one else wants to touch, and then share the information (so others can also “win”). The last part about helping others win is SUPER critical to making it in a large corporate programming team.

On a personal level, I’ve definitely gotten better. I’m much more challenged on things I probably thought I should “already know”, and it’s often daily. Sometimes it’s syntax, other times it’s logical decisions and patterns (or lack of) that led me to write code in a certain way. Code is also tested multiple times in multiple environments, and it’s also extremely important I write and design code in a way that can work no matter what else gets thrown at it (or later upgraded to something else). But all that said, the scope of work I can do (and what I know) is growing daily, so I’m able to deliver a lot more value month over month. I can also help carry other programmers “over the line” so they are able to finish and collectively we can deliver more value which is the real important business factor.

To The Outside Looking In

I was thinking about what my experience so far translates to the common person, (maybe my family or friends for example). To the outside world, it feels like nothing is different — I’m sure most people continue to see me a guy “working on websites”. Some of my friends or acquaintances will even show me websites they made with React or Wordpress and ask me if they can do what I’m doing. I’ll act impressed, but then think — why am I different? Why am I worth potentially six figures (or more with all my 'training')?

I think the thing that’s different about me now is that I can actually build features and ideas that are game changing for businesses, especially those trying to be innovative. My past self might have been building websites that were more “brochure based” (like marketing pages, informational pages) and while they may have been using “cool technology” like Wordpress or React to make that happen; I could never confidently say that I could build a library like React or Wordpress. In fact, my old self probably couldn’t even read the code that made those libraries. If you asked me to build SquareSpace back then, I wouldn’t know where to start.

Better Experience

However, now — with the experience I have (and continue to gain), I feel like I’m reaching a point where I could help make innovative products there that the world can consume that are built by large teams of programmers. Even if I went solo again, I’d still have the knowledge of how to build large projects and find good people to work with together (and help them be motivated) so that we could make some cool passion project that could become an income stream (or boost) for us all. That’s REALLY awesome to me.

Maybe what I’m trying to say in simpler terms, is that I feel like I’m way more confident that I can reach the finish line for big projects — because I deal with issues/failures/bugs so much on a day to day basis I’ve gained the ability to just power through and carry onward as a resourceful person.

Maybe I don’t know all the best coding design patterns, data structures/algorithms to make code the absolute best it can be right now, but I’m confident enough to say I can figure that stuff out. I have many times, and again whenever I feel “impostor syndrome”, I just look back at everything I’ve done so far and I feel like a “rockstar” again.

It's Not About Being "A Rockstar Coder"

But it’s not just about being a “rockstar” to me, it’s really just continuing to cultivate this 'better' experience for myself. I’d love to keep working at my current company, but I’d be naive to think that’d always be the case. So how else do I keep this experience for myself and continue to build upwards? That’s really what it’s about - not going backwards, but forward. I think for now it’s just continuing to practice.

Here are some bullets on the type of 'self culture' I'd like to keep going for myself so I'm always improving (you can copy and paste somewhere if you like it too):

  • A great coder isn’t just someone grounded in theory, it’s someone who dives into code they don’t understand, make sense of it, and then make it better — as often as possible.
  • A great coder reads the theory, but then tries it out, and then finds a few other theories, tries those out too and compares/contrasts.
  • A great coder tests his or her work.
  • A great coder refines their own fluency / understanding of code on a daily or iterative basis (without ego getting in the way).
  • A great coder finds other great coders to work with, and “dives in” to help unblock anyone who gets stuck along the way.
  • A great coder attempts large projects, not just sticks to his or her own comfort zone.
  • A great coder dreams, is passionate and looks to solve real world problems, not just make brochures for a website using a new tutorial or framework.
  • A great coder bends that framework to the max to make their passion project a reality.
  • Finally, the great coder is not someone who sits on their “butt” — a great coder is agile and moves fast to make things happen. (Obviously that last part could be hard, but it’s the principle that matters).

These are all the lessons I’ve learned in the last 10 months. I’m surprised that 10 months have flown by so quickly, but it also feels like 10 programming lifetimes to me. I’m eagerly awaiting the next 10 months haha. I definitely feel like I’ve leveled up each month, whereas before I’d probably have leveled up each “year”. So I highly recommend for anyone reading who might be still working in a small role to aim higher. There’s a lot of benefit.

The Downsides

You might be wondering if I think there’s any downsides to working in a large team.

YES — there are.

I think if I hadn’t built up my experience learning to code in smaller teams or as a solo developer in my previous years of work, I probably would not be ready for working in a large team.

Large teams require COMPETENCE. You are allowed to fail in a large team, but you MUST show you have competence at all times. That’s not easy to do because it also requires foundational programming skill (including knowing languages, frameworks, tools), being code “literate” (meaning you can read, understand, critique, write, improve), and ability to clearly communicate you have ideas worth defending that show you can move from failure to success over some period of time. Again, a tall order.

I’d also say large teams require you to keep your own ego in check (basically also have a thick skin). As much as I tell myself I’m “good at programming”, I have to accept sometimes I don’t know something — yet, and others may point it out (sometimes harshly).

There’s also always going to be other people who get praise and recognition instead of you, even if you do everything right.

So just be willing to go with the flow, and while it’s fine to have expectations, it’s better to have expectations of yourself, so that you are improving with or without the organization. I might have a stupid day or so, but I also learn fast and do my part to use any feedback to just get better — even negative feedback can be a blessing in disguise. Again, though — tall order.

So basically, you need competence and a sense of maturity to work in a large corporate team. It’s hard because so much in corporate seems like things are unfair and seem broken, but it’s your job to make things still work for the assignments you are involved in. So while the upside is that you get better at solving problems and coding knowledge; the downside is you may hurt your mental health (and physical health). Your relationships may also suffer. That’s the true DOWNSIDE.

Take Care of Your Health

My solution to all that is to ABSOLUTELY take advantage of the benefits your company or team provides you with including vacation days, mental health breaks, work from home culture, etc.

Ultimately take care of your own health — because if you don’t, then none of the stuff I’ve talked about so far even matters. Being healthy is probably way more important than leveling up a lot in programming.

You can still level up at your own pace, but if you want to work in a large team and get the “constant level ups”, you need some kind of framework — where you have the ability to still keep your health in check — e.g. for me I do use my vacation times, I regularly take breaks, I work from home, I exercise and eat clean. PLUS I’m super NICE to myself when others are mean; if I have a bad day at work, I give myself a different day to enjoy my favorite stuff like good food, video games, a good study session, a nice walk/jog/workout or hangout with family and friends (even if just online given the pandemic).

Conclusion

Ultimately I think for myself in writing all this stuff (and sorta the TL:DR conclusion), I think in the last 10 months, I’ve definitely learned how to be a better team member as a programmer. I wondered if this had value as a statement, and I think it definitely does.

While anyone can learn to code, it’s way harder to code to solve real world business problems, and then even harder to make the code work with other code written by other people. In my experience, most people just feel more confident working on their own in solo; but to me that feels like a comfort zone.

All About Teamwork

You get challenged harder when you have to work with others and make things work for a large project.

Build Competency and Confidence

Being able to complete large projects builds competency and confidence; the confidence that you can build anything you really want to in this world — and that’s actually the real million or billion dollar proposition. So don’t give up if this is you on your own journey; just protect your mental and physical health as well as your relationships with a framework that works best for you, and then keep going forward. From the last 10 months so far, the payoff has been extremely worth it and I am excited for the future!

Stay coding friends!

Vijay

Copyright © 2022, Vijay Menon