Profile picture

Productivity Q&A and Videos

About Productivity

Fighting Perfectionism as a Software Engineer (and getting important stuff done).

Data Engineer at Financial Company profile pic
Data Engineer at Financial Company

I’ve come to realize more and more that the greatest thing holding me back by far as a software engineer has been perfectionism. By perfectionism, I mean the mental attitude that says that what I have done isn’t good enough so I need to spend more time on it, or that I’m not ready to do something. This attitude is pretty much the opposite of Meta’s “Move fast and break things”.

Here are a few of the ways that this mindset has hobbled me throughout my career:

  • University (I studied Engineering): thinking I had to read the textbook and do all the assigned questions. My GPA suffered. In reality, my time would have been better spent doing past tests/exams and forming better friendships and study groups with other students to learn what was most valuable to know. I’m speaking from both a GPA-maximizing viewpoint, but also from a long-term viewpoint in the case of better relationships with classmates.
  • Immediate Post-University: Thinking that my coding skills weren’t good enough and that I needed to do a 6-month bootcamp which I did. Hindsight is 20/20, but getting my first job and working from there would probably have been better.
  • First job: Struggling with moving fast. I was at a tiny (<10 people) start-up and they wanted speed. I struggled with the pace they wanted because of things like writing formulaic unit tests that didn’t add much value and needing to constantly walk through my code with a debugger. I do believe that this particular company had unrealistic, unhealthy expectations for a newbie, but I also believe I could have moved faster.
  • General learning: Prioritizing online courses over side projects.
  • Job Hunting: Aiming to get done 150 interview questions before applying, rather than applying and doing mock interviews from the get-go.

I believe perfectionism is particularly harmful in tech compared to other industries since things change so fast.

Maybe this is better answered by a life coach or therapist, but what are some things I can do to limit the pernicious effects of this mindset?

Show more
Posted 2 years ago
268 Views
3 Comments

How can I be more confident being in Big Tech?

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

A year back I joined a Big Tech company as a mid-level software engineer. I had 5 years of work experience mostly in not-so-famous startups and I joined a large tech company after doing my masters.

It's been a year since I joined but I regularly feel like I don't belong here. I go through alternating waves of confidence and self-doubt. When I am not able to debug simple issues in a new microservice, I feel dumb. I feel like the senior devs on my team are just able to solve everything and I am still struggling after a year. I have been through a round of layoffs and re-org and am not sure about the kind of work I will be doing in the future.

I want to be promoted to senior engineer level but constantly get feedback that I am not assertive, opinionated, and take more time than usual to complete ambiguous tasks. I see everyone getting promoted around me and I don't understand why I can't seem to be improving. I am very motivated and willing to slog hard, but it seems like I simply don't get it or am not smart enough. Everyone around me just feels smarter and more experienced.

I feel like moving to a smaller company with not-so-high coding standards and ditching big tech because it will be more up my forte. I am aware that I won't grow there. It just feels frustrating to be stuck at a junior-mid level, 7 years after my bachelor's. But I also know I am not at that level yet.

Any advice on how to go through this problem to the other side will be lovely.

Show more
Posted a year ago
236 Views
3 Comments

Advice for Feeling recognized in the team, while switching domain (e.g. C++ to python)

Senior Software Engineer at Taro Community profile pic
Senior Software Engineer at Taro Community

Hi Everyone,

I am a senior software engineer in my company. We are an R&D company who work for the retail industry. I work in the Computer Vision and systems area.

I joined this company as a senior software engineer. Initially, the project that I was hired for had C++ work but that project was scrapped and we worked on a new product where everything was Python and lots of DevOps tools.

Now the problem that I am facing is all my colleagues who are software engineers know a lot about Python and these tools. I have never used them so far. For me, it was exciting that I was using these new tools which were very necessary in the current industry but I was anyways slow and my code quality and the way I designed things never matched the team's ways of things. I know everybody says that the fundamental principles are the same but I found there are some pythonic ways which are way better than a person who is learning it. Additionally, I was a Senior Engineer, so the manager and lead always came to me and said that they expected more from me. I was not contributing enough.

