Profile picture

Career Advice About Startups

Videos and discussions from Taro to grow your tech career.

How can I safely plan a difficult project for which I have little context?

Senior Software Engineer at Series C Startup profile pic
Senior Software Engineer at Series C Startup

Context:-

  1. My team is going to work on a new project which involves upgrading a service and migrating/enabling all of the dependents to use the new service.
  2. This service provides a business critical functionality for our teams and the new version attempts to solve a lot of high impact pain points with the previous version.
  3. We have just inherited this service and none of us have worked with it or any of its dependents before. We have some support from the previous team that worked on this project but only in a consultation capacity.
  4. This is a project that has been attempted multiple times by various teams over the years - unsuccessfully or with little progress. My perception is that it's going to be a difficult project with low-moderate chances of success.
  5. There is a lot documentation but most of it is somewhat outdated. There are a lot of PRs as well but these are for the unsuccessful attempts so I'm not sure how impactful it would be to go through them.
  6. The plans for the previous attempts only had internal milestones for the team and a single big-bang completion milestone for stakeholders.

Questions:-

  1. How can I identify smaller, independent high-level milestones that are relevant for external stakeholders?
  2. How can I come up with broad estimates and capacity requirements for the external and internal milestones if I'm not clear on what these milestones would require for completion?
  3. How can I think about de-risking this attempt of the project and improving the probability of success?
Show more
Posted 2 years ago
269 Views
2 Comments

Youngest and least experienced in team but high-potential, how to avoid the "least impactful projects" trap?

Mid-Level Software Engineer at Taro Community profile pic
Mid-Level Software Engineer at Taro Community

I am a middle backend engineer with 2 years of experience. I recently joined a very new startup(< 2 years) where my friend is my manager. He/she is a principal software engineer with 10+ years of experience. In the team, there are 2 other senior software engineers, each is 4 years older than me with 7-8 years of experience. When my friend invited me and interviewed me to join the company, he/she said that I might not be a senior yet, but he/she's sure that I will get to senior really soon because I have a habit of learning consistently.

Even though I only have 2 years of software engineering experience, I had previous 3 years of tech experience so I already know how to navigate company politics, communication, and have that business intuition. Also, in my previous company, I was the 1st backend engineer who had to build the codebase and infrastructure from scratch, so I am pretty confident that I am not a junior anymore. However, I understand that I still lack experience and knowledge on how to build clean code and how to build reliable and fault-tolerant system, and I feel like I could learn it from my manager, that's why I joined the current company.

The 1st senior engineer is pretty chill, he/she looks like he/she is not very ambitious to get impactful projects and looks like he/she's just happy to have a job to support his family. Besides, he/she joined the company 8 months earlier so I guess he/she already has some context. The 2nd senior engineer joined at the same time as me, and he/she looks pretty competitive. I feel like he/she's constantly sizing himself up against me and he/she's always making some little undermining comments such as "Are you used to code pairing? You look like you can't code", "Let me help you use a terminal", etc. Basically these comments are very subtle and masked as jokes or him trying to help me, but I sense that he/she's actually a bit intimidated by me.

My manager has a concept of "pairing", where he/she will split the team into 2 groups, and each group will work on a project for some time and then he/she will rotate it. In the 1st rotation, I was paired with the 1st senior and I did probably 70-80% of the project, but I was happy to do it because I learned a ton and my manager, during the 1-1 said that I was doing great and he/she told me he/she felt that the 1st senior is an underperformer. Despite this, I specifically let the 1st senior gave presentation of the project to the stakeholders because I felt that he/she helped me to onboard to the company so I'm ok with it.

The 2nd senior was paired with the manager and I felt that they did project that is much larger in scope and impact compared to me and the 1st senior. It means that now the 2nd senior has much more context than me. Right now I'm being paired with my manager, and the 2nd senior is paired with the 1st senior and I feel like I'm starting to get some context, but I'm just worried that when it comes time for me to get paired with the 2nd senior, he/she will hoard all the impactful projects and context and I will be stuck with really small scope. How to avoid the "rich gets richer, poor gets poorer" scheme? Thank you

Show more
Posted 2 years ago
245 Views
2 Comments

