Internships and Capstone

Long time no see. In the last two months a lot has happened. I interviewed at seven different tech companies for software engineering internships, I got an internship at Chef Software, I developed and deployed Lights on WA, my a capstone project, and I saw the grand canyon for the first time. So it’s been a great couple of months.

Internship Interviews

Ada Developers Academy has great selling points, but the two that definitely make it rise above the fray are the facts it is free and that there is a built in five month internship for those who go through the program. The internship is critical as it gives you real world experience at a local software company before you have to start the job application process. It also gives you the opportunity to apply and do technical interviews with the guarantee of a job at the other end before you have to do more high-stakes interviews which is amazing practice. We were all a little more than nervous for our week of seven technical interviews and knowing that at the end every person would get an internship made it a lot easier. I interviewed with a range  of different companies both small and large. Some of the interviews were purely technical, some situational, some just talking about why I was interested in coding. All of my interviews were positive experiences, even though I came down with a cold and was pretty ill and could barely speak or get the ringing out of my head at the beginning of the week. Technical interviews can be scary for people coming from different fields. In a lot of cases it’s basically someone asking you a logic puzzle and watching you speak and write on a whiteboard while they judge you on how and if you solve it. There’s a lot more to it than that but it can often feel like a quiz. It’s really about how you build trust and candor with the interviewer in a short amount of time and do so in order to solve a complex problem. Some people also just like to see how you react when you draw a blank — do you panic? do you pull through? So any situation in which panic is an option can be stressful.

I ended up appreciating the interviews and to my bemusement found that the ones with harder questions and interviewers that pushed me to think more deeply about efficient solutions were the interviews I enjoyed the most. I am happy to say Chef was one of those interviews.

In order to make interviews less daunting and more silly our cohort added some little traditions to the process. We all wrote each other notes to be opened before each interview and had a costume box where we dressed up after each interview and took disposable camera photos.

IMG_7622.jpeg IMG_5096

About two weeks after our interviews were finished we found out our placement companies. I was overjoyed to find out I’d be interning at Chef. I had found their interview engaging and challenging, they are a remote company, they pair program, they are a DevOps company which is a deep area of interest for me, and they are Open Source.

Funny enough the morning I found out I’d be interning at Chef, I met up with one of the Adies who works there now for coffee. I am excited that two people from the program are already there as full time engineers and love the company. It has been hard to explain exactly what the company does to my family and non-tech friends (all my friends) but for most software people Chef is a leading name in DevOps or Development-Operations. They produce software for software companies that makes the deployment and configuration process easy and even fun. The only friend of mine I know in tech was very excited when I told him this is where I’d be interviewing as he handles the Chef recipes at his job. Chef is written in Ruby (yay!) and a functional programming language called Erlang. One of my goals and wishes for the next six months has been to learn a functional programming language so I’m excited for the challenge. Chef’s frontend will also be a challenge for me in learning Angular 2, which is brand new and daunting. I’ve already started to learn a little Erlang and transfer to the text-editor Vim over the last week and it’s a whole new world to me. Our cohort has three weeks starting tomorrow to “ramp up” before internships start in April. I’ll be using that time to dive into more Ruby, Chef Recipes, Erlang, and Angular before I start.

Note: I also found out last week that I was accepted as an Opportunity Scholar for Railsconf and will be attending in May! Chef is a sponsor so I hope I’ll get to see Chef employees from different parts of the country there.

Capstone Month: Lights on Washington

And all this brings us to Capstone Month. After interviews were done we quickly started working on our four-week individual projects. However daunting, capstone proved to be the most fun I’ve had at Ada (don’t get me wrong, it was all fun!) I have been incredibly impressed with all the ideas and deliveries that my cohort pulled together over these four weeks.