I feel it is normal to expect things from me as I am a senior. The main problem that I face is I don't feel myself important to the team. Most of the development or coding is done by the rest of the team. I even see they are given more design and senior role work too. I am given very small things. Honestly, even I don't know if I will be able to work on designing systems using these technologies. It affects my confidence and so I am never confident in my work, I have a constant fear that I can lose my job anytime. I don't feel proud of my work anymore now. I have learnt the new tools from last 1 year but I am unable to lead the team in any direction. There are some new concepts in Computer Vision world now like Embeddings which is completely new to me I am struggling to catch up on anything.

Our product is going live very soon, so the issues and pressure have started to grow. I am not even able to build any relationships with the real stakeholders in the team. They all love my other teammates and thus keep giving them work. Whenever I try to talk to them about any issues I do not get any encouraging reply, it feels like I am giving very basic suggestions.

Can anyone advise me on how to handle and perform well in the team and above all feel recognized in the team and organization? I am pretty sure many people here would have changed technology and should have faced similar situations , many would have recovered from this situation.

I always have very high standards for myself and have always been recognized as so in my previous companies. Lately, I feel I am not feeling very proud about my work, and I feel that is the main issue. I need some advice to improve in my field and in a consistent way.

Show more
Posted 10 months ago
218 Views
5 Comments

Assigned too difficult work, what can I do?

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

I'm mid level, new to the company.

I got assigned a chunk of a bigger project owned by a staff level engineer, let's call him X, who has worked on the product for a long time and has a lot of context.

Things that were new to me: the language, the tool chain, product context. The codebase is several years old.

My skip level manager (1 level above my direct manager) once encouraged that I should aim to finish my work in less than 2x the amount of time it would take X to do it (but besides this I received no pressure, or reminder to push for this target from managers).

This was overly ambitious. I worked longer hours and harder than anyone around, including weekends but still could not finish it in 3x the amount of time initially estimated.

The staff engineer overestimated what I can do too. He's very willing to explain but I had a hard time mapping his high level explanation to what happens at the code level.

I could not tell if the standard here is high or the task is too hard. So I leaned towards putting in more effort rather than voicing my concern.

I also did not have a good sense of "are these unknown parts of the code base grok-able with a little bit of time or do they require a lot of time?" to estimate time spent up front.

In the end I got some barebone thing out and he took over. Still took him a couple more weeks to get the thing finished. Along the way he solved some problems I'm sure I have no chance of solving in that timespan.

With this evidence I was sure the task was legitimately too hard for me and was comfortable letting my manager know my opinion.

Back up a little bit, when I started working on the project, my manager knew I could not stick to the original timeline set by the engineer and encouraged me to take my time to learn the codebase. What is puzzling is my manager did not tell the engineer about this unrealistic estimate. The engineer reports to a different manager and has been around way longer than my manager.

Maybe there is some politics going on that I'm not aware of.

Anyway this has been a very stressful experience.

What could I do better? What should I do to mitigate any harm done through this experience?

Show more
Posted 2 years ago
179 Views
2 Comments

How to react when code reviews take a lot of time and can get disrespectful?

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

I am on a tight deadline to deliver an impactful and complex feature. Whenever I send my PR out for review, my lead takes at least 2-3 days to start reviewing the code. Then, there are either a lot of non actionable comments or feedback on tests. So I started sending out a test plan in advance which also receives a lot of feedback. When I turnaround with a refined PR, the lead again takes 2-3 days for a review. I am worried that there are too many iterations for a simple PR and I am chasing the lead for reviews. When I hinted about the review taking time, I got a response that the code shouldn’t have had so many flaws to begin with. The code doesn’t have bugs, he was nit picking on unit tests that could be refactored for better maintainability. I agree, but should that be a show stopper?

