|< How can we make the iOS development community more inclusive?||Tips for getting your first job in software development >|
Recorded – watch the full episode on YouTube.
Previously you said the most important skill in software engineering isn't being able write great code first time quickly, or being flawless at debugging, or even testing. So what is it?
Mayuko Inoue: The most important skill in software engineering is to learn how to learn. There's no software engineer out there who knows everything. I feel like coming into this industry and coming to my own, I used to think that that was the case where you had to have some baseline level of knowledge, some baseline amount of lines of code you've written or something in order to be seen as a software engineer to be recognized as such because it felt like that was what was being messaged where it's just like, "If you don't know how to hack into the mainframe and do this thing and use a terminal that only has black and green text, are you a software engineer?"
Maybe this comes from like 90s movies. As we've talked about diversity in tech, a lot of it is based on how the media freight and software engineers and then also how we celebrate software engineers in the general public.
"Talking to other senior software engineers where they openly admit that they don't know something and then being really amazed and inspired by that."
I came into the industry thinking that I just had to be this dude in a hoodie who just could type 200 words per minute. But in reality, I think I came to this realization of the learning how to learn as the most important thing. Because I was three or four years into my career and I was like, "So I made it? I'm here and I'm a senior software engineer and they just gave me this position. I guess I'm a software engineer now," but I still don't know how to do all these things that I thought I needed to know how to do.
Then, talking to other senior software engineers where they openly admit that they don't know something and then being really amazed and inspired by that. I'm just like, "I really admire the fact that those folks can come out and say like, 'I don't know what this is, but I can figure it out.'" Every skill that I've learned in coding and software engineering iOS development is stuff that I have learned. It's not something that people are born with. When you say you're good at coding, it's not something that just naturally happens. You work at it, you practice, you spend time just seeing what you can do and building stuff and improving your skills there. Learning how to learn helps you to get those skills, I think.
"Learning, it's an important skill no matter what you are, but especially in software engineering."
Learning, it's an important skill no matter what you are, but especially in software engineering, because there's just so much stuff to learn and so much stuff that you can learn that if you can learn how to learn efficiently and well, for instance, in iOS developer community, once you learn how to make sense of the iOS developer documentations, I feel like you feel you're on top of the world. You're just like, "Oh, my God. This foreign language I didn't know just all of a sudden make sense to me." Now, I feel I can learn a lot more about iOS than I ever have. I think it's a really important.
Paul Hudson: That's the most important three words ever, right? No overview available.
Someone actually said in the comments, “so many people still don't know how to Google effectively." It's definitely a skill because if a friend or a family person comes along and says, “hey, can you fix my printer?" You're like, “fine,” and then you Google the printer, because you do exactly what they would do – you just maybe have slightly better Google-fu or similar. You know the keywords to search for and it gets you a bit closer than they might have done, but ultimately the same steps they would have done themselves because you're doing your best.
There’s another comment here, saying “I’m secretly opening Stack Overflow to resolve basic issues.” Do you do that, Mayuko?
Mayuko Inoue: Yes! I feel like I have different tabs open for how to solve a problem. I compare everything and I'm just like, “this seems like what's going on," and I try it. Then, it usually works pretty good.
Paul Hudson: When you get some obscure error, I look at it and go, "I had no idea what that means." I’ve never seen it before in my life. So you copy it and paste it into Google, hoping some poor soul somewhere else in the world had the same problem. More importantly, that they explained how they fix that problem, so I can go, “that's what it really meant," and then move forward. It is difficult and we can't keep it all in our head, right? It's just so much, and it's changing all the time. You can't keep that all in your head – it’s not possible.
"We're asking a machine to translate, and Google just happens to know how to talk to humans a little bit more."
Mayuko Inoue: Yes, 100%. Error messages are not meant to be like, “here's what went wrong with your app, and here's exactly all the steps that you took that caused the error." If it did, it would still be cryptic. They're written in a way that's easy to identify and easy to figure out what went wrong. Yeah. I often do the same thing where I'm like, "Google, I don't know what they're saying to me, so if you could tell me what they were saying to me, that'd be great."
Paul Hudson: It's almost like Google Translate really is what it is – just tell me the real meaning of this error.
Mayuko Inoue: Google is a machine and we're working with machines. We're asking a machine to translate, and Google just happens to know how to talk to humans a little bit more, I think sometimes.
This transcript was recorded as part of Swiftly Speaking. You can watch the full original episode on YouTube, or subscribe to the audio version on Apple Podcasts.
SAVE 50% To celebrate WWDC23, all our books and bundles are half price, so you can take your Swift knowledge further without spending big! Get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn advanced design patterns, testing skills, and more.
Link copied to your pasteboard.