My project started with thinking about campaign finance in the Washington State. I wanted to make donations and candidates more transparent. So I decided to take the data from the Public Disclosure Commission, which controls campaign finance in our state, and make it more accessible and host it on my own site. Easy, right? Well, public data is a lot more complicated than that. My first big problem was that I didn’t have easy access to the data. A public records request I put it took 3.5 weeks to come through. I had to build a web scraper to get all the data from the site.

Once I got the data and had a basic front-end with the help of some amazing Javascript libraries, the main problem and majority of my time was spent figuring out how to get so much data into production. I dealt with a litany of memory leak and performance issues that we normally don’t see in our Ada projects because we are dealing with hundreds of rows of data (if even that much), not millions.

In interviews we talk a lot about space and time efficiency without any practical experience about when this might be applicable. We tend to think that it’s just for interviews that we need to know the run time of different sorting algorithms. Through working on Lights on WA I started to see the immense value in having a basic understanding of memory, space, efficiency, and algorithms. I talked some about this in the presentation I gave on our final day. The slides can be found below and the website at lightsonwa.com.


I was very proud of how Lights on WA turned out. I talked to some friends working in politics in Washington who were enthused to pass it around. I am also proud about the fact it is a civic hacking project and that I learned how to get information from the government when they are slow to deliver a public records request. I definitely want to stay connected to the open data world that I experienced a little slice of and would absolutely participate in more side projects that had to do with making our data more accessible. Finally I am proud of how much I learned about performance and data structures. I am proud that I used the resources available to me to finish and exceed my MVP. The whole process gave me a lot of confidence in my skills and made me excited to dive deeper into DevOps in the coming months.

After internships interviews and capstone were complete, I got the opportunity to visit my family in Arizona and see the Grand Canyon for the first time. It was so beautiful I was breathless (and not only because of the 12 mile steep hike). I got to see sunset and sunrise over the canyon with my best friend, and take a second to breathe without thinking about runtimes or Travis failures. I return this week with a new sense of learning and optimism, which I’m really going to need as I go cold turkey off Sublime in my switch to VI.
IMG_6799.JPG
IMG_6805.JPGIMG_7642.jpeg

Jon Stewart, Comedy, and Craft

A short thought.

So I was on a few planes this week and I had a lot of down time to read and think. I finished Andy Weir’s The Martian. It was okay. Should make for a good movie. Anyway, I got to engage in one of my favorite down-time past-times: listening to a gajillion billion podcasts. Besides NPR, The Read, Another Round, Call Your Girlfriend, Slate, etc. (all the favorites), I decided on a whim to search for “Jon Stewart” in podcasts and dug up some old interview’s he did on Fresh Air and Bill Moyer’s show. I have watched Jon Stewart for as long as I’ve been interested in politics… so for the whole tenure of his time on the Daily Show. I have always felt a strong connection to his righteous anger on issues of corruption in the media and in politics. Sad about his leaving the show, I decided to listen to him speak about comedy and his time early on in the show. In this search, I came across an interview he did with Dave Davies in 2004 that struck a chord for me. Here is an excerpt from their conversation:

DAVIES: And you decided to go to New York and do standup […] And at first just got brutalized, as people do. And I’m wondering – you know, there are lots of people who are funny, that make their friends laugh, make their families laugh […] I mean, you were so funny, you had that brain working that way. What was it you didn’t know?

STEWART: What was I didn’t know about which?

DAVIES: About why didn’t it work? Why is being funny with your friends not the same thing as…

STEWART: Well, because it’s a craft, you know? It isn’t – there’s a big difference between having an analytical mind and being a good scientist. There is a craft to learn. And that was the biggest lesson is that it takes – again, it’s that idea of turning obnoxiousness into wit or comedy. You know, creating something from nothing is different from just being reactive at a bar. And you have to create the atmospheric conditions for comedy. Comedy is oddly enough very fragile and can be thrown off by, you know, a glass breaking or somebody talking or – you, know, there’s a lot of different elements to it that – and construction of a joke – you know, you have to create – one of the things about being funny life is the premise is already there.

