#100 Days of CodeSmith: Coding as Character-Building
Tags: programming, productivity, codenewbie, devjournal
Published: 2022-05-05 21:27:17

After two months of preparation, I'm finally ready to start [CodeSmith](www.codesmith.io)'s full-time immersive program next Monday, May 9th, 2022. I'm logging my daily learning and practice over the next 100 days, from pre-bootcamp to post-bootcamp job interview prep in [Github](https://github.com/kaizengrowth/100DaysOfCodeSmith) and sharing weekly posts here.

- [Notes](https://kaizenpath.notion.site/100-Days-of-CodeSmith-506e9800af2945f581b4f0c04135502c)
- [Code](https://github.com/kaizengrowth/100DaysOfCodeSmith)
- [Learning Log](https://www.getrevue.co/profile/puppynomadic)

In order to jump start a lifetime habit of daily coding, I committed to the #100DaysOfCoding initiative on [Twitter](https://www.twitter.com/puppynomadic), along with my friend [Mariko](https://github.com/MarikoIwata/100daysofcode). We are also hosting a weekly Women's Algorithm Group on the [#BadAssWomenOfCodeSmith](https://share.codesmith.io/csxslack) Slack channel, to work on progressively more challenging Leetcode problems.

<br/>
<br/>
<br/>
<br/>
<br/>

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qs2k4n4xuocrofi6s1gp.gif)

----

## Coding As Character-Building

Beyond a path to a higher paying job, I'm committed to rigorous daily practice of problem-solving because I also see it as an important journey for personal, mental and emotional growth. I believe that developing the kind of patient, persistent problem-solving mentality necessary for software development is a character-building exercise that is valuable as an end in itself.

Here are eight virtues that I'm working on in the journey to becoming a good software engineer:

1. **Discipline** / Work ethic

2. **Goal-setting** & Reflection

3. Dealing with **failure & frustration**.

4. Practicing **resilience** and **patience**.

5. Overcoming fear and anxiety. Cultivating **humility ** and stoicism. Ego is the enemy.

6. **Organization** skills. Practicing **clarity** and order in mind, action, and environment.

7. Systematic self-improvement (**Kaizen** 改善)

8. **Community** relationship-building:  _Supporting others in the dev community, and realizing that this mutual gift passed down through the community is what makes it all work..._

_Codesmith embodies #8 more than any other space I've ever been in._

---

In the process of making a career transition to coding, we take accountability and responsibility for our own life, to make ourselves stronger, more capable, and more able to provide for the people we love. We take a huge risk, and we push hard to meet the demands of that risk.

In doing so, we are giving ourselves the opportunity to earn trust in ourselves.

The trust that one earns through hard work — that _real self-confidence and self-respect_ — is as valuable to me as the 21st Century Gold Rush salary promised at the end.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uux04ptm5h84ghvrz9es.png)


---

## Coding As Self-Healing Practice

As a former nonprofit community organizer, freelance writer and teaching artist, who spent most of my twenties working with homeless youth and undocumented immigrants, I felt a calling to do work in the social sector due to many of my own traumas growing up. However, after years of emotional burnout doing work that is immersed in the very subjects that cause me the most personal pain, I realized that I need to use my mind in a different way or I felt like I might not survive into my forties.

I've found coding to be incredibly therapeutic. It's an amazing feeling to be lost in the chase, focusing 100% on just solving a bug. 

Here are a few analogies I've found between coding and working to heal your own trauma, and take responsibility for resolving your own shit, so that you can be a better person, and not pass your pain to others.

Above all, coding is a systematic process of: 

1. **Gracefully** dealing with error messages.
      LIFE IS THE SAME.

2. **Persistently** chasing down deviations between expected value and actual output, and identifying the source of your error.
      LIFE IS THE SAME.

3. **Resourcefully** searching the internet for helpful remedy.
      UNFORTUNATELY, LIFE IS THE SAME.

4. **Optimistically**, systematically testing out various possible solutions: hypothesis --> result, repeat.
      LIFE IS THE SAME.

5. **Pragmatically** patching up the problem with duct tape copied from the internet.
      MOSTLY, LIFE IS THE SAME.

6. **Conscientiously** ripping out the duct tape and refactoring the sticky part so it works invisibly without the ugly parts showing. Presenting a nice interface to encapsulate the gnarly implementation.(And writing helpful comments next to the all sticky messes so that others on your team don't have to muddle through your shit.)
      UNLESS YOU'RE AN ASSHOLE, YOU DO LIFE LIKE THIS TOO.


_Like many other students at bootcamp, in addition to a career transition, we are also going through significant life transitions. I think the mentality of a solid, clean software engineer can help with that too._


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mb31fc4ldfyun0xqcond.png)
<sup>I don't know who else needs to hear this. I just needed to know that there's more I can be, and it's in my power to make it happen. That even in a really messed up world, it's okay to want happiness for yourself. Hopefully, to better serve others.</sup>

---

## Happiness is in the Chase


According to psychological [research](https://academic.oup.com/jcr/article-abstract/40/1/1/1792205?redirectedFrom=PDF) conducted at the University of Missouri by Marsha Richins, [wanting things makes us happier than having them](https://www.theatlantic.com/health/archive/2013/01/study-wanting-things-makes-us-happier-than-having-them/267216/). Happiness is in the chase.

I feel extremely happy as I'm preparing to go through this coding bootcamp because I have concrete dreams that I am working hard towards every day, and a supportive structure to help me attain those dreams. 

_In so many ways, human beings can't design a happier environment than this._

So here's to the next 100 days!  🎉 🎉 🎉


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/adovwfubswjhoek9lnio.png)


----

**A note:**
This is not my first time coding. Like many other students at CodeSmith, I've been practicing on my own for some time, and I also completed another training program with [Per Scholas](www.perscholas.org) several years ago. I took a 2.5 year hiatus to go back into community organizing, in order to work on [passing a law](https://www.nycbar.org/member-and-career-services/committees/reports-listing/reports/detail/legislative-support-for-the-start-act) that deeply impacts people I love. After over two years of not coding, I felt like I was back at the beginning. I recently returned to programming by taking a class in C++ at [NYU Tandon](https://engineering.nyu.edu/academics/programs/nyu-tandon-bridge), and as a result, got admitted to NYU's Cybersecurity Master's program as well as UPenn's [computer science Masters](https://gradadm.seas.upenn.edu/masters/computer-and-information-technology-mcit-online/). While at NYU, I was hired as a data engineer for my professor's startup. 

However, I still don't have a strong enough foundation in programming. I have a lot to learn to build stronger skills in algorithms and data structures, and I need a lot more practice to become a more proficient coder, to understand how things work under the hood. CodeSmith states that it is an advanced-level bootcamp for those who are seeking to move into a mid-to-senior level engineering role. I also applied and was admitted to [Formation](https://www.formation.dev). I chose CodeSmith for the wonderful community I met on CSX, its in-depth live instruction that focuses on the "hard parts" of Javascript, and the very impressive open source projects that residents build.