Hackbright Week 0: Setting Intentions

Monday marks the beginning of an exciting new chapter in my coding journey: a 10 week software engineering fellowship at Hackbright Academy.

I happily accepted my spot in the program one month ago today (after much research and consideration — a post for another time), and since then I’ve been busy bringing myself up to speed on all-things Python. As I wrap up the technical part of the pre-course curriculum later today, I wanted to shift my focus inwards to set some intentions for my time in the program.

My hope is that by setting intentions I’ll be more likely to think, feel, and act in alignment with those intentions, even when the momentum of a busy schedule makes it easy for the days and weeks and months to ‘just slip by’. And I figure a little public accountability can’t hurt the cause.

So, here goes. It’s my intention to…

Learn as much as possible. Remember “Learning is hard work, but everything you learn is yours and will make subsequent learning easier.”  – Marijn Haverbeke, Eloquent JavaScript

Keep the big picture in mind. Through this program I’ll be working towards another much anticipated milestone: getting my first job as a software engineer. But my decision to learn to code has always been about so much more than getting a job — I want to keep those motivations top of mind as I continue to make decisions that will shape this path.

Be empowered to ask. Grow the self-confidence and self-awareness to ask for the help I need to be successful. Be it a clarifying code question or even something much larger, most people want to help, and being able to ask (especially for something specific) is going to be key to learning.

Make self-care a priority. Get enough sleep, eat good food, exercise often. Enjoy solitude to recharge. Recognize when stepping away will be more valuable than plowing through.

Stay centered in gratitude. There will be challenges and frustrations, and they can be overcome with the right state of mind. Appreciate this opportunity. Always come back to gratitude.

Be open-minded. Give the unknown consideration. Let ideas and goals evolve.

Help others. So many people, many I barely know, have offered me help and encouragement since I began learning to code. It has been one of the most unexpected and welcome surprises. I hope to be just as generous to the peers in my cohort.

Relax and have fun. Making progress doesn’t always have to be hard. Enjoy the present.

Reflect daily. Think about each day and identify what worked and what didn’t. Celebrate the successes and learn from the mistakes.

 

Snowflakes with Turtle Graphics

Happy Winter Solstice!

This year, in the spirit of the winter holidays (and in lieu of holiday cards), I thought I’d share a few digital snowflakes created with Turtle Graphics. Turtle Graphics is a Python module (a file full of handy code you can import and use in your programs) that can be used to create interesting shapes and pictures.

A wee bit of code:

Create_Snowflake

Please give me a shout in the comments if you see anything that looks a little strange here.

And voila! It’s starting to feel more like winter already. The first snowflake (below, left) was created using the code above. And with a few simple tweeks, endless combinations!

final code makes this   Another_Turtle_Graphics_Snowflake   And_Another_Turtle_Graphics_Snowflake

Check out the interactive edition of How to Think Like a Computer Scientist for more instruction on Turtle Graphics and learning Python. I started working through the book a couple of weeks ago in preparation for my next big coding adventure, Hackbright Academy (thrilled to start in t-minus 4 weeks), and I’m hooked!

Wishing you all a wonderful holiday season. Cheers to longer days from here on out.

Zero to Basic Programs: Resources for Beginners

A couple of weeks ago I wrote about why I want to learn to code. My goal for this post is to share more about what I’ve been up to, outlining a few resources that have been helpful along the way.

First, a little bit about my background with coding.

I’ve never self-identified as an especially tech savvy person, but I did grow up using computers and adapting to rapidly changing technologies. I’ve been working at tech startups in the California Bay Area for the last few years, by title in marketing and account management, but in practice in doing-whatever-needs-to-get-done (whether that’s acting as a project manager, training new employees, or just taking out the trash). I began dabbling with HTML and CSS while crafting some marketing emails a few years ago, but aside from those markup languages, I had never written a line of code before 9/1/2014.

Once I decided that I wanted to learn to code, I felt a little overwhelmed by the number of directions I could take my learning. After some initial analysis paralysis, I decided not to invest too much energy into determining what coding language to start with, but rather, to focus on just getting started. I learned to write my first few lines of code in JavaScript, had a lot of fun, and decided to stick with it.

I’ve been using a variety of resources to build my skills, discovering what works (and doesn’t work) through lots of trial, error, and repetition. Here are some of the resources I’ve found most helpful for getting started:

Code Academy. Offers gentle introductions to the syntax of many coding languages. I went through the HTML, CSS, and JavaScript tutorials. If you’ve never written any code before, I recommend starting here.

Eloquent JavaScript. Compared to Code Academy, this book gets much deeper, much faster. I’ve been hanging out with Chapter 5 for a little while now.

Coderbyte. Features programming challenges that you can solve in many languages. I have been working through the ‘easy’ challenges in JavaScript.

Mozilla Developer Network. An invaluable reference that I use on the daily! Studying the reference materials (especially for strings and arrays) helped me make some critical breakthroughs on the ‘easy’ Coderbyte challenges.

Stack Overflow. Have a question? People from all over the world are willing to help.

Girl Develop It WorkshopsGDI has a lot of resources for women learning to code. I’m fortunate to live in an area where there are a lot of local classes and events, and I go to as many as I can.

Meetups. Find one near you! My goal is to attend at least one code related meetup a week. I’ve met some amazing people at local meetups, many of which have offered (and continue to offer) so much help. The Women Who Code meetups are some of my favorites. It’s great to make learning social.

Onward!

Learning, Teaching & Empathy

