Taro Logo
Profile picture

Software Engineering Intern Career Development Videos, Forum, and Q&A

How A Software Engineering Intern Can Grow Their Career

An internship is a period of work experience offered by an organization for a limited period of time. In software, a software engineer intern tends to have stronger importance with more competitive pay and real projects to work on.

Software Engineering Intern at Taro Community profile pic
Software Engineering Intern at Taro CommunityPosted July 11, 2024

Getting over integration/end-to-end testing ‘fatigue’

Every time I complete a project (regardless of setting), integration (or end-to-end) testing is the task I least look forward to. In my mind, I’ve probably spent weeks building and individually testing each component, sometimes testing 2 or 3 components simultaneously. By the end of the project, I feel tired and just want to work on something new, so I rush to the finish line and call it a day the moment I get all my components working together. I’ve seen the course on creating a test plan. I tried implementing this, but as mentioned above, by the time I’ve gotten to this stage, I’m so fed up with the project where I just write a couple of basic tests and tell my boss I’m done. As much as I have an icky feeling shipping something I don’t know is fully working, I also feel so tired and just want to move on to the next thing. One solution I tried was using automated tests (sort of like TDD to a certain extent) - I’d set up some expected behaviors at the start of the project and run these integration tests at the very end. It’s great if it works - making it automated significantly reduces friction of running the tests, and you get to ‘eat the frog’ by coming up with a more comprehensive set of tests at the start. The bad part is it only works if you can get automated testing to work. Most times integration testing gets tricky to automate, especially if you can’t mock out stuff like networking code and databases. Automated tests also take time to maintain. As a result I tend to forgo automated testing. A naive approach is to apply my strategy but instead of doing automated testing, just do it manually. The issue is that it feels painful having to verify correctness manually. And it’s especially discouraging if you manually verify your code to be wrong. So what are some solutions that can help me get over that last mile? Any suggestions for some low friction ways to set up tests without using automated testing?

50 Views
1 Comment
Software Engineering Intern at Taro Community profile pic
Software Engineering Intern at Taro CommunityPosted August 1, 2024

How to make up for mistakes?

A few days ago, I almost broke production. Our company doesn’t have any formal CI/CD protocols. When we ‘push to production’ that would mean testing code on our local computers, then going onto our single production machine, clone our changes, test on the production machine, then merge to main. The dev team was incredibly small, but this process started failing when more people worked on the codebase. My manger strongly prefers merging one large feature all at once as opposed to merging changes bit by bit. Even though I pushed for the ‘one diff, one thesis’ approach, he pushed back on it. He would rather clone my entire feature all at once over making small changes. A week and a half ago, I finished my main feature. My code successfully worked on the production machine, but my manager kept pushing back on actually landing the code to production. I kept pushing for my manager to push my code but he kept extending the due date. Now that I’m close to my internship, he is asking me to push code. The issue is that and another dev were trying to push their features to production. The other developer went first since his feature was smaller, then it was my turn. When it came to merging my code, I made errors in resolving merge conflicts, which resulted in errors. I tried ‘undoing’ the commits by reverting changes (when I should’ve done a reset), which caused the commit history to become longer and more complex, making the situation worse. After rolling back commits, somehow even the old code wasn’t working. My team and I are working to resolve the issue, but I was really upset throughout the whole process. I’m frustrated at my own incompetence with version control, but I’m also frustrated with my manager for not listening to my suggestions, as I think this would’ve been prevented if I had integrated my code earlier and in smaller chunks. My team knows that it was a version control issue (as opposed to a code issue), especially since I showed them on two different occasions that my code works. How should I handle this situation? I definitely feel like I should apologize but how can I make up?

50 Views
2 Comments
Software Engineering Intern at Taro Community profile pic
Software Engineering Intern at Taro CommunityPosted April 16, 2025

How do you deal with poor coders?