This completely encapsulates my motivations and thinking as I delve further into projects in programming (and as I try to defend this divergent path to friends and family as well). There are lots of people who are sharp, who are analytically minded, who are the most creatively critical in a classroom. I was one of those kids. I’m an analytical person. However, being smart or analytical is exactly like being funny around friends in Jon Stewart’s case. There is a big difference between the potential and the profession. I think that in this year after my graduation, I want to build craft. What a word. Craft. 10,000 hours. I want to work hard at something that is intellectually exhausting and come out the other side two, five, ten years down the line, with a craft. As Stewart says, the biggest thing to learn is taking that energy and potential and turning it into something, producing something, and building something, and then channeling that something positively. I see so many similarities between comedy (purely, the most intricate and nuanced facet of language itself) and code similar to how I saw similarities between linguistics and code. And that comes down to craft. Craft is not a manual. It is not something that can be taught straightforwardly. It is an expert intuition, always moving and evolving, it is nuanced in its execution. When this craft is tuned and focused and then let grow through improvisation, it can be amazingly beautiful.

Wow, I got to go code some more.

tumblr me8m1h0m161qcmnsuo1 400 All the Jon Stewart GIFs you'll need as he leaves 'The Daily Show

Design and Creativity

I’m currently taking an intermediate HTML/CSS class with Girl Develop It. The class is being held at Adobe in Seattle. Wow! That office space is beautifully designed (I mean, of course, but still) and taught by the awesome Marcy Sutton who is basically everything I want to be later in my career in programming. I just talked about this for my Ada application video, but five years into my career I would love to find my place in my coding community, give talks, be an educator and mentor, and have a larger effect on the community when it comes to accessibility and inclusivity for others. Marcy is doing all that and is awesome.

I enjoyed the last HTML/CSS class I took with GDI and my websites are starting to move out of the 90s and into the modern era with a little CSS3 help: Screen Shot 2015-07-14 at 7.55.54 PM

And a 3-column design looks so pretty (ignore me and the donut)!!!:

Screen Shot 2015-07-15 at 8.49.54 AM

However, the class has me thinking a lot about “design” and what that means and if I would be good at doing it or even like it. I am not one of those people who think anyone and everyone can design or that art is not a deeply rooted praxis. This comes from being raised by an architect and having several industrial and graphic designers in my family. I have heard a lifetime worth of arguments over hexcodes, shades, good design practice, and the difference between all sorts of triangle shapes — 30 degrees is NOT 31 degrees and that you would insinuate that is an insult. I find design compelling, I do like art, but I’m not sure it’s really my strong suit. I have always liked spatial problems. Or maybe it’s just math — any problem with multiple variables and a restraint. I often imagine time constraints and word counts in terms of finite space.

I just don’t know if tweaking CSS and HTML to hack design on a website is exactly what gets me excited. Tweaking databases and data structures so that we get different and more accurate interpretations of results however… I could do that all day. I don’t mind cleaning data, because I love breaking down something large and complex. I think it’s so important to appreciate design and know how it works though and I understand in the abstract sense that the “front end” is not only design. I am excited to learn more about the whole array of computer programming topics.

I wrote a philosophy paper once in undergrad about Martin Heidegger’s Building Dwelling Thinking, which argued for carefully inclusive design of public spaces. Heidegger begins his book stating

We attain to dwelling, so it seems, only by means of building. The latter, building, has the former, dwelling, as its goal. Still, not every building is a dwelling. Bridges and hangars, stadiums and power stations are buildings but not dwellings; railway stations and highways, dams and market halls are built, but they are not dwelling places.

In my head right now, you could so easily replace “building” with “web app” and “dwelling” with “webpage” where it exists through the browser. We attain to an accessible webpage only by building but definitely not everything we build is accessible.

