Welcome back to The Making of a Development Team, where I get to interview my teammates and show what Detroit Labbers are made of. I rounded up 14 fellow Detroit Labbers to talk about what they do, what they love, how they got here, and what makes them tick.
I first met Dan when we were taking an intro to Android class with Girl Develop It. Two weeks later, we had made it into the Detroit Labs Apprentice Program for Android development. He has been a team motivator, someone who unites people, someone who can pick you up when you feel like quitting or joke around when the time is right (can you tell we are friends?).
Hello, Dan! Tell me a bit about yourself.
I was a literature major in college after bouncing around between a lot of different ones: metalsmithing, anthropology, history. I mean, honestly, most of them weren’t even majors, I just took a lot of classes, and I was at 100 credit hours, and I had to declare a major. I liked Victorian literature, so I decided to make that my major. Speaking of Victorian literature, I spent the majority of my adult life working at a mental health clinic. I started working there doing clerical work and moved up to their intake department, allowing new clients to gain access to services, insurance… mostly when people would first call, it was lot of listening, noting, and directing conversation to get the info you needed.
I liked that for a bit, but eventually it was a burden hearing terribly sad stories all of the time. I found that I got desensitized to it pretty quickly. This carries over to your life, you know, suicidal kids getting hurt in terrible ways. It adds perspective. And then someone in your life has a problem that isn’t quite as dire, and it was bad because it was hurting them, but it was hard to care because of what I had heard people going through. I was very much looking for a way out of that.
Every time I would go job hunting, everything I looked at sounded terrible, all of the jobs that I was qualified to get were soul-crushing.
I found out about Labs and the apprenticeship. Puzzle solving and logic were very appealing. I applied to the first round, but I didn’t get in. It was my first time seeing code. What I thought code was and what code is are very different. I ended up liking the reality more than my initial perception, and it just clicked that I need to do this, and I needed to figure out how to get there.
I started out taking a few code classes online and tutorials to get better. When the second apprenticeship came around, I applied to that and got into the Beta class, which was very cool. The apprenticeship was awesome and challenging, but post-apprenticeship was harder because it was very self-directed. It was up to me to find out what I needed to know.
Something to note about being an apprentice, and I know that most apprentices have gone through the same thing: it was four months of intense learning and project work, and then, post-program, all you did was think about, look at, or write code to start to get up to speed. After a while, you forget how to socialize with friends or family.
Oh yeah, definitely. I remember that and not being able to focus on anything but learning.
Yeah, it was a challenge to pull back some. I was very happy to be in Labs, and the work, and happy to be very involved, but the degree to which I was doing it was not healthy, and I had to come to terms with it.
I feel like only now, two years later, am I reclaiming my life. Part of it was getting to a point where I knew I could get along here, I wasn’t a burden on a team any more. I am now, or consider myself as, an asset to have. Only now am I back in hobbies, or reading anything that’s not about code. I am starting to get back into photography, which I used to be very into.
Labs is too good of a workplace to not be terrified to lose. If you like development, it’s too good to give up. There’s no consolation if you were to have failed if this is what you wanted. Hopefully now with more comfort and exterior life, I can have a healthier spread of my focus.
What did you learn most from working in mental health?
After working in mental health for so long? I was a contact person for new people who need to talk a lot about what is going on, I would take their verbal dump, channel it into a readable digestible thing for a therapist, which I am pretty good at by now. The downside is becoming desensitized. The plus side of that is that I am pretty unflappable. If you are not threatening to kill yourself, you are easy to talk to. I guess I would have to say, don’t shy away from interacting with what might be difficult social interactions, because it all seems relatively easy now. Understanding mental health more has made some things easier in life. With work and friends having that knowledge is helpful.
From what I can tell, and in seeing how you handle stressful situations, you are a great communicator/mediator. Do you think this has helped you navigate the world of software?
Probably. It helps me understand some developers that might be less social. It helps me interact with clients as well, also. I have trouble saying good things about myself, but all of the teams I have worked on, people have said I am positive and upbeat. I don’t know if that’s true or if I am more positive than other developers. People come in and don’t always talk a whole lot. I guess once you understand what’s going on it’s funny. When you’re on a project that becomes stressful because of the work, it’s a different kind of stress than I had to deal with. That was emotional, this is more of a mental drain on a stressful day, I welcome that because I don’t have that at all. My last project when everyone was stressed out, I was having a very nice time because I was learning. I found that more rewarding than maybe people who are more used to it. I think developers need to have a little more empathy or an understanding of empathy around. I don’t know that I am the best to discuss emotional intelligence, but as someone who is more logical and had to learn emotional language for my other job, that is what has helped me translate between the two things well.
Inherently I am more logical, I process my emotions now better than i used to. Going through emotional hardship is still much harder for me because usually there isn’t a solution to that so you have to wait it out. Like, if you’re having this problem you have to think about it until you have a solution.
What made you want to become a developer?
My previous job was all emotional drain. It was not taxing mentally at all. When I first took over that position it had been a department of three, and then it was just me. I had to think of a way to do things, but very quickly the rush of building things was over. There was no mental exertion at all. Eventually, I came to realize that that’s what I didn’t like about my day. Going into work had become very boring. It was just another day without thinking and once I realized that that’s what I was missing, that’s what I focused on trying to find, where I could be more analytical and logical. Where you actually have to think before completing a task. I had found a few jobs I thought might be that way, but none of them as much so as wanting to be a developer.
After two years, what do you think has helped you the most as a junior developer?
Getting to this point and a few things that I would say are necessary are enjoying the work. It is quickly apparent that with writing code if you don’t love it, you will hate it. There’s a grind to it with client work that you have to get used to, if you don’t enjoy doing that you actually will hate it. So I guess just really liking to write code.
Coming to terms with how little other developers know also helped, because even recently I talked to another Beta about how we all kind of thought that “making it” is actually what most people think of senior developers. We thought, and some still do, that an entry-level developer that’s not a junior, we elevated that in our minds to be way more competent and knowledgeable. Maybe because it’s without the CS background we had a very narrow sliver that we had to broaden to think about almost anything technical, especially a lot of us that had no experience prior to the apprenticeship. So even just regular developers seem to know everything. At Labs, everyone is very smart, but also everyone freely admits that they have to look things up all the time. Getting to the junior stage is less about learning all of those things, and coming to terms with the fact that it’s just ingraining a sense of what good code and good teamwork is. Less about knowing any one language or any one framework, and just getting to know the concepts of what good programming or code works and learning to look things up when you don’t know them.
It’s very ephemeral what makes a good developer, you look at them and you think they just know everything. But there are also so many other developers who don’t know everything but they write code that’s on the same level or in some ways better, and it challenges the notion of what does it takes to be a good developer? It’s coming to accept that you really enjoy what you’re doing enough to stay on top of what’s happening, why you do certain things and understanding new layers of how to do something. Less about knowing how to do something on the spot. It’s something that even now is challenging to accept. A lot of the time I would come across things that weren’t working after I did them, and my code wouldn’t work and I would spend a really long time combing through my code and figuring out why it didn’t work, only to come to find out that it was someone else’s code that wasn’t working, or a library. It never occurred to me that a competent developer who wrote a library or someone we work with would have code that didn’t work. It never occurred to me that it wouldn’t be my fault. Getting over that and having confidence in my code helped a lot.
What do you think you could teach someone?
I could definitely teach someone basic programming concepts at this point. Android concepts, the basics of that framework, I could also. I am on a web project right now using React, which is insane. I think I am at a point where I could explain them, but honestly, the Web is crazy. There are so many libraries and dependencies to get everything to work that you have to go and find when you’re doing a web project. It’s so different than mobile, where you have a framework that is enclosed.
I think I could teach somebody healthy concepts for coding and why you want to do some things certain ways. It’s challenging to know what I know. There’s that confidence that maybe I know less, maybe I know more, but I am still relatively new. It’s hard to gauge where I am at. I’d like to get into giving talks at conferences, but it’s strange to realize if I think back about tasks I have done on client or personal projects. That I have built things that other people haven’t before, like some of our more experienced devs. Custom views, custom drawings, layouts for Android, event handling, I have a lot of experience with these things. Is it something I am to the degree where I could teach somebody? I think that’s the confidence thing. It’s hard to gauge. I know having talked to people at conferences. Everyone feels that way. Until you get to the upper tiers of programming where you know that you are pretty good. Everyone else is in limbo, it’s not a field where you have, like, benchmarks. There’s no benchmarks to know where you stand, which is probably why there are so many people in our field who give the imposter syndrome talks. It’s a field where you don’t have to memorize anything, and what you know doesn’t come from any sort of measurable knowledge.
Topics that are interesting to me? Do I want to learn something and then speak about it? For a while, I was trying to learn NFC, because no one really uses it and I think it’s neat… I may try to give a talk about it at some point. It’s one of those things that is not new, but is strangely fun. Rewarding programming things. A childlike glee from making something dumb do something smart.
Also thought about custom views in Android because I was always intimidated by writing my own to use throughout an app, or other things to inherit from. A valuable talk for anyone who hasn’t done it. I know Anne Cahalan, I love the talk she gave with Swift design patterns personified as Jane Austen characters. I loved that idea. A way to make a talk fun, to describe everything in code as a character. Superheroes would be pretty universally accepted, I want to figure out how to channel a tech talk into an elaborate analogy of something fun. It’s like marrying my dorky interests and marry them together. Figure out what I want to do for the talk, then elaborate theme and mesh them together.
On the project you are on now, you had to figure out a new language/and framework/and web pretty fast, what was that like?
Hard. We decided to use React on the project, which was new to everyone. There are people on the project who have Web experience, but no one had ever used React, which also meant we had to use flux implementation. On top of learning those on the fly, I had to learn JavaScript. We decided to use TypeScript and JavaScript. Most of the tutorials are for JavaScript 5, and we were using 6, which added to the pressure. And then had to bring in a transpiler to go down to 5….
There’s a lot that you have to do to get React projects up and running. It’s an overwhelming amount of things to learn in a short amount of time… And I did this thing where I had been looking at JavaScript 5 tutorials, not 6, on accident, so when I was looking at JavaScript 6, it was hard to figure out when I didn’t know something, or where it was coming from. I kept thinking, “Am I looking for a React function? Typescript? JavaScript?” It’s a lot. At the beginning of the project, I was feeling like people didn’t want to help me learn, but really they didn’t know either. No one wanted to pair with each other for a while. It’s not that we wanted to hide that, but it’s just really painful to pair while deep-learning.
It was pretty difficult. More so for me, because I was coming off of an Android project, well, my first time being really busy doing Android. I did really well on that project, performing at a higher level than I had before, and I was so proud! My confidence grew a lot. So to go from that career high to plummeting down, knowing nothing, with very little help… it was like starting over.
All of the aspects that were good about my code in Android would also be good here, language-agnostic. When you’re in it, it’s hard to know the difference because you’re so overwhelmed. I imagine that is something that developers get used to over time. It was a hard process. Getting a “hello world” out of React is hard because you have to go find the pieces that are given to you out of the box on Android. Now knowing this, I think that going back to Android will help, and figuring out the magical stuff that happens behind the scenes will be incredibly interesting.
What have you been hacking on?
I started a project in mid-July that I haven’t worked on since starting it because I got a house, I got married, and went on a honeymoon. It made for a very busy summer, with little hacking time. I hope to be starting again sometime soon. I am going to do a graphic interface for a text RPG, which is my solution to wanting to make an RPG and having no artistic ability. It’s basically a text based game and designing game mechanics, story; all of the things that I think are really fun. I want it to be mobile-friendly and have a graphic interface. I think it could be really fun. My hope is to create a reusable framework where you can plug in new stories, so I can release the game, and continuously release new stories. A mix between tabletop RPGs and video games.
Do you have any advice for those starting out?
I would say if you’re starting out, at least take a class. I feel like there is a HUGE hurdle starting at 0 and getting to 1. On the 0 to 100 scale, getting to 1 is the hardest. In Detroit, we have a lot of classes or boot camps, but getting that initial hurdle out of the way, and gaining core concepts of writing code, is the biggest hurdle. That first week of the apprenticeship, or any class you take, it’s the biggest knowledge dump you are going to get. There are all of these concepts and terms that you don’t have to know how to use yet, but you need to know what they are. It’s all foreign.
In college I got this feeling from a few subjects; that feeling where you brain hurts, it’s a very specific feeling. It’s the “my brain has never done this.” It’s a fatigue, discomfort, it’s hard, and it’s emotional. You don’t know how to process that feeling. And you feel lost and dumb, but once you have that pathway your brain picks up on it and concepts begin to make perfect sense. There’s also a lack of good tutorials. You can find a lot of good ways to learn once you know the basics, but there are very few ways to learn the basics that are good.
It would be worth it for someone to get that initial knowledge, even if you don’t want to be a programmer, it’s still fun learning that initial part. Everyone that I know that has learned the basics of code has had a ton of fun writing simple programs. Even if you don’t want to do it professionally. The core concepts you need to get down. You will never forget a boolean, inheritance or classes or objects or instantiating, the basic ideas. The core you never really lose entirely. You may forget how to use them, but you won’t forget what they are.
Lightning Round!
What did you eat for breakfast today?
Bagel toasted with butter from Tim Hortons.
What was the last movie you saw?
On the plane to my honeymoon in Hawaii, I watched “X-Men: Apocalypse.” It was kind of eh. The movie really liked purple, and treating Olivia Munn like a sex object.
If you had one item in the zombie apocalypse, what would it be?
I want to say a forge, so I could make weapons to arm people with and I would make an elaborate weapon for myself that would be a sword. When I was taking metals classes, my teacher was a fourth-generation metalsmith. He grew up in it, went to school for it, art through metals, very knowledgeable. I asked him if he had ever made a sword and he looked at me like I was an idiot, and said, “Of course.”
Best decision you ever made?
Probably at this point is going for the second apprenticeship because I was pretty crushed after the first one. And then I picked myself up and learned. My day-to-day life is so influenced by my job. I wouldn’t be as happy in my life if I was still doing the same old thing. Unless Michelle reads this, in which case it’s marrying her. If not, then developer.
Best advice you’ve ever gotten?
In my first year of high school at lunch, I made fun of a girl for being fat. And one of my best friends at the time pulled me aside and asked why I was making fun of someone who I was friends with. I blew it off that I was goofing around, and he told me that it was a terrible way to behave, and I think that really influenced my life.