I am assigned a project with a teammate and their code is really bad - lots of duplication, many 100+ (even going to 200!) line functions all over the place, unreadable variable names, hard-coded values and the list goes on. I don’t even know if their code works (I’m assuming it does because it compiles and his outputs make sense) but it’s really frustrating when I have to read through their code or integrate changes. Whenever we merge changes together, we always have to sit together to go through every single merge conflict. Recently I’ve started to notice regressions in our codebase that are extremely hard to debug. In these cases I’ve had to ask them to fix the problem. It’d be one thing if they wrapped their code into some interface that I can call and it works like a charm, but they literally put their code into some of the main classes I built, and I’m getting really annoyed by it. Partially because they “ruined” a class that I built by turning it into a god class and also because it’s hard to debug. I know that their code is refactorable because I’ve refactored smaller scripts they built, and it became much easier to change the code. I’m working at a research lab, so code quality isn’t a huge deal as long as you get results. I’ve mentioned several times to them to refactor the code but they don’t seem to listen (even after explaining that it’s hard for me to contribute since I can’t understand their code), though they seem to acknowledge their code is bad. I think they don’t come from a traditional CS background which is why they don’t care (or know) that much about proper engineering. How can I convince them that quality is important? How do I tell them (politely) that it’s because of their quality that we’re iterating much slower than before? It’s likely that I’ll have to deal with bad codebases at some point in my career. When do I suck it up and when do I actively address it to the team to do maintenance? What are some heuristics?

47 Views
5 Comments
Software Engineering Intern at Taro Community profile pic
Software Engineering Intern at Taro CommunityPosted December 18, 2024

How do you prevent logarithmic productivity?

Every time I work on a project, the amount of progress increases logarithmically. This means I start off really strong and I end off really weak. I’ve noticed this for a majority of projects that I work on. I think a big reason why this happens is because when my project is able to get 50-60% of cases (ie it works but don’t touch it), internally my brain feels like it’s done and I don’t want to work on it anymore. When I start off a project I get huge boosts in dopamine when I finish a part and get it to work. Over time there are fewer and fewer things to do and I don’t get as big a dopamine hit when I gradually finish up remaining features. This gets really ****bad when I try to think of edge cases, because it’s not entirely clear what needs to be done, and I don’t even know what edge cases exist. This has affected the quality of my work and I would like some strategies of keeping high output even towards the later stages of a project which involves less excited parts of work. I think this somewhat relates to Alex’s video on “sweating the details”, but I feel that the hard part is that I don’t even know where to begin. I don’t know where edge cases may. On a component level it’s not too bad, but when you’re doing integration testing and when the space of possible inputs is extremely high, it feels like you’re put in the middle of the ocean. As an example, recently I was tasked with writing a bot to draw an ordered set of lines, curves and arcs on a canvas. The input a vector representation of the drawing and the output is an mp4 recording. First 3 days went pretty well. In fact, I pretty much built the entire system and integrated everything. The annoying part comes to solving edge cases from integration testing. For the next 7 days I spent days kind of just sitting around, testing my system, and getting bored. I was waiting for my partner to finish his part of the system. What strategies are there to make my output more consistent? I tried doing a test plan but they tend to be really shallow because I don’t know how the system looks like/what edge cases look like until I’ve actually built the product.

41 Views
2 Comments
Software Engineering Intern at Taro Community profile pic
Software Engineering Intern at Taro CommunityPosted May 5, 2025

Is Your Career Just What People Think of You?

For much of my life, I’ve been hyper-focused on prestige and external validation, and only recently I found it to be damaging relationships. In college, I struggled to land good internships. When people asked about my experience, I often felt insecure. This past new grad job hunt was a very different story — I performed well and received multiple offers. But instead of simply being proud, I found myself mentioning the number of offers and how difficult the decision was in nearly every conversation. My close friends pointed out that our talks shifted from hobbies and everyday life to topics like leveling systems, career trajectories, and company brand names. When it came time to choose between offers, I exhausted every possible angle. I asked friends, family, mentors, and anonymous forums. I read countless blog posts in search of the “right” answer. But in retrospect, I wasn’t just seeking advice — I was searching for external validation. I wanted reassurance that my decision would be respected. This led me to reflect on a deeper question: Why do I want to be seen as someone who made the "right" choice? And the honest answer is that perception matters — especially in tech. In many ways, career advancement depends on how others perceive you. Recruiters scan for recognizable brand names. Visibility drives promotion decisions. Referrals come from those who view you as high-potential. Professional development courses often focus on improving how you’re perceived by peers and managers. In a system where your worth is often defined by the market, it seems rational to focus on how you're seen. That’s why I find myself highlighting my accomplishments and leaning toward prestige. I want to be seen as someone worth helping, worth investing in. I want future recruiters to see my resume and not hesitate. But in the process, I’ve started to value prestige and how I’m seen more than my own long-term goals and personal values. Choosing between offers this season forced me to confront this tension. One role aligned closely with my personal interests and growth goals; the other offered greater prestige and brand recognition. Making the decision felt agonizing because each reflected a different version of how I wanted to be seen. Conventional advice says to “stop caring what people think.” But is that even realistic when almost every system in tech (and the world in general) is based on what others think of you and how you're ranked?