Every time we learn something new and want to share it, we face these issues all over again — the desire to proclaim, to overturn received wisdom all at once — and the worse the received wisdom, the more vehemently we want to strike out. But if we are generous listeners and attentive teachers, we not only teach better and spread more knowledge, but also learn more, and enjoy ourselves more in the process. — Gershom Bazerman, Letter to a Young Haskell Enthusiast

When I’m not in front of a computer learning to code, you can usually find me outside. I’ve accumulated a long list of hobbies that serve as the impetus for me to get out the door, where, most importantly, the noise and distractions from day-to-day life slip away. Surrounded by fresh air, I can just be. Things make sense. I know what’s important. I am filled with gratitude.

A few years ago, I had a pretty cool opportunity to share my love for the outdoors with urban middle schoolers. I planned and led multi-day camping trips to some of California’s most beautiful public lands with the goal of introducing participants (most had never been camping before) to the wonders of nature. Photos highlights here.

I can’t count the number of times I pointed out something that fascinated me (like, really fascinated me), such as a spider spinning a web under our picnic table, only to be met with anything-but-fascination from the kids. Sure, I think spiders are pretty cool, but not everyone does. Especially if they are unfamiliar and quite possibly very scary! “Imagine how it might feel to experience ______  for the very first time” and “remember the last time you also felt ______” became my mantras. Teaching always went much more smoothly when I started from there.

That brings me to this blog. I started Pen, Meet Keyboard to record my experiences learning to code. My goal is to help my future self, and anyone else who finds it useful, remember what it’s like to be a beginner seeing and working through this stuff for the very first time. I’ve heard many people say that learning to code is easy, and I’d wager that most folks who say that have been at it for a good while now. Maybe they didn’t always feel that way, at least not at every moment every day. Hindsight has a funny way of helping us form generalities.

My experience learning to code over the last two and a half months has been humbling, fun, exciting, frustrating, exhausting, energizing, and exhilarating. Sometimes I feel all of those things in one day, or even in one hour. I used to think programming was magic, at least in the sense that it seemed like something I might not ever be able to do. I know differently now. This stuff is learnable and it’s for everyone who wants to learn it.

I plan to share some things I’m learning here, and I hope you’ll find them useful. Please call me out any time I start sounding like someone who wants to slay all of the false statements in the world. I’d be really grateful for your help.

When Starting is the Hardest Part

I’ve been filling the pages of paper journals since I was a kid. Sometimes I don’t know what I’m thinking or feeling until I pick up a pen and let my brain relinquish control to my hand. What comes out usually surprises me, and the resulting mess of words, though illegible, brings clarity and direction.

The first entry is always the hardest to write. A new journal, full of blank pages, has so much promise. It can be anything, a new start. The words that go on that first page set the tone for the entire book, and I want them to matter. At the very least, they should look like they were written by someone older than a second grader.

Instead of laboring over the words that will go on that first page, I’ve found that the most effective way to overcome this self-imposed pressure (no one reads these journals but me) is to skip the first page altogether and start writing somewhere else. Sometimes it’s a few pages from the front, or buried deeply in the middle. Often, I start with the journal flipped upside down or on its side. I continue writing my entries wherever I choose, paying no mind to whether they appear chronologically from front to back.

This process removes the barriers to getting started and gives me the freedom to come back to that first page whenever I’m ready. Funny enough, by the time I’m in need of the blank space on that first page, I usually don’t care what goes there. The rest of the book already looks like it was written by a second grader, so what does it matter?

I’ve found this anything-but-the-first-page strategy to be useful with journaling, and I’m trying to apply the idea behind it to other parts of my life. Trying something new can be really hard, and sometimes getting started is the hardest part.

I’ve been thinking about learning to code for a long time now, and it wasn’t until a couple of months ago that I actually started doing it. At first, there were so many unknowns. Do I really want to be a software engineer? What about UX or UI design? What language should I learn? What are the best resources to use?…

One day, with the help of a good friend, I realized that just like writing in my journal, it didn’t really matter where I started. The important thing was just to start. I’m so glad I did.

The rest, well, I’ll figure it out as I go.

Why I Want to Learn to Code

I’ve got a long list of reasons why I want to learn to code, and the more time I spend hacking on projects and connecting with people in the industry, the longer my list gets. Here are a few of my top reasons:

Learning to code is fun. I often joke with friends that my biggest fear in life is complacency. I seek out challenges because doing things that feel difficult (and sometimes scary) makes me feel most alive. I’ve been actively learning to code for a few months now (through online tutorials, books, blogs, local meetups and Girl Develop It workshops), and the process is humbling, exhilarating, and addicting! The more I learn, the more I want to keep learning, because, well, I’m having a pretty awesome time. I’m excited to enter a field where the only constant is change.

Technology is changing the world, and I want to use it to make a positive impact. My goal is to spend my time doing work that builds people up and preserves our planet. In the past, I’ve worked under the umbrella of non-profit organizations, a federal foundation, and a couple of tech startups, relying on passion, persistence, and interpersonal skills to advance important causes (e.g. food access, education, supporting local businesses) in my community. Now I’m eager to approach problems and bring ideas to life with more powerful tools — tools that can scale and reach more people.

Digital skills are job skills, and I’m serious about planning for my future. I have always loved making things. Whether it’s sewing a dress, building a bog bridge, or fermenting a mean batch of pickles, I enjoy the process of creating just as much as I enjoy the end result. I’m excited to start making things in the digital world, and I’m pretty pumped that there are a lot of ways to make a living in this field. But more than that, if I have an idea, I want to be able to execute. I want to have skills that give me options so I can spend my time on the things that are most important to me.

The list goes on. There’s so much upside and so little downside. I’m committed to doing this!