What kind of organisations should a person join at different points in their career?

Senior Software Engineer at Grab profile pic
Senior Software Engineer at Grab

Part 1: Before Joining an organisation

  1. How can one identify the best kind of organisation to join at different point in one's career? I understand that the advice to this question may not be a prescription for all, but how can one identify places that would help them to maximize their learning and growth. For several other people, different parameters may be important for them as well such as work-life balance. Personally, I feel that WLB is dependent on a person more than that on the organisation. Thoughts?
  2. Quite often we feel that growth may be fast paced at startups, but there can be startups that do and don't promote the growth of a person. Given that there is no list out there to check, how can one make the best suited decisions for their career, not landing at a place they should not be at? What kind of research can a person do before joining an organisation?

Part 2: After joining an organisation

  1. Given that a person has joined an organisation, what are the kind of signals that they can identify to see whether the organisation is supportive of their career growth and is indeed the right place to be, for them?
  2. On several anonymous portals, there are people from the organisation that will talk poorly about an organisation when things are not going good for them. Managers can quite often paint a really rosy picture about the place. How do you identify the honest signal from the noise all around?
  3. If you find an organisation not good for you after you join there, how quick is it too quick to leave? How much time should you spend there before you can make a judgement about the same?
Show more
Posted 3 years ago
229 Views
6 Comments

Appropriate to share standardized terminology proposal?

Junior Engineer at Startups profile pic
Junior Engineer at Startups

I'm a junior SWE at a small company which does not have a lot of standardized culture or process. A lot of inaccurate / non-standard terms get thrown around (for example, we call the entirety of one of our older apps the "backend" because of the way our repo is structured) and I've found that this has caused confusion in meetings, especially with new engineers being onboarded. Even though something like this usually only causes a 10-second confusion which is cleared up with follow-up questions, it feels like such an unnecessary inefficiency that could be easily resolved. Also, in general, I believe this can leak into situation where repercussions are worse like client-facing or investor-facing meetings, where for example a manager might call the old app the "backend" to a client, leaving them confused and thus unaligned on what's going on.

I typically wouldn't care about something of this scope as a junior, but it seems to me that the entire org would benefit from something like this, and that nobody else has addressed it nor will address it. So I've drafted a proposal for standardized terminology, with suggestions for specific terms to use and specific terms to deprecate in our company vernacular.

My question is whether it's appropriate to submit this proposal to my managers. It feels necessary but also not be my place / come across as aggressive. Of course it is hard to answer this question without knowing the specific company culture, but nonetheless, I would like to hear thoughts from seniors about how something like this would come across when coming from a junior.

Show more
Posted 8 months ago
219 Views
1 Comment

Thinking of Test Cases

Junior Engineer at Startups profile pic
Junior Engineer at Startups

A strong theme on Taro is that good testing distinguishes a good engineer from a great one. Thinking of good test cases is not trivial, and I would like to know how the great engineers at Taro approach testing.

For example, my company is working on a program (program B, say) that picks up and validates payment requests from program A and sends them to program C, which issues payments, after which program B notifies program A that payment has been issued. I have been put in charge of thinking of test cases, with the biggest concern being duplicate payment issuing.

I have only been able to think of 8 test cases that may actually occur in the program. I have been asked to think of 20-30, and I'm finding it quite difficult to do so. I've only written test cases that can occur assuming the program works as expected, i.e. in which the user does something unexpected. For example, at a certain point program B reads data from a file into the database and moves that file into a directory called "archive". I could hypothetically write test cases for the program's behaviour when the file did not successfully move to "archive", but intuitively this seems trivial.

I believe I probably am thinking about testing in the wrong way / have insufficient knowledge of testing theory. I approached it by starting with what Alex calls the "happy flow", the way the user is supposed to use the program. I then thought of multiple ways the user could mess up when using the program. My next strategy is to go through the code and see what could go wrong (a sort of "white-box" approach), but this is low-level and time-intensive, so I wanted to ensure that it is a good testing strategy. Most testing I've seen thus far has been "black box", i.e. ignore the code and just play around with different user actions.

As always, the advice is very appreciated!

Show more
Posted a month ago
209 Views
8 Comments