Shae smith: find out more about...
Shae had so much to tell us about her work that we wanted to share it with you!
Some of the first things Shae learned to program
First you learn object-oriented programming, and you learn that by doing things. Then it gets you into those baseline things. You build calculators and all this other little stuff. And then you do some games with it, like solitaire.
Then you’ll do the more theoretical stuff, like build data structures. And once you get advanced enough you get to do some of the fun thesis-level stuff where you get to do graphics. I did computer visualization, which is really cool.
I did a research assistantship with my adviser who was doing this audio installation that was based on probabilities. Depending on where you were, it played a sound, and depending on where another person was in in the room, it harmonized with you. When multiple people are in the room it just played all these harmonies. So that was a really cool one that I did over the summer.
the cool stuff really doesn’t come until you get into work and you start building apps and stuff.
The programming languages Shae uses
What to get into is really up to you and what type of work you want to do. If you want to do mobile apps you’d probably learn Objective-C, which is how you build Apple apps. If you want to build Android apps you’d learn Java. It really depends on what type of work you want to do. But the cool stuff really doesn’t come until you get into work and you start building apps and stuff.
How Shae breaks down big problems into little pieces
There’s this balancing act. So one thing we follow at DoSomething, and most tech organizations do is, is called Agile project management system. And Agile is based on this theory of prioritization. The idea is that you have a problem, you break it up into its smallest pieces, and then you prioritize those pieces. And the prioritization part is usually where you get a lot of tension like, who’s the stakeholder here?
The developers want to prioritize a certain thing, because we know this will make the app the best and will mean that there’s be less technical debt and stuff that we’ll have to fix later. And then you’ll have like the stakeholders if there’s like a sponsor involved or somebody with money attached, or like the campaign team might have a different set of priorities.
We have to balance, “Hey, that thing that you want is going to take us a week, you know, and so we’re going to have to do it this way, which will only take us two days. And then you’re going to have to wait, you know, to get to that problem.” So there’s a lot of that team management of expectations and priorities. That is crucial in the work that we do. We have to make sure that we’re doing the highest priority work and we’re also doing it at the best quality. And a lot of that means some things have to take a little bit longer.
What Agile programming is really about is iteration. What’s the lowest level of a project you can do? And then let’s iterate it on top of that. We do this thing called minimal viable product, MVP. And that is: what is the smallest thing we can do and complete that will get this to a place that we want it? And then from there let’s iterate on top of that, and iterate, and iterate, and iterate, and build it up to what we want it to be.
What I’m working on right now is a brand-new application that will support the DoSomething ecosystem. It’s actually going to be a huge project. We just broke it down to like the simplest thing that would start us on the problem. That’s what I’m building now, and it’s going to take me like two weeks to build maybe. As opposed to being like, here’s this huge problem, let’s spend three months on it before we even know if it’s going to be worth it.
Read our interview with Shae and check out her reading picks.