Imposter Syndrome 2.0
Tags: rails, react, javascript, beginners
Published: 2022-12-12 18:57:05

In your first week of learning to code you will discover a common feeling among all software engineers, **imposter syndrome**. The almost inescapable fear that you do not and will never belong in the coding world. This feeling comes usually with learning any new material in a coding language. It's complex, foreign, and makes you step out of your comfort zone. Eventually, you come to accept and familiarize yourself with this constant never-ending building of knowledge off of previous knowledge and the _imposter syndrome_ that was once so prevalent begins to fade away. At this point, many will feel their battle with this mindset is over and that the worst is behind them. In reality, a new feeling of not belonging will arise. I call it **imposter syndrome 2.0**.

This variation of feeling like an outcast will come in the form of _debugging_. It is the frustration of believing your code should be functioning properly yet it remains broken. Spending what feels like endless hours looking for some flaw in the logic or a syntax error that is not being directly reflected in the error messages. You will have nights where you spend an entire evening trying to fix a bug but fail to make any progress. This is where the second level of imposter syndrome kicks in. Failing to find a bug breaking your code will lower your confidence and in return make you question your ability to code in general. I am here to tell you this is a **COMMON** feeling and you should be grateful for the experience! Why? Because it is in that rabbit hole of searching but seemingly never finding an answer that you learn the most.

```
 def update
        shop = Shop.find(params[:id])
        if shop
          shop.update(shop_review)
          render json: shop
        else
          render json: { error: "Shop not found" }, status: :not_found
        end
      end
```
In my latest project (a coffee bean website), we needed to create an update method to allow the user to rate a coffee shop out of 10. Before actually approaching the execution of the code, I told myself this was going to be a fairly easy part of the project and would not take much time at all (20-30 minutes max). Needless to say I was wrong and it ended up taking an entire evening and half of the next day in class to end up functioning properly. While immensely frustrating, during that time I researched and learned more about not only this particular issue, but also overall knowledge of rails and how the back end responds to the front. Without receiving this error I would have never taken so much time to research a particular aspect of rails that will now help me in future projects! It turns out, we were missing a parameter permit for a table in the backend to be passed through another table controller.

```
        def shop_review
            params.require(:shop).permit(:review)
        end 
```
All we needed to do was require the table of ":shop" **BEFORE** permitting ":review", an attribute of shop. 

The main point for identifying another variation of imposter syndrome is not to scare away anybody who wants to learn to code, but rather explain that _this is another common feeling that is not worth giving up over_. Do not view an entire evening working to fix one bug as a "waste of time". Instead, take it as an opportunity to work on your debugging process and to look at mistakes as guides to eventually achieve clean, functioning code!