Before attending Codesmith, Daniel King was a high school teacher. Now, he works as an Engineering Manager at Google and graduated from Codesmith’s LA-9 Cohort.
What made you choose Codesmith over other coding schools or boot camps?
When I decided that I wanted to make the switch to Software Engineering from my previous career track, I explored several different options for immersive programs, because I was fairly confident that I wanted to go that route. One of the major things that stood out to me about Codesmith was that the Immersive goes beyond surface-level technical skills, and really focuses on technical and non-technical communication, community building, and the deeper problem-solving aspects of tech and being a software engineer. That commitment was very clear to me from the first time that I talked to students who were currently enrolled at Codesmith, and reinforced when I spoke with instructors. And it really made Codesmith stand out as my first choice for an immersive program.
What were you doing prior to Codesmith?
Prior to switching into software engineering, I was in education. I had spent six years teaching a variety of technical fields at various high schools, two years at a private high school on the east coast and four years at a public high school in Los Angeles. The primary field that I taught was physics, but I also taught math. I taught principles of engineering, and I taught intro to computer science, which was how I got my start with programming and software engineering, because my degree is in math and physics. We did a tiny bit of programming in college, and when the school I was teaching at in LA wanted to start a computer science course, all the teachers, except for me, had zero computer science experience. And I had about one centimeter of experience. They sent me to professional development to learn how to teach a computer science course in partnership with this organization called Project Lead the Way, which designs STEM curricula for primary and secondary schools. I think it's more and more common to see elementary students and junior high school students exploring programming and computer science as a part of their curriculum, but when I was teaching, it was still really only available in high school.
How did Codesmith prepare you for your career in software engineering?
I think it goes back to why I chose Codesmith in the first place: ultimately in your day-to-day work as a software engineer, the things that really make you stand out and excel are those deeper problem solving skills—the technical and non-technical communication skills, the ability to collaborate with other engineers effectively to get more done than any of you could do alone, your ability to engage with and communicate what it is that you're doing to your non-technical stakeholders, and to understand them and the problems that they're having on the business side on a pretty deep level. Those are the things that in my experience have helped me to thrive in my career so far.
What were your career goals when you enrolled at Codesmith? How did they change or evolve during your time in the immersive?
I've never been the sort of person that has a 5- or 10-year career plan. Every major step that I've done in my career has been more of something that is a good idea at the time. When I decided to switch into a software engineering career, I had been teaching computer science principles for a couple of years. And I got really interested in the subject matter and I was finding myself programming for fun on the weekends as sort of a leisure-time activity. I felt this desire to get back into hands-on technical work as a career field, but in terms of what specific domains I wanted to work in—or specific roles I wanted to be in—I didn't really have a clear vision for that at that time or really since switching careers. I've continued to keep my ears open for when opportunity knocks, and do the next thing that seems like a good idea at the time. I don't know that my career goals changed much while I was in Codesmith, but by the end of the program, I definitely felt more confident that it was feasible for me to do this career switch.
What team do you work on at Google?
I work on the Cloud Sales Apps Team. This is an engineering team within Google Cloud that basically builds internal platforms in internal technical infrastructure to support the cloud sales organization. It has been a really interesting team to be on over the past few years because the Google Cloud sales organization has grown and has more sales reps now than when I joined the team. When I first joined the team almost five years ago, the team was very small and scrappy, and the platform that I was working on had about 50 users. The team was in the very early stages of piloting some systems that we thought could help enhance the productivity of sales reps working with customers. The systems that I work on now and the systems that we work on with the broader team touch the entire Cloud Sales organization. The platform I was first working on has been expanded to basically the entire population of sales reps. In addition, I now work on other systems that help the sales business and processes to run. It's been a very exciting time to be on this team and supporting the Cloud Sales organization in general because of the huge growth that the organization has had.
Can you describe a typical workday?
I’m a manager leading a team of five engineers currently. And as a manager, that means that I have to wear many hats, but one of my most important jobs as a manager is to make sure that the engineers on my team are free of obstacles and can proceed with their highest priority work without distractions and without too much context switching. To accomplish that, I spend a lot of time working with our product managers to define the strategic roadmap for systems. I spend time working with our program managers to organize the day-to-day tasks and work of the team. I spend a lot of time doing technical lead work, working directly with the engineers on my team to help coach them on making certain technical decisions on the systems that they work on. I also spend time with my manager and other folks in leadership roles. I work closely with the product managers to define how we're going to communicate strategy to my manager, my director, and other folks in leadership roles. And then, I want to keep my technical skills sharp, so I try to fit in an hour or two of coding here and there.
Were you involved with hiring any of the engineers on your team? If you were to hire another engineer onto your team, what characteristics would you look for?
I feel very fortunate to have the team that I have. I wasn’t directly involved with hiring them, but I got lucky because they are a really great team. In terms of what I would look for if I were hiring, obviously technical skills are important. I want to see that you'll be able to do the work—the raw technical work. I think, again, it goes back to those characteristics that attracted to me to Codesmith in the first place: the communication skills, the deeper problem-solving skills, that appetite to dig a little bit deeper and ask what the real underlying problem is that we're trying to solve, and not just solve the problem on the surface. On an internal engineering team like this, where we're working very directly with stakeholders in the business, it's important for individual contributor engineers to still have that appetite to interact with business stakeholders a little bit too, to try to have that empathy, to understand the perspective of the stakeholder—who in this case is the customer that we're actually building the software for. I’m looking for the engineers to think beyond solving the technical constraints and asking the next level of deeper questions. Such as, are there maybe alternative ways that we could solve that same business problem that would be simpler? Or more scalable? Or easier to maintain from a technical perspective? Or even just from a business process perspective? So those kinds of skills are what I would look for when hiring a person in addition to demonstrated, raw technical skill.
What would you say that you’re most proud of in your professional career as a software engineer?
I’m pretty proud of making the career change and becoming a software engineer—going through a program like Codesmith, it can be a challenging road making a big career switch like that. I think since making that switch, I can point to two things that I'm very proud of being involved in. One is the incredible growth in the Google Cloud sales organization. It's taken an awful lot of engineering work behind the scenes to really enable that growth and to help the cloud business continue to scale the way it has. So I'm really proud to have been there from the very beginning and to have played, I hope, a non-trivial role in helping that business grow, helping the sales reps have a better experience doing what they do best and interacting with the customers, and helping the customers have a better experience interacting with Google Cloud as well.
On a smaller scale, another thing that I think I'm very proud of as a manager is working with the engineers on my team to help grow them in their careers. One of my most important jobs as a manager is to help the people on my team to achieve whatever their own career goals are. I help coach them on not just what technical decisions to make, but how to up-level their thought processes on how to make technical decisions. I also help them take on projects of greater scope or complexity or ambiguity so that they can up-level their own software engineering careers, and get promoted, or help them achieve whatever it is that their career goals are. It’s really exciting working with a great team like I have, it makes me very proud to see them grow in their career.
What is one piece of advice you'd give to aspiring software engineers considering attending Codesmith?
Codesmith and the instructors who lead the program know what they're talking about when they put this focus on technical communication and deeper problem solving. So, if you are aspiring to be a software engineer, if you're thinking of attending Codesmith, or if you do attend Codesmith, my advice would be to really lean into those aspects of it. Use the time in the program to build relationships with your instructors and with your fellow residents in your cohort going through the program, and be ready to support each other through the process. Both the program and the post-program initial job search can be challenging, and those relationships will help you grow.
Did you form any lasting or meaningful friendships or relationships while you were at Codesmith?
I did. It's been great to keep in touch and have those friendships after the program. The Codesmith alumni community is just incredibly supportive of one another when it comes to staying in touch with each other, celebrating each other's career successes, and helping each other to get through that challenging first job search that happens after the program. That community aspect of Codesmith was one of the key things that stood out to me about the program and it has definitely lived up to the expectations I had going into the program.
What are your favorite books or resources or tools to stay up to date on coding best practices?
There are the classic news sources of keeping up-to-date, with Hacker News, and whatever people are publishing on Medium or other blogs. I also tend to sometimes go to established and tried and true resources for learning software engineering best practices. It can be very interesting to go back to books that were written years or decades ago and see the extent to which the best practices have, and have not, changed over the years, and to try and absorb some of that wisdom of the previous generations of software engineers.
There are a couple of specific books that I find really interesting. Clean Code by Robert Martin is one that's good for design patterns and software engineering best practices. It’s not so much focused on deep algorithms, but more on how to write systems that are scalable and maintainable over time. It’s a very interesting book. A book that's really interesting from the perspective of the algorithms and computer science fundamentals is the classic Structure and Interpretation of Computer Programs. It’s a textbook that was used in MIT courses many, many, many years ago. It’s a classic piece of computer science literature that many, many people over the years have used as a foundational text for their knowledge.
What do you like to do to relax or recharge?
The most important leisure time activity for me is music. I've been a musician for a very long time. Lately, my musical pursuit has primarily been traditional West African drumming. Every weekend I try to take the time to go out and play. There was a dance class that I play accompaniment for pretty regularly and that was fun too. I try to find the time to get out and play music whenever I can.