Taro Logo
Profile picture

Debugging Q&A and Videos

About Debugging

In computer programming and software development, debugging is the process of finding and resolving bugs (defects or problems that prevent correct operation) within computer programs, software, or systems. Debugging tactics can involve interactive debugging, control flow analysis, unit testing, integration testing, log file analysis, monitoring at the application or system level, memory dumps, and profiling.

What do you do when you're faced with a problem that you can't solve?

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

So, I'm the only frontend developer on a mobile application. My boss is BE and so if I ask for help he just tells me, "im sorry but I have my own things, you need to figure this out". I've expressed concerns when I wasn't happy with that answer; but, he doubled down that I knew more about him than my problem and so couldn't help me.

The issue is, the things I have problems with are exactly specific to frontend, maybe I'm trying to do some data flow stuff and just want to bounce off a coworker. Or, I have to integrate some FE piece to the BE and since we're a 3 person (engineer-wise) startup, we don't have documentation or really anything besides slack messages to explain stuff.

This has led to me being forced to just white knuckle my way through problems. For the past year and a half I've been able to do this; however, I'm now facing more difficult problems, live-streaming, bridging native modules ( I work with RN ).

More recently, I got stuck on a problem where, I seriously contemplated quitting the company because I couldn't figure it out. There is a ton of pressure because we have daily stand up and I can only say, "I'm still working on X due to Y" for so long. And so I thought, what happens when breaking it down, trying to solve a simpler problem, posting online, talking to teammates, reading docs, just doesn't work? I seriously thought everything was spiraling out of control.

I honestly don't know if there is an answer to this problem. But I was truly feeling hopeless just blindly trying to solve an issue by googling, chatgpt, and hoping for the best each time I hit compile.

Show more

Unable to reproduce a production bug, what will be the repercussions?

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

Since a week I have been investigating a production bug that last occurred on 20th Sept 2023, and earlier in 2021, but unable to reproduce it in test environment. At times there's a transaction that erroneously overrides some database values, and I need to reproduce a similar transaction to see where in the code the database value is getting overridden. I followed the following steps:

  1. Got the request URL from logs for the buggy transaction, to see which UI page is responsible for it.
  2. Spoke to the user who performed that transaction if he remembers what he changed on that UI page. It was a POST request and only the URL is logged, not the body. He faintly remembers what he changed. The database history tells me what columns were updated exactly for that transaction, but those columns are not visible on the UI. Those were updated indirectly as part of the page save. But I have not figured out still in what scenario those columns will get updated in the database from the given UI page.
  3. Tried performing the same steps in test environment, but unable to reproduce. Tried for different scenarios by changing different fields on the UI, since the user doesn't remember what he changed exactly.
  4. Will next be debugging the code on my local system to get an understanding of the flow.

I'm worried - what if I'm not able to reproduce it? I often think that others will doubt my capabilities. Can I be put on PIP for this?

Show more

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

What do mobile testing strategies look like at top tech companies?

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

I work in as an iOS engineer. My current company is a startup that's scaling up fast. In classic startup fashion, testing was historically not a top priority here. As a consequence, we struggle with lots of manual QAing and low code confidence when modifying pieces of poorly tested legacy code.

This has improved in the past year simply by unit testing every new piece of code by default and by introducing unit tests in legacy code as we touch it, boy scouting style.

At this point, I think we need to step it up and I'm looking forward to formalising a testing strategy for our mobile team.

Here are some ideas I have:

  • In the realm of unit tests:
    • I want to introduce API contract tests because our back-end API lacks documentation. In these tests we'd unit test the way we build our requests to API endpoints, and we'd have a sample JSON response from the server to test that the app can parse it into our data models as expected.
    • I want to introduce localisation tests because our app supports many languages but we are always manually testing localisation. In these tests, we'd assert that the outputs of our formatting logic are the ones we want for different locales.
  • In the realm of user interface tests:
    • I want to introduce snapshot testing, because right now the only way we can test that our views are rendered as expected for different view configurations (for example RTL vs LTR, empty content, loading content, content in verbose languages, etc.) is manually.
    • I want to introduce UI tests (sparingly, only for key flows) because we have no e2e tests. Currently, key flows are tested manually and frequently to prevent regressions, which takes lots of time.

What other testing strategies can I propose to establish some standard we can use to further improve our code confidence, reduce bugs, and rely more on automated testing?

How do the top tier tech companies approach mobile testing?

Show more