tl;dr

  1. Discover how you learn best
  2. Be kind to yourself
  3. Set goals, and revisit them regularly
  4. Focus on the basics
  5. Get involved in the community


Full story

Many of the core learnings I found helpful when first beginning my journey from general manager of a coworking space to front-end developer continue to help me today. I’m excited to share them with you, in the hope that you’ll get something useful from them too! I talk about my path at the beginning of each section, but feel free to skip to “The Takeaway” section, this is the key insight.

1. Discover how you learn best

This was probably the most difficult for me to figure out, and accept.

When I decided to learn to program in 2013, bootcamps weren’t really a thing and today’s prominent online resources were buggy or non-existent. I started learning back-end development, specifically Ruby on Rails, which was dreadful. There were a lot of bad resources out there and I kept coming across conflicting information. I was too green to know which resources were quality, and to know the difference between correct and incorrect information. Eventually I switched to PHP, which was a bit better. The PHP community was very outspoken, and being a more opinionated language meant code looked relatively the same across resources. At this time I also decided to learn some JavaScript because it kept creeping up everywhere.

After a few months I couldn’t deal with the constant feeling of defeat and confusion. I wasn’t grasping concepts everyone else kept saying were “simple” and “easy”, error messages didn’t make sense to me. Everyone seemed to be an expert at something called “debugging”, but I didn’t even fully understand what the code I wrote was doing. Google and Stack Overflow were extremely overwhelming. It became too much and I took a pause on programming.

Eventually, I started learning again in late 2014. This time I decided to focus on front-end and registered for the Front-end 101 class at New York Code + Design Academy. I didn’t pick up many new skills, but I gained validation of what I already knew and this made the course worth it. Turned out, I needed validation! I needed to hear someone else tell me what was wrong with my code, what was correct, and what knowledge I should seek out. I needed someone to help me learn how to learn programming and be a sounding board.

At the same time I also signed up (in most cases for a second time) to Coursera, Codecademy, and Treehouse classes. These worked a little better this time around but only to an extent. I’ve literally quit every Coursera class I’ve started except Dan Ariely’s “A Beginner’s Guide to Irrational Behavior“. This time around I finished most of the courses I started on Codecademy and Treehouse, but didn’t gain much in terms of being able to then apply the knowledge to my own projects - something was missing.

Around this time I realized I needed to dedicate more time to side projects and my day job was overtaking my “learn to program” time, so I saved up enough money to cover my bills for a few months and eventually quit. At this point I applied to a bootcamp (MakerSquare), and was told to practice a couple things and reapply for the next cohort. While prepping for my follow-up interview, I landed a paid internship instead and accepted it immediately. It’s the best thing that could’ve happened. The majority of what I know now, I learned during that time.

These experiences helped me figured out how I learn best. It took a while!!

Turns out I’m the type of person that needs constraints to get creative. I need a schedule, and I need someone around to be a point of reference. I need someone to point out what’s good and what needs improvement - especially when I’m learning something that pushes me way out of my comfort zone.

For this reason, after 3 years as a front-end developer, I applied to grad school to pursue a Masters in Computer Science (I start Fall 2018!). Returning to my interest in back-end development, I’m now looking to improve this skill, learn core computer science principles, and work on research focused on web accessibility. Some people could teach themselves this on their free time and that’s amazing, but that’s not me, and it’s okay.

The Takeaway:

Take some time to figure out how you learn best. As a developer you’re constantly learning, constantly feeling a bit uncomfortable, and constantly having to come up with creative ways for solving the problem you’re given. Knowing how you learn best will help you whenever you have to pick up a new skill and improve your communication skills when it comes to asking for help or voicing where you’re stuck. When you’re working in a team, this can be extremely helpful because, by sharing how you learn, your teammates will know how to help you, and you’ll feel like you’re learning in a comfortable mindset.


2. Be kind to yourself

It has taken me a long time to accept that starting anything new comes with discomfort and hiccups as you gain proficiency. Being kind to myself for not knowing something or not how to as quickly as it seemed other people did, was something I struggled with. I was used to being the type of person that was able to soak up information fairly quickly and spit it back out with minimal effort.

Programming took me for a ride. It often made me feel depressed and very uneasy. Getting comfortable in the unknown and refraining from becoming self-deprecating was emotionally taxing to learn, but it’s also been one of the most freeing. I still struggle with this today, but it’s nothing compared to what went on in my head before. I’ve learned to hold myself accountable for what I can control and my own growth, outside of the path others are on, and to be forgiving when I do fallback on old habits (I’m only human).

The Takeaway:

You’re on your own path and no one knows you better than you do. How long it takes you to learn something, doesn’t matter. That you continue to practice and continue to learn, does. Learning is a skill on its own. You aren’t just learning how to program, you’re also learning how to learn, and doing so on your own terms. Be kind to yourself. When you get stuck, get up and stretch. When you feel like programming isn’t for you because you aren’t “naturally” good at it, remember that no one is born knowing how to program, the skill is developed. Chances are the programmers you admire have felt the way you do in their careers as well. Keep going!


3. Set goals, and revisit them regularly