40 Views
2 Comments
Software Engineering Intern at Taro Community profile pic
Software Engineering Intern at Taro CommunityPosted March 10, 2025

When to trust conventional wisdom when making career decisions?

tldr: I have an offer from Meta and a niche growth-stage (series D+) startup. My gutfeel is telling me to go to the startup even though it’s all against conventional wisdom to go to big tech, and I don’t know if I’m making a mistake. I got into a growth-stage startup that’s relevant to my background and aspirations to be a founder. Engineers talk to customers, work with sales and scope projects with PMs. These tasks are important skills for me. Meta is more siloed until E5, and even then it’s still not quite end-to-end. I talked to over 10+ engineers (including 2 friends) and all of them love working there despite the long hours. I’ve heard both the pros and cons and I know what I’m getting myself into. I aggregated all of the new grads’ starter projects and compared them with my friends at FAANG. My big tech friends say that the new grads at the startup are doing FAANG mid-level work as their first project. The team I’ll be matched to aligns very well with my strengths and interests. Whereas I won’t know team matching with Meta until later. Business is doing well. VC friends said there’s a strong growth trajectory in a hot space. Cap table is all the top VC firms and angels. It’s a stable company and few performance-based layoffs, in contrast my friends at Meta are all stressed about PSC. If I don’t take a risk now then when will I? However, it seems like every forum and well-regarded figure (Interviewing IO, Ryan Peterman, Dan Lu, even Taro, etc.) in the SWE space advises the opposite: join big tech over a startup for career growth and brand. Brand is especially important and is what’s holding me back. I don’t have any name brand companies on my resume. My friends with big tech have a 20-30% callback rate whereas mine is 5-7%. I might learn way more at the startup, but won’t be able to transfer these acquired skills if I can’t find a job in the future to transfer them to. Throwing away Meta feels like keeping myself trapped. This makes me question whether I’m being overly optimistic (even delusional) of the startup. I feel like I did reasonable due diligence and, reasoning from first principles, it seems like this is the better opportunity for me. I’m wondering if someone was in my position and regretted not going to big tech? Is there any more due diligence/questions I can do to reach a more definitive decision? Is Meta’s brand name worth more than career alignment or goals?

40 Views
3 Comments
Software Engineering Intern at Taro Community profile pic
Software Engineering Intern at Taro CommunityPosted September 10, 2024

How do flat corporate structures affect leveling at big tech?

I know a few companies that have pretty flat corporate structures. A pretty common example of this are quant firms - they usually only make a distinction between regular and senior SWE, with no higher levels. But this also happens at tech. For example, my friend at Palantir said that the hierarchy is pretty flat, so there’s no level distinguishing between them. I’m currently interviewing with a rocket ship startup and they seem like a great place for career growth, but everyone’s title is SWE. Most of their engineers are ex-FAANG, so talent is top notch. Having talked to multiple engineers there, they all agree that by their first 1-2 years, they’ve taken full ownership of a vertical in their respective teams and some even leading cross-team collaborations. Would this be considered top-end E4/E5 level scope? My worry with these flat hierarchies is that you’re able to demonstrate scope but you don’t have the title to match up to what you show. And while title is just a string, I worry that recruiters will use your ambiguous level against you? For example, if you’re an engineer with 2 yoe demonstrating E5 level behaviors without the title, how would recruiters level you? And a more general discussion: how do recruiters figure out how to place you in the correct interview loop? Is there a way to ask the recruiter to move up or down a level?

38 Views
2 Comments