I had my code reviewed by a peer and received feedback that there are no blocking changes and the code is mergeable. For a complex feature, I expected 1-2 iterations but each iteration is draining and am starting to wonder if I am really that bad an engineer. The biggest problem is that the reviews happen in person and the reviewer gets nasty and yells at times. He is extremely rude and after a few minutes he tries to explain that all the feedback is for my own good like I'm a kid. I expect some amount of professionalism but I feel disrespected because of the attitude. Is it normal for 2-3 iterations for a slightly complex PR and should I have to chase reviewers each time? Do you any tips on handling the behavioral issues?

Show more
Posted a year ago
152 Views
2 Comments

Explain day-to-day operations and decision-making in Meta

Staff Software Engineer [E6] at Meta profile pic
Staff Software Engineer [E6] at Meta

What is the prevailing culture within the organization, and how does it manifest in day-to-day operations and decision-making? The prevailing culture within an organization is the shared values, beliefs, norms, and practices that shape the social and psychological environment of a business. This culture influences employee behavior, motivates management styles, and affects decision-making processes. What are those for Meta?

What are the hidden things to notice and to worry about? For example:

  1. Cliques and Silos: Pay attention to the formation of exclusive groups or departments unwilling to share information. This can indicate a fragmented culture that hinders collaboration.

  2. Resistance to Change: If there is noticeable resistance to new ideas or changes in procedure, the culture may be rigid and resistant to innovation.

  3. Overwork and Burnout: A culture that consistently expects long hours and overwork may prioritize short-term gains over long-term employee well-being and sustainability.

  4. Turnover Rates: High employee turnover can be a red flag for issues within the organizational culture such as lack of growth opportunities, poor management, or a toxic work environment.

  5. Office Politics: Pay attention to how much politics influence decisions and progress. A culture heavily influenced by politics rather than merit can demotivate employees.

  6. Feedback Mechanisms: Lack of mechanisms for providing constructive feedback, or a culture where feedback is ignored, can indicate a culture not open to self-improvement or employee development.

  7. Diversity and Inclusion: Observe whether the organization actively supports diversity and inclusion, not just in policy but in practice, reflecting a culture of respect and equality.

Show more
Posted 8 months ago
148 Views
3 Comments

Learn About Productivity

Productivity is very important for a software engineers because it can greatly affect your career trajectory. Software engineers who can consistently deliver high-quality work within a defined timeframe can position themselves for faster career advancement. When you can execute tasks quickly, you build a track record of reliability.
When you can meet project milestones, it shows that you can manage your time effectively. When you are productive by optimizing your time, you’ll be contributing to the success of your team.
A strong flow state and ability to context switch are key components of productivity. If you can achieve a flow state, you can significantly increase your speed and efficiency. This is very helpful when you are dealing with a calendar filled with meetings.
You should also be able to manage meetings effectively. This involves not attending unnecessary meetings. It also means consolidating similar meetings to create more focused blocks of time for yourself. If your daily schedule has too many meetings, you run the chance of not being able to get any work done.
When you are in a meeting, you should make sure to follow certain guidelines to make the meeting as productive as possible for everyone involved. Make sure that a clear and detailed agenda is set for the meeting. You should share the agenda with all of the meeting attendees in advance so each of the attendees knows about the context behind the meeting. You should also remind people about the agenda document by pinging people in your company’s communication channels, like Slack or email. Make sure the meetings actually follow the agenda and give everyone in the meeting the opportunity to speak. This will lead to an inclusive environment where everyone is heard.
You also have to be aware of your own mental state to avoid burnout. It’s important to communicate with your manager and tech lead about project timelines and priorities to manage your workload and prevent burnout. Just because you can execute on the work doesn’t mean you are delivering the most meaningful work. Always be prioritizing with your stakeholders to make sure you are meeting the most important goals of your customers
Show more