I am naturally a goal oriented person but when it came to learning how to program, I couldn’t get anything to stick. When I first started learning to program my goals were all over the place. I had no clue what my goals should be. I didn’t know how to phrase them, break them down, or what made one goal immediate and another long-term. I had no frame of reference. Eventually I realized I needed constraints and needed to learn the difference between long-term, short-term, and immediate-term goals in relation to the developer landscape.

It took getting my first internship to understand what developer goals could look like. Reddit, Quora and general blogs online were not ideal resources for trying to figure this out - at least not back in 2013/2014, based on my search terms. Now there are sites like Free Code Camp that break things down into a roadmap and the Front-End Developer Handbook that lists out resources for the areas a front-end developer should aspire to be proficient in, amongst other very helpful information.

I struggled figuring out what realistic and necessary goals for myself could be and so I struggled making progress and staying on track. Goal setting is very important for me. It gives me a soft structure and helps me solidify the “why” behind my actions. It’s very easy for me to get caught up in the now and lose track of why I’m doing something. If left unchecked for too long, this results in me losing interest. Revisiting my goals is one way to prevent this from happening. However, I also revisit my goals because they change. My goals have changed as my interests have changed, and as I’ve grown as a developer.

My goals have ranged from:

  • Be able to set up the basic structure of a for loop (in JavaScript) without needing to reference an example
  • Learn why version control matters
  • Side project: build an app using AngularJS
  • Apply to x-number of companies everyday for the next week
  • Follow-up on my graduate assistantship if I haven’t heard anything by mm/dd

The Takeaway:

Learning to program requires consistent effort, and it can become overwhelming due to the breadth of information you need to learn in order to land a job. Setting goals is a great way to create a guideline for yourself that is specific to your time availability and what you are interested in learning. If you don’t know what you want to learn or what you want to work on (front-end, back-end, full-stack), make it a goal to figure this out. And remember to revisit your goals, as some will have been accomplished and others will be adjusted. By revisiting your goals you’ll also be able to better track your progress and make adjustments quickly.


4. Focus on the basics

Mustache, SASS, React, Angular, Vue, Ruby on Rails, Laravel. Heard of any of these? Throughout my time learning to program, all of these (and many more) have all creeped up and thrown me off. So many things to learn, such limited time and brain power!!!

Knowing the basics will get you far. Focus on this. All of the languages listed below add extra functionality on top of other languages:

  • Mustache => HTML
  • SASS => CSS
  • React, Angular, Vue => JavaScript
  • Ruby on Rails => Ruby
  • Laravel => PHP

If you focus on the basics, you’ll have a strong foundation, making new languages easier to learn. Trust me, change is a constant.

The Takeaway:

Focus on learning the languages the arrows face, and know them well. New tools are being created regularly but at their core they all have a base language. Know the base and you’ll be able to pick up the latest interpretation of it. You’ll also be a more resilient programmer because when you get an error message, a bug report, or things don’t look the way you expect them to, you’ll have insights into what’s potentially happening in the background and you’ll be able to find a solution quicker than someone who doesn’t. A substantial amount of time goes into figuring out why things don’t work, knowing the basics makes this easier to discuss and iterate on a solution.


5. Get involved in the community

As a POC and female who’s mostly worked in male-dominated workplaces, transitioning to a developer wasn’t a shocker. Being new to web developer I felt I could benefit from being part of a community to help me figure out what I should learn and hopefully get inspired when I hit dark times. I signed up for a few meetups, eventually attending my first Women Who Code event. Mind blown! I went to find out more about being a programmer, and that happened, but I also learned something about myself. Having other women around me who were also learning to code and who were CTOs and Team Leads was life changing. I was totally unaware that I was missing this in my life!

For the first time, I felt like I belonged and I was being heard. I wasn’t assumed to be at an event because a male friend or partner had convinced me to go. I wasn’t assumed to be non-technical or to be ignorant on a subject and spoken down to or spoken through. No one was staring at my breast or making borderline jokes.

Up to that point, I hadn’t really experienced a world where I didn’t experience those things. Women Who Code meetups became my safe space. I started seeking out other communities and removing myself from those where I made excuses for the way men treated me or other women and POC. And I also started trying to give back by volunteering and telling people about the communities I enjoyed being a part of. This also had an impact on other things, like how I picked the companies I wanted to apply to and what questions I asked during the interview process, what online programming communities I became involved in, and how I reacted to improper actions from others.

The Takeaway:

Get involved in all the communities you can. You can interact with it once and know whether it’s a fit for you or not. Online communities (Facebook groups, IRCs, Slack groups) are great for networking and learning from a really diverse set of people. In-person conferences, workshops, and meetups can also be amazing and lead to really great experiences. If you’re from an underrepresented group, seek out communities that are welcoming to your group(s) and give it a try even if you’re hesitant. Give different groups a try and figure out what you prefer. Make sure you feel like you can be yourself when you participate in these groups because the ultimate goal is to make friends, grow your network, and learn. If you don’t feel safe in the communities you’re a part of, everything else will be hindered. And, please make sure you pay it forward, give something (money, time, praise) to the organizations you’re a part of! <3