Design is so important. Just learning a few basics, like what a “hero” (large header at the top of a website) is and how to alter it to look good, what SVG’s are and why they are better than png’s, and all sorts of best practices that will make your content accessible to everyone. At one point Marcy told us, “You don’t need to know how to create tools from scratch, but just being able to alter a SVG file is helpful.” I believed it. Having a birds eye view of design will definitely make me a better programmer no matter what part of the process I find fits me best.

I’m so thankful for organizations like Girl Develop It that go out of their way to offer classes at discounted rates for people who can’t afford General Assembly or Code Fellows. They are helping women like me to be more informed about the field as a whole and introducing us to really cool spaces like Simply Measured and Adobe in Seattle. I would definitely recommend looking into it if you are interested. They are very welcoming and have scholarships to their classes.

You Cannot Stay on the Summit Forever

“You cannot stay on the summit forever; you have to come down again. So why bother in the first place? Just this: What is above knows what is below, but what is below does not know what is above. One climbs, one sees. One descends, one sees no longer, but one has seen. There is an art of conducting oneself in the lower regions by the memory of what one saw higher up. When one can no longer see, one can at least still know.”

– René Daumal

Inspirational quote of the day. A close friend of mine and current roommate is a mountain guide and brought home this beautiful book of pictures of mountains and quotes from climbers. This passage got me thinking about how climbing things is like achieving any new skill. Why even go to the summit? There is no final summit, just a series of ups and downs, so why bother? Coding and programming are part of this: “the art of conducting oneself in the lower regions by the memory of what one saw higher up.” Never stop learning. Never stop evolving.

Community Support && Mentorship Everywhere

I have been writing a lot lately. Not in terms of productive or technical writing but just scribbles here and there about little things, some poetry, some tangential prose. I’m reading sections of The Gloria Anzaldúa Reader lately and Anzaldúa speaks often to the power of writing. Example:

Why am I compelled to write? Because the writing saves me from this complacency I fear. Because I have no choice. Because I must keep the spirit of my revolt and myself alive. Because the world I create in the writing compensates for what the real world does not give me […] I write because life does not appease my appetites and hunger […] To become more intimate with myself and you.

Anzaldúa writes beautifully and compellingly, but it isn’t just from pure talent. It’s from a praxis in the way she held herself in the world and held others to be in the world. But that praxis includes a regimen of writing about personal and societal issues and using the writing as a way to stay accountable to yourself and others.

This week I decided to write thank you notes to all the people who have been so supportive of me this last year, especially to my mentors in my chosen switch from economics and international development to coding, programming, and tech. There are many people involved beyond my support network in Seattle as well. My online communities, specifically CodeNewbies, The Odin Project, and Free Code Camp have been great resources for me to feel welcome and easy into the language and culture of tech.

I have been particularly struck and humbled by the way women in this field build and cultivate community and are so welcoming of others into it. From what I’ve seen in the community so far, part of the reason this is true is because it takes a lot of support to make it as a woman developer. I have been so blessed to find amazing communities in Girl Develop It meetups, talking to women at community events, and all the great online groups for women. Let me just tell you, there are definitely women in tech. They are doing amazing work and often get overshadowed by the entire conversation about diversity. While there is still work to be done, sometimes I think that highlighting the work of those already there is also key to inspiring a new generation of women to study/stay in STEM.

Beyond all the direct support from family, friends, and my new community of women in tech here in Seattle, I’ve been surprised and taken aback by how many people have approached me since I put up this blog to give advice or connect me with someone who also codes. I have been struck by how much I get back by putting myself out there. I won’t lie, this past month since I graduated has been a little nerve-racking. I graduated from college with a degree in economics, I should be doing something besides washing dishes at a Jesuit house and staring at my computer, right? But here’s the thing: I love coding. I love the problem solving and that I actually get to build tools that will do awesome things with data. And I have the privilege and space given to me by a full-ride to college and a supportive and loving community of friends to keep at this and make something out of it. So I have to do that. It’s that thought, and writing, that keeps me coding.

Code on, and have a fantastic 4th of July weekend.

