Learn to code for social good: My philosophy as an artist & dev
Tags: devjournal, productivity, programming
Published: 2022-06-02 16:41:57

> This piece was written by [Sean Swanson](https://www.linkedin.com/in/seancswanson) (he/him), a Scrum Master and web developer of 4+ years.
 
Within tech, you hear a lot of different philosophies about who's good at the job or the “types” of folks who would succeed in the industry. The truth is, **anyone can succeed**. I think that should be talked about more.

In my 5 years of coding, I've met many developers who – like me – never imagined they'd become so heavily involved in coding. I certainly meandered a bit before learning to code. In fact, I was pursuing a career in **modeling** before deciding to become a **full-stack web developer** in 2017. (More on that later.)

Among other factors, what really made coding a compelling career choice for me was the fact that I could also use it to make a **positive social impact**. In a way, I learned to code not just for myself, but for others too.

Today, I'll be sharing **8 insights** I learned along my journey to coding for social good:
* [1. Embrace the plot twists](#plot-twists)
* [2. Use visualization to overcome uncertainty](#visualization)
* [3. Keep calm and debug](#keep-calm)
* [4. Align with your values](#values)
* [5. Be a lifelong learner](#lifelong-learner)
* [6. Make an impact, even after hours](#impact)
* [7. Be curious about the intersections](#intersections)
* [8. It's always the right time](#right-time)

Whether you're learning your second language or just considering learning to code, I hope you'll find something you can take with you on your coding journey.


<a name="plot-twists"></a>

## 1. Embrace the plot twists

For my undergraduate studies, I attended the Philosophy department at the University of Washington. It's the same department that the renowned martial artist Bruce Lee attended. Bruce Lee was pursuing an undergraduate degree until he realized his true calling was outside of academia. Like Bruce, I was also **occupied with other dreams** in that philosophy classroom.

> I'd been pursuing a **modeling career** since I was 18. After completing my degree, my plan was to model full-time, internationally. But before I could leave to work abroad, I was dedicated to finishing my undergraduate degree. 

Then came the first plot twist. 

While I was about to start my last quarter, a golden opportunity presented itself: to travel to New York for **Fashion Week**. I seized the plot twist and was fortunately able to move to online courses.

> The Fashion Week opportunity kicked off a new cycle of my life. I was traveling for modeling 1-2 months each season, then coming back home to work at a local restaurant I’d been working at for years. 

However, my long-time dream came with **unforeseen challenges**. It was difficult to save money. I always had this feeling that I didn’t have enough time or money to build a **sustainable life** on my own terms. Now that it had finally become a reality, I realized that modeling wasn't a long-term career for me, and had to **consider different options**. 

The idea to **learn to code** was actually planted in my head by a non-profit organization created by philanthropist and supermodel Karlie Kloss. The organization is called **[Kode With Klossy](https://www.kodewithklossy.com/)**. Their mission: "Kode with Klossy creates learning experiences and opportunities for young women that increase their confidence and inspire them to pursue their passions in a technology driven world." 

How amazing is that?? Learning that Karlie Kloss uses her platform and entrepreneurship to affect **positive change** sowed the seeds for many a-ha moments.

> With software booming as it is, especially in the Seattle area where I live, **coding not only seemed like an opportunistic path – but a *moral* one**.

Embracing a new path when you've outgrown another is something to be **celebrated**. You can't truly know if something is right for you without fully immersing yourself in it. I'm glad I went all in for modeling – and left it to pivot elsewhere. If I hadn't, I'd always be thinking, _"What if?"_ 


<a name="visualization"></a>

## 2. Use visualization to overcome uncertainty

There are **so many paths** you can take to learn software development. There's the academic path, the bootcamp, and then the, "I can just learn all this stuff for free from the internet and Discord" guerilla education route. It takes a very special person to take that self-taught route and see it through.

For me, the bootcamp made the most sense.

Considering the plot twist I'd just undergone with modeling, signing up for an intensive bootcamp for a career I'd only just started considering was a bit daunting. You can't just test it out to see if you like it. It's a **commitment** – and a costly one at that. You don't necessarily want to change your mind once you start.

> Before committing to bootcamp, I tried to balance my healthy skepticism with some affirming practices. 

I used **meditation and visualization** to imagine positive outcomes for myself as a developer creating software that helps people in a space that I would want to create in. I read and listened to stories about what developers' jobs are like, and the challenges and rewards that come with it. 

> After sleeping on it, and letting my brain chew on it for a bit, I had enough **reason to believe** I might like being a dev. 

One reason was that I recognized a moral imperative to contribute to **socially good initiatives**. I think we ought to pursue excellence to ultimately serve humanity well. Another reason was the opportunity to work with modern web technologies which is an evolving ecosystem that lets me exercise design and **creativity alongside analysis** to solve problems.

So I started to learn. The great thing about the bootcamp was that everyone who was there not only came from **different backgrounds** like me – but they'd all been very **intentional** about committing to the program. We were all there with full intention to learn and do well. 

After bootcamp, I was out in the wild looking for my **first job**. Like almost anyone who finds themselves in a completely new competitive environment, I experienced **imposter syndrome**. And again, part of what helped me get through this was visualizing positive outcomes through **affirmations** and meditation. 

I would vocalize statements to challenge negative thoughts and encourage positive change, such as: “I am a confident developer who feels a sense of belonging and fosters strong communication with people around me.” 

> I want to contribute authentically to the developer ecosystem for other people to also feel comfortable to come as they are. 

Part of the **growth process** means being okay with where you're at, open to making mistakes, and learning along the way. Ideally, people will meet you where you're at, if you're in the right place that's suited for learning. 


<a name="keep-calm"></a>

## 3. Keep calm and debug

The moments that bring me the most joy, as it might be for many developers, are those **a-ha moments** that come from fixing a bug.

When you're developing a software, you're **guaranteed to have bugs**. They’re a fact of life. In a sense, programming is a set of puzzles that never end. Part of what keeps me going though, is the dopamine release rewarded by your brain when you actually solve that problem! 

> My mental health may waver from time to time, but fixing a bug is a guaranteed mood booster no matter how I’m feeling.

There’s a **meme comic** that sums up what it’s like to code. In one frame, you're just a derpy dog at a computer who clearly doesn't know what they're doing. In the other, **you can control the universe**. 

![Dev meme comic](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m60b5ws5xtg65ryj01da.jpg)

These **two moods** are so true. It's the balance of these moments that **keep me going**.

> Bugs are telling me a **critical story** and I should learn to listen. Be prepared to investigate. There’s an art to debugging cryptic error codes, no doubt. 

Something that keeps me calm while debugging is to speak or write an explanation for the bug in **basic terms**. For example: “There’s a typo in that variable name and I wasn’t able to reference the value for a calculation.” or “I misunderstood what data type a function expected so the program was attempting to perform the operation on a string and not an array”.  

To me, it's important not to dwell on the fact that a bug was introduced, simply **acknowledge its purpose**. When you encounter an error, **take a breath**, keep calm, and debug. It's easier said than done, but you'll eventually reach that a-ha moment. If you can afford it, take some time away from a tough problem to return with **fresh eyes** (whether it's a 10 minute walk or three days).


<a name="values"></a>

## 4. Align with your values

My ethics system really drives my decisions as a developer. And when I was looking for a role, I knew **I wanted to do something meaningful** insofar as helping humanity.

> I think people ought to do things that align with their values and things that are good for society. To me, that is the way to a **fulfilling life**. And I'd happily take a pay cut to help make the world a better place.

Today, I work as a **Front End Engineer** and **Scrum Master** at a company called Dreambox Learning. At Dreambox, we make **math software** for kids. 

> Our goal is to radically transform the way the world learns through adaptive analytic software that analyzes a student's math performance in real time. Our engine crafts them a personalized curriculum of supporting lessons to help meet them where they're at. 

If software like ours were available in every school and zip code across the US, it would help to **level the playing field** when it comes to learning mathematics. To put it simply, the better comprehension of mathematics one has, the better their learning outcomes are going to be overall. Working on technology to **challenge oppressive elements** that are inherently built into our education system (such as racism, classism, and standardized testing) is both a true joy and **moral imperative**. 

To me, this is one of the most ethical ways I could participate in the tech space, because the product is so helpful, and it affects literally **millions of children**. The consequence of all these students excelling in math, at an extreme, could equate to more people making data-driven decisions to save humanity!

> On a smaller scale, I'm also able to make an impact on my team by helping others as a Scrum Master. 

In addition to my developer role, I **facilitate Scrum ceremonies** for a cross-functional team of 8 to 10 people to help create solutions in an Agile development framework. I love helping my team members find their voice, and am grateful to play a **supporting role** for them in their own coding journeys.

<a name="lifelong-learner"></a>

## 5. Be a lifelong learner

I sometimes consider myself to have learned to code later in life (at least, compared to some coders). But in reality, I was a young 23-year-old when I made the switch to software development. A similar thought about starting “late” crossed my mind when I was 25 and started exploring dance. But there are people who pursue **entirely new paths** much later in life.

> When I was in community college, I loved seeing the age diversity in the student body. Seeing a 65 year old retiree attentively taking notes in class made my heart so warm. 

My older peers inspired me. It takes **courage** to leave an old path and start something new. But I think I also saw a piece of myself in them– I'm also that **lifelong learner**. 

I know I could be doing something entirely different from web development in ten years. When – and if – that next journey calls me, I'm excited to begin again. And I think that constant willingness to **begin again**, and enjoy seeing your growth, is precisely what helps make someone a lifelong learner.

It's never too late to start learning new skills. And as a developer, being open to constant learning is essential to your growth. 

> No matter how senior your position gets, technology is always a step ahead of you – and you need to be a lifelong learner to keep up.


<a name="impact"></a>

## 6. Make an impact, even after hours 

> It's important to find a job that empowers you to contribute to causes that you truly believe in. But even if you don't find that during your workday, you can still make an impact after hours without sacrificing your **work-life balance**. 

With just a couple hours a week, you can collaborate with developers worldwide on an open-source software project. You can also use your unique skill set to **amplify awareness** for causes that really need it or leverage an org like [Code for Good](http://codeforgood.mit.edu/) to find nonprofits to work with.

I'm passionate about supporting marginalized communities. And whenever I get to do so with my tech skills, I'll happily spend those extra hours sitting at my computer. 

These days, **almost everyone needs a website**. Recently, I had the honor of building one for the dance collective led by my breakdancing instructor. I was happy to **show my support** for their cause. As a male breakdancer (breaker), I don't face much adversity on the dance floor, but that's not the case for all dancers. This collective, [Cypher Queenz](https://cypherqueenz.com/), offers a supportive community and safe space for women and non-binary breakers. They're volunteer-run and certainly have their hands full. One day, I noticed they didn't have a website, and offered to make one. Within a few days, it was live, and I hope it helps them **grow their visibility** and impact.

Outside of web development, I've also been exploring **graphic design** and **3D modeling**. In response to the war in Ukraine, I've created an animation called [**Sacrifice**](https://www.artstation.com/artwork/3qQ9gB).

I made *Sacrifice* in an application called Blender. Blender is this awesome open-source 3D modeling and art software. I personally like the break from coding, so I use a mouse and keyboard (and sometimes a Wacom Stylus) to interface with it. 


<a name="intersections"></a>

## 7. Be curious about the intersections

> The intersections between **different disciplines** add a lot of color to my life, and it can't be overlooked with programming! 

We just talked about Blender – and I don't make art on it with code, but others do. You can use **Python or a scripting language** to automate whatever you could do with a mouse and keyboard. The people who **generate art with code** are wizards to me. With just some lines of code, they can populate a landscape with thousands of unique trees and bushes and flowers in a fraction of a second. (If I were to do that manually, it would take me a few hours!) 

There are many artists out there who make art with code. I'm not sure that my journey will take me there, but if I could just indulge in sharing one cool artist I know about, it's [**Diana Smith**](https://diana-adrianne.com/). She works with **HTML and CSS** just like I do. But she doesn't just develop software. She makes full-on **"hand-coded" drawings** and portraits. 

You can even find connections between programming and dancing (or any physical training, for that matter).

> If you want to get good at dancing or web development, you've got to **practice the fundamentals** and know the components to **build fluency**. 

Like with any new language, building fluency takes a lot of time and intentionally applying learned skills. Once you are fluent enough with the tools to create something, like a web app or choreography, you've got to learn where its bugs are. After identifying the bugs, go and figure out how to solve them. Get in the habit of **asking yourself powerful questions** that beg for exploration. For example:
* Where in this program might I refactor my code for: speed, security, or reusability? 
* Where in a dance circle might I optimize my movement for: style, speed, or efficiency?

You're basically programming: your body is the hardware, and your discipline and regimen is the software. Ta-da! 

<a name="right-time"></a>

## 8. It's always the right time

In software development, we have a concept of the **happy path**. 

> The happy path is the most direct path between two points. It's a default path assuming no exceptions and errors. 

Just **like in software**, we don't always have the happy path in **real life**. Our paths and careers can take **winding turns** at any point in our lives. 

All of life is a learning process. No matter your background, the moment you decide to learn code, is exactly **the right time**. You're never too early, and you're never behind. Like me, I hope you'll find the right people and places to support you on your path. 

> **Liked this piece?** Don't miss any of our other blog posts about coders' journeys! Scroll down to subscribe to our bi-weekly newsletter.

*Happy learning!*

### Continue learning about coding on Educative

* [Coding for social good: 7 companies you should know about](https://www.educative.io/blog/coding-for-social-good?eid=5082902844932096)
* [3 philosophies that influenced software development](https://www.educative.io/blog/philosophy-software-development?eid=5082902844932096)
* [An introduction to full stack JavaScript development](https://www.educative.io/blog/fullstack-javascript-introduction?eid=5082902844932096)

### Start a discussion 
What are some similarities between artists and developers? Was this article helpful? Let us know in the comments below!