However! While your celebrating “independence” please remember that independence was not granted to everyone 239 years ago and the full rights and privileges of that independence are still not extended to everyone today. Some fun listening for this holiday weekend:

Howard Zinn & Democracy Now on Independence Day 

breathe in, code out

This week has been a jumble. I worked a lot at the place I wash dishes at the beginning of the week, and in between have not stopped staring at different things on my computer. I finished App Academy’s introductory materials and began to take their coding quizzes. I got through all ten “beginner” problems in one sitting, although it took me a while and I sure struggled. I felt so good after completing my reading but seeing

def Method
  #your code goes here!
end

really freaked me out. I took a breath in, and tried to breath out code. I was proud that I completed all the problems without looking at the answers. I mean I did Google (but only twice!) to find some techniques, but didn’t ever search out solutions. I was feeling a lot of euphoria completing the assignments and having all my tests go green. And then… I looked at the solutions. Compared to the solutions my code was a little wonky. Let’s take an example which sums a range of numbers (but you should already know that looking at the variable names I hope…):

def sum_nums(num)
  range = (0..num).to_a
  range.inject(:+)
end

and this is the solution they provided:

def sum_nums(num)
  result = 0
  i = 0
  while i <= num
    result += i
    i += 1
  end

  return result
end

Meh… that doesn’t look much like mine, does it? And I assume it’s a much better use of principles as well. I think that right now when I see or hear a problem I could solve with code, my brain fires up the “panic! what do you remember to solve this!” engine and then I tweak and tweak until the specs come up green. This probably means I just need to spend more time with the syntax and logic (esp. loops) until it becomes much more natural for my brain. When I’ve learned languages in the past (Spanish, Latin, Yorùbá, Hindi), I’ve gotten to this point in drilling the basics where I start to dream in those languages. It’s hilarious at first because the dream is really only in partial phrases and incoherent statements. That started to happen with Ruby last night. I had a dream about a method I was trying to write, but for the life of me I couldn’t tell you what it was supposed to do. It was bizarre, but hopefully it means I’m beginning to get the hang of the language. Gah, this is too much fun.

In other code updates, I just finished the first level of Ruby Monk. It’s on to Ruby Koans next for more syntax practice. Funny enough, I actually completed Ruby Koans a while ago when a Ruby dev recommended it to me. I trotted along in it because the interaction on the CLI is pretty straight-forward, but to honest it really didn’t stick. I completed a whole section on RegEx without really ever understanding what I was doing. I’m going to now go through it again with better control of some basics.

In terms of IRL coding, I just finished a Girl Develop It course in Seattle. The course was on HTML/CSS which, while not programming, was fun and an awesome opportunity to meet some community members. In the CSS part of class I kind of realized… I’m not a big fan of design. I mean, I’m a HUGE FAN of looking at awesome design by others, but I just don’t think I’m personally cut out for that. This could change, but tweaking the colors and div sizes/margins/etc. was not the most fun. Data is the most fun. But this is all evolving.

In the mean time I’ve been thinking a lot about this idea of “Write. Code. Speak.” It’s the idea that not only should you be programming or coding, but also writing and speaking about programming, tech, social issues, etc. There already so much out there to learn and keep learning that also attending Meetups every week, writing a blog, keeping up with my online newbie community, and also you know.. making a living in Seattle can be overwhelming. However, this is what I LOVE about this community and world. Unlike academic economics, what I previously thought I may do, developers actually recognize and discuss these issues. I find this especially cool/heartening this morning, with the recent SCOTUS ruling and having a Twitter community to celebrate with.

Happy Friday! I just found out that Ada Developers Academy is opening up applications for their fall class so I’ll just be over here koan-ing and trying not to freak out from joy/fear/excitement.

Resource Round-up 6/23

Here’s a list of current resources I’m using in my coding journey.

IRL

Most importantly,

Other Newbie Resources

More Ruby Specific