• iTunes
  • Stitcher
  • facebook
  • twitter
  • Home
  • About
Mentoring Developers

Mentoring Developers

Helping software developers thrive

Episode 65 – Regular expression mastery with Reuven Lerner

October 24, 2017 By arsalan Leave a Comment

https://media.blubrry.com/mentoringdevelopers/p/content.blubrry.com/mentoringdevelopers/MD-episode65-Regular_expression_mastery_with_Reuven_Lerner.mp3

Podcast: Play in new window | Download

Subscribe: Apple Podcasts | Google Podcasts | Spotify | RSS

Regular expressions – those mysterious creatures we love to hate – now cower in a corner as you stand victorious! Here is your tale of regular expression mastery. Listen in!

Master regex genie Reuven Lerner shows you how it’s done. Some magic reg-dust and POOF!

Reuven’s Bio:

Reuven teaches Python and data science to companies around the world. He has written two eBooks, “Practice Makes Python” and “Practice Makes Regexp,” which contain 50 exercises to improve your fluency with Python and regular expressions, respectively. He also publishes “Weekly Python Exercise,” a subscription service that sends you a new Python exercise every week.

 

Listeners to the “Mentoring Developers” podcast can take 10% off any of these products with the “mentoring” coupon code. Just enter the coupon code at checkout!

 

Reuven also publishes three free weekly newsletters:

  • Better developers (http://lerner.co.il/newsletter), with new programming tips every Monday
  • Trainer Weekly (http://trainerweekly.com/), with new tips for professional trainers every Monday
  • Mandarin Weekly (http://mandarinweekly.com/), for students of Mandarin Chinese — not related to computers, but a lot of fun!

 

Reuven lives in Modi’in, Israel (halfway between Tel Aviv and Jerusalem) with his wife and three children.

You can contact and read more about Reuven at:

  • Main site: http://lerner.co.il/
  • Blog: http://blog.lerner.co.il/
  • E-mail: reuven@lerner.co.il
  • Twitter: @reuvenmlerner

Episode Highlights and Show Notes:

Arsalan: Hi, everyone. Today, my guest is Reuven Lerner. Reuven, how are you?

Reuven: I am doing great, Arsalan. It’s great to be back on the show.

Arsalan: It’s great to have you back. You were on the show in episode 13 and 36. So, if anyone wants to know who Reuven is and you want to learn more about what you have done and all the wonderful things because we went into so much detail, then listen to episodes 13, 14, and 36. Yet, I still want to know a little more. Tell us a little about your background, who you are, and what you’ve been doing.

Reuven: So, my background is a developer. I graduated with a degree in computer science and I started off programming for big companies. For more than 20 years, I’ve been a self-employed freelance developer with my own small company. It’s had its ups and downs in terms of the number of people. Right now it’s just me plus one other programmer who works with me on projects. Really, it’s mostly me doing a lot of, especially nowadays, training. Over the last 5 to 10 years, I’ve transferred from doing some development, some consulting, and some training. So, now it’s about 90% or more training. I go every day to a different company and teach their developers or non-developers how to program, usually in Python, or using some other related technologies.

Reuven: In addition to that, I do a few other things. I produce some newsletters that I put out. I have some books that I’ve published. I have a service that I recently launched. I’m a busy guy.

Arsalan: Clearly, you don’t have a family.

Reuven: I do have a family. I have a wife and three children who occasionally recognize who I am. No, they’re great. I’m actually speaking to you from a hotel, not because I run away from my family, but because I happen to be teaching a bit farther away from home in two places in northern Israel. So, rather than taking the train all the way back here, I’m just staying here for the evening. So, I have two newsletters that I put out every week. One is for people doing training to give them some tips on how to do training, whether it’s the pedagogic aspect to it like how to teach or have to learn, the business aspect, the logistic aspect like do you eat lunch with your students and what things should you bring in your bag, especially when you travel internationally.

Reuven: I also have another weekly newsletter that is called Better Developers, which is, again mostly for Python people, but not only. It talks about how you can improve your skills as a software engineer. I dive deep into all things having to do with Python. So I’m currently on week s 8, 9, or 10. I’m talking about threading and processing in Python and how that works.

Reuven: Separately, I’ve got my e-books on Python and Regular Expressions and what I like to call Weekly Python Exercise, which is a subscription service for pay that people get every Tuesday. People get a Python exercise emailed to them and every Friday they get the answer. Someone just recently said to me that that was just like subscribing to a crossword puzzle and I thought that was a great analogy. I’m not sure if there are any professional crossword puzzle solvers out there, but the analogy holds up completely and my idea and a lot of my work is that you need to be fluent in a programming language as much as you’re fluent in any human language. The only way that you get fluent in any language is just by using it and practicing making mistakes and figuring out the where those mistakes are and improving them. It’s a lifelong process. It never ends. Yet, there does come some point when you cross that threshold from looking everything up to looking things up only occasionally. That is what I try to do to help push people across.

Arsalan: I think that’s the right approach. In any skill that you want to learn and in anything that you want to learn in life, you have to keep learning. There is no end to learning. You do reach a point where you are more confident and you are situated. Basically, you are on your own two feet and you know where to go instead of looking around randomly. If I dropped you onto a new planet, like Mars, in order for you to survive the environment of Mars you would know where to go. Yet, if you had signposts or mile markers and there was a destination and you knew where the good restaurants were, then I think you would know which path to chart. I think this is how learning happens, which is something that we all need to remind ourselves.

Reuven: So, you mentioned that you’ve been learning guitar and you see this is a lifelong thing. That’s something that you can continue keep going on and learning. I am convinced that anyone who wants to teach or mentor should learn some things because it puts them into a perspective of being a learner. It means that they are experiencing that confusion and that wonder, and putting the pieces together, and it’s important to have that perspective if you’re going to teach. Otherwise, it becomes too easy. One of the rules that I’ve come up with for myself is any time that I think that something is obvious; it means that I need to go into depth and explain. If it’s obvious to me, there is no way on God’s green earth that it’s going to be obvious to my students. It’s only become obvious to me, as it were, because when I learn things people say that it’s just sort of clear. No, it’s not. Then, I have to probe and asked lots of questions.

Arsalan: Learning is hard. So, anyone who is listening to this podcast right now is thinking that all these people say to just go practice or go on GitHub and pick up a project and contribute. What’s the big deal? If you do that, then everything will be easy. But, everything is not easy for everybody and we empathize with that, especially people who are in the mentoring business or in the teaching business. It doesn’t mean that you’re dumb. It doesn’t mean that you’re not smart enough or good enough to do this. Maybe, you learn a different way. That’s okay. We should all be able to bring our own differences into the mix and find the path to success. I believe that most people who get into development can be really successful. You don’t have to be the Eddie Van Halen of programming, right?

Reuven: Right.

Arsalan: You could be the guy who holds the song together. You could be somebody who gets the job done. You could be somebody who has a rewarding career and everyone’s happy with. We don’t all need to be superstars or rock stars, as they say. That’s a term that I don’t like when they use it for programmers. I like it when they use it for actual rock stars, but I don’t like it when they use it for programmers because what they mean is somebody who is going to come in and solve all the problems and everyone else has to work around them and that creates a problem with that person being elevated above everyone else. I don’t think that’s a good team environment, personally. Yet, I see a lot of companies looking for rock stars. If you have half a dozen rock stars working for you, good luck.

Reuven: I guess I never thought about the rock star skill set coming with the rock star ego, but they do come hand-in-hand. I guess your point was that someone else has to manage them and that might not be so easy.

Arsalan: I think that we overemphasize and we put too much importance on skill set. The raw skill set or ‘brain power’ is when you calculate things and come up with solutions or to solve complex problems. That is a valuable skill, but it is far less valuable than a cohesive team that works well together because most of the problems that we solve are not really rocket science. They are not.

Reuven: That is absolutely right. I’m reading this book now about the history of the iPhone and how it was put together. One of the points of the book is that everyone thinks that Steve Jobs sort of woke up one day and said “I got a make an iPhone,” and he waved his magic wand and a few people worked on it. Hundreds of thousands of people who each contributed for 50 years to the technologies associated with it. Part of the point of the book is to show that it wasn’t just a team effort, but a massive team effort. It’s unfair to say that it branched out from the efforts of one person or even a few people. Those people needed to work together and unlike Steve Jobs, who obviously did not work well with other people, unless they were on the receiving end of his yelling. A lot of these people just needed to work together and grind and grind and grind as a good team to get good stuff out. They did, which is very impressive.

Arsalan: Most of the times when you have a good product, a good, successful product, it comes together not because of the brilliance of a single mind. It’s never like that. You might have the beginning of an idea. Some brilliant scientist thinks of an idea. But the product that comes out is always a collaboration, always.

Arsalan: Even if a brilliant person could come up with a prototype, you still need to productize it and then you need to support it. So, if you are in the business of making money through software, then you really don’t need a lot of rock stars. You need people who can get the job done. You can have people with different skill levels, someone who is really good at solving complex problems and someone who is good at thinking about the overall design and thinking about the user, and someone who is good dealing with the customers and understanding their problems and internalizing them and making sure that the products that are being built are also being supported and are in line with what the customers want. So everyone has a role.

Arsalan: When a new person comes into a job, I’ve seen and I’ve worked with some programmers, some new kids, some college kids, even some high school kids that are really smart. They are smarter than me. It is obvious to me that at their age I couldn’t do the things that they did. They come with this attitude of “I know everything.” I see that all the time. They’re not quite ‘rock stars’ if you look at their resume, but they have that attitude. Sometimes that’s good because they’re very stubborn. They’re going to go in and stick to it. If you give them a problem and they don’t know anything about it, they’re going to pretend that they know it and they’re going to keep banging their head until they learn.

Arsalan: I’ve been in situations where I was mentoring a group. I used to run a mentorship program for a company in Chicago and I would have a batch of people who just came out of college and I would train them for a month and then they would start working on real projects. There was this one kid who was clearly brilliant and he wouldn’t accept anything that I was saying. So, I would ask a question just to see how much everyone knows and he would give me the wrong answer but insist that he was right. You don’t know what you’re talking about. I did know how to deal with that, but after a few years of working, he was a standout programmer. He got really good and he learned the things that he didn’t know, but from a technical point, he was very good. There is room for people like that. I don’t want to dismiss those people to say that they can’t work in software, but there are also people who constantly struggle and I would talk to them and they would tell me how much pressure and stress they are always under. That happens. Those people eventually left the company or they had a really bad taste in their mouth and some of them would’ve switched careers. Some of them went into management. Some of them did something else. Maybe that’s okay. Maybe that’s the right thing to do, but they don’t have to be. Most of them could have made it. If we just created an environment where different types of people thrived.

Arsalan: That’s what I believe in and on this podcast that’s what we talk about. Today, I really want to talk to you about Regular Expressions because you love talking about it and you are the Regular Expressions expert and you wrote a book on it. You literally wrote a book and gave me a copy of it before the interview and I was going through it. I went through it and was expecting a 30 or 40-page little reference book with just a couple of points, but this was like learning a language. It was deep. It was very detailed and the examples were amazing. If I could do the exercises in this book, I would feel very confident that I was one of the best among my peers. I’ve always been interested in Regular Expressions, but I always keep forgetting how the grouping goes, how the syntax works, or backtracking. I always keep forgetting, but it doesn’t bother me because I know I’m just going to look it up and figure it out. If I have a good editor where I can try a few things and see the answer, I’m going to figure it out. So it doesn’t bother me.

Arsalan: So, you did write a whole book on it. I wonder this information that you’re giving out in the book and maybe you’re also teaching. You’re not also teaching a course on it, are you?

Reuven: I do have a Regular Expressions course that I give at companies. It’s not super often but like once every two or three months. It’s actually a two-day course, believe it or not. People scoff at it. I was teaching at this one company and this woman said that all you need to know is .* and you know everything. I sort of slapped my forehead and said: “of course.” Regular Expressions are these things where you look at a manual page once in a while and/or you search on Stack Overflow for the answers that you need to get and then you move on. You can live your life that way.

Arsalan: The question is “why?” Why write a book and why should I read a whole book? Here’s the thing, I can go through the book and learn the syntax and learn the different conditions and do the exercises and feel pretty good. I know Regular Expressions and I’m pretty good at it. Then, a year later, I don’t remember any of it. Is that really possible or do you think there’s a way to avoid that?

Reuven: First of all, it’s possible. The world is a big place there are some people who will read the book and not just read it but go through it and do all the exercises and then not use things for a year and then they won’t remember very much. But, the book isn’t aimed at people who are not going to use it for a year. The book is aimed at people, and I think most programmers with some quantity of text, even the people who I work with who deal with log files. They search for things and log files and all kinds of different fields. They search for things from inputs they get from users on web applications. In those sorts of situations, Regular Expressions can be invaluable. I am super not handy, but I do like to cook and we just got a new set of kitchen knives. So I’ve been seeing how the different knives work. Now that I have these tools I can use them. I can use this knife and this way. In a way, it opens my eyes to solving problems that I’ve never solved before. My belief is that once people learn Regular Expressions, they will have this tool in their toolbox that they will use and want to use every week, every other week, every month. If they do that, they might not remember 100% of the syntax, but they are going to remember a ton of the syntax. Certainly, they will remember much more after having done the exercises rather than having read the manual page and promptly forgetting that. I’ll definitely forget that, I’m sure.

Arsalan: So, I’m glad that you gave that answer because that’s what I’m looking for. That was kind of tongue-in-cheek when I said that. I’m trying to get into the mind of my listener because this is what they’re thinking. This is one of those things where you have to use it in certain situations, but you try to avoid them. A lot of people think like that, but that’s one more tool in your tool belt. If you have that tool, a lot of your problems will go away. A lot of your parsing problems will go away in every programming language where you could create an elegant solution with Regular Expressions. In one of my jobs, I was parsing these really large text files. They were random formats, not really random but different text files that needed to be parsed in a certain way and normalized and you needed to create a word dictionary to figure out where every word was to be able to filter out the common words and to keep a list of important words and where they were. That was the project. How do you do that without Regular Expressions? It’s impossible.

Reuven: It’s theoretically possible, but come on; no one wants to do it. When you see the Regular Expressions solution you think to yourself “I can’t believe I thought about doing it the other way. This is so much shorter.”

Arsalan: Right. I ended up with a Regular Expression that was six lines long, but that Regular Expression parsed all of the different formats of all those legal transcripts. So, when you go in and you are in a lawsuit and someone is taking notes for a legal deposition, it produces a transcript. So, they are all different. Yet, that sixth line Regular Expression was able to parse all of them and create a single, normalized result across all of them. It wasn’t just six lines of text that just curled around, it was six substrings. So, what I would do was I would think about how I would break the problem down. I would break it down into six different parts and each part was a substring which represented a Regular Expression. With them all together, you can create the final thing. So, you name it. That’s one of the problems with Regular Expressions because they are terse. That also means that they are hard to decipher. If you’re looking at someone else’s Regular Expression, and they have not named it, if it’s just an inline Regular Expression, the chances are that the new person will not know the intention.

Thanks for Listening!

Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.

If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.

You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts. 

https://media.blubrry.com/mentoringdevelopers/content.blubrry.com/mentoringdevelopers/MD-episode65-Regular_expression_mastery_with_Reuven_Lerner.mp3

Episode 64 – How Holly helps

September 19, 2017 By arsalan Leave a Comment

Holly Gibson and Arsalan Ahmed with Mentoring Developers
https://media.blubrry.com/mentoringdevelopers/p/content.blubrry.com/mentoringdevelopers/MD-episode64-Holly_Gibson_with_Sara.mp3

Podcast: Play in new window | Download

Subscribe: Apple Podcasts | Google Podcasts | Spotify | RSS

Mentoring and being mentored are the main topics of this podcast, but not everyone knows how to find a mentor and how best to be mentored or to mentor others. Did you know that you can learn a lot more during a mentorship than software know-how alone? It’s true, just ask our next guest, Holly Gibson.

Holly has learned a great deal about mentorship as both mentee and mentor during her time in the tech field. In episode 64, she shares that knowledge with you and Mentoring Developers Co-host, Sara Ines Calderon. Be sure to listen in for all the juicy details.

 

Holly’s Bio:

Holly has over a decade’s experience in web development and server management.  Besides being a lead developer at Praxent, Holly is the Executive Director of Women Who Code Austin, where she leads a network of 2600+ women in tech.  Prior to software development, Holly served at a disability non-profit.  She an has expansive knowledge of the challenges faced by individuals and families affected by disability.  Merging her experience as a software engineer and disability advocate, Holly is determined to see software applications and technology in general become more accessible and inclusive.  She is leading the charge on her team to implement accessible features and also being a voice in the technology community for those who are underrepresented and neglected.

 

Episode Highlights and Show Notes:

Sara: Hi, everybody. This is Sara Ines Calderon, and you’re listening to Mentoring Developers. Today I’m here with my great friend and someone who I admire very much, who’s actually been a very great mentor to me and a mentor and inspiration to so many other ladies I know here in Austin, Texas, the one and only Holly Gibson. We’re going to talk to her about her journey into technology and some of the challenges she’s faced and where she’s at now. We’ll also talk about her work with Women Who Code Austin. So, Holly take it away and tell us a little bit about yourself.

Holly: Hi, Sara Ines. It’s great to be here on your podcast on Mentoring Developers. I really care about this topic so it’s something that I’m excited to talk about. A little bit about me, I am a developer at Praxent, which is a custom software agency here in Austin. I didn’t start out as a developer. I have a degree in theology, which is a very far move from software development. I went to a coding bootcamp about four years ago and having mentors along the way to get to where I am today was so important.

Sara: That’s cool. Tell us a little bit about your life. You said you got a degree in theology. So, how did you go from theology to wanting to do a coding bootcamp. Then, tell us a little bit about some of the jobs that you’ve had before this job, where I just want to say that you mentioned you were in charge of some of the job groups framework. You are a senior developer or architect. What step made you want to go to the coding bootcamp? How are your jobs before you got to this job? Also, tell us a little bit about how along the way you founded a chapter of women who code in Austin, despite having your hands full with code school.

Holly: Yes, of course. In college, they had a couple of classes in web design. I took them. There was one class in basic JavaScript. This was over 10 years ago. So, it is not the JavaScript that we use today. It is very far from it. I liked it. I liked the ability to create things. I thought it was a lot of fun to make the computer do things, but I didn’t know how to find a job with the degree and theology. So, I went to marketing and I did that for a while.

Holly: When I moved to Austin four years ago, I learned about code schools. There was one that was coming to Austin and it was perfect timing because I was looking for a new job and I wanted to do something different than I had been doing. I had been working in the nonprofit arena will, which is great and very fulfilling, but it doesn’t pay very much and I felt like I had mastered all the skills that I needed to run programs and be an event planner. I wanted something more challenging. So, I went to a code school, Makers Square, which is now rebranded to Hack Reactor.

Holly: It was hard. It was one of the hardest things that I’ve ever done. I felt stupid every day because you’re learning new things and there’s so much to learn that the information is so broad. Learning to program sounds daunting in a way, and it was. Through the code school, I was able to build a couple of apps and that felt really great, but I still felt that I didn’t know anything. So, I decided to start the Women Who Code chapter because I wanted to meet other women in tech. So, I would have friends. I was new to this city. I was new to the industry. I needed a job. I needed to network. I met some people from the San Francisco Women Who Code chapter and they wanted one to start in Austin, and they were looking for someone to help. So I agreed to help.

Sara: Little did you know that help meant doing it.

Holly: Yes, help meant a part-time job. It started out as a very small group of us. There were maybe 10 or 15 women and we would get together and hack on different projects and Google together because a lot of times you don’t know the answer and Google is your friend.

Sara: Sure. That’s awesome. So, you had a couple of jobs before this job. It sounds like you started in a kind of peer mentorship when you are first still in code school because everybody knows a little bit about something different. So, together, you know more. It sounds like you were doing that. I know that when she started to work. You were also consistently pursuing mentorship as well, which is something that I’ve always thought was admirable.

Holly: Yes. So, my first job out of code school was at a startup. It was an education startup. There were six employees and I was the only technical person. I was the only developer and I did everything for managing the server, the database, and the web application, and I had no one to ask advice from. The CEO barely know how to program her iPhone or set up her apps. I was helping her all the time. So, I had to find someone because I didn’t know anything about databases or servers. I barely knew the framework that we were using for the app. We were using Rails and I had just three months experience from the code school.

Holly: So, I went to the local Rails meet up, and I heard some of the speakers talk. Some of what they were saying really connected with me. It was very interesting. So, I went to the speaker after word and was asking questions and I explained my situation that I was working at a startup by myself and I didn’t have anyone to ask questions from and he said that he would meet with me on the weekend to explain some of the things with me.

Holly: When we met, it went really well. We really connected. So I thought, okay, I like this guy. He seems very friendly. He seems like he knows what he’s talking about. Maybe he’d be willing to meet again. So I asked him if he’d be willing to show me some more stuff. So he agreed and said he is usually there at this coffee shop on Sundays. He said that if I wanted to come there, then he could help me. So I went there every Sunday for four months just to get as much information as I could out of him. I’d buy him coffee. I’d buy him a taco or whatever he needed and I would ask him what books I should be reading. Which blog should I be reading and who should I be following on twitter? What are sources of information that I can trust? What should I be learning? So, it was really helpful to have him guiding me.

Holly: Mentors provide information and knowledge. They see where we need to improve. They also offer encouragement and help us keep going. There were a lot of times that I felt very frustrated at the start up. I felt like I didn’t know what I was doing, like I was an imposter, like I shouldn’t be there, and it was terrifying to be by myself. I like this quote from Oprah Winfrey: “A mentor is someone who allows you to see the hope inside yourself.” So, by meeting with the mentor I saw that I was learning and growing and that I could keep going.

Sara: I think that’s a really important point about mentorship. I think the best mentors are the ones who can point out how you’ve grown because you can’t always see that if you feel like you’re treading water and barely keeping your head above water. You’re not going to notice that you’ve just swam 5 miles. So, that’s a really good point. I consistently love hearing those stories. I certainly don’t wish that on anyone and I hope you never feel like that again, but it’s a great story now.

Holly: Yes. I survived.

Sara: That’s really cool. So, tell us a little about through Women Who Code, how you have the opportunity to meet all sorts of people, mentees and mentors. What are some of the things that you think are most important for someone who’s learning how to be a good mentee or how to look for a mentor? As you yourself are a mentor to others, what are some of the things that you think are important to keep in mind if you’re going to be a mentor?

Holly: So, I’ll start with the first question. How do you find a mentor? I think MeetUp is a great place to start if there is a MeetUp on a topic that you are wanting to learn more about. For me, being a software developer, Rails was the software framework that I using. So, I went to a Rails meet up. Now, I’m mostly doing Javascript and React. So, if you can find a React meetup, like Women Who Code has a React meetup. I know you’ve been mentoring women and learning React even if it’s just learning alongside them. You guys are mentoring each other. In your company, if you can find a developer who knows more than you do, you can set up office hours. We have a senior developer at my company who I meet with once a week. I gather the questions during the week that I want to bring to the meeting so that he can then help and explain things to me.

Sara: Is that a formal company process or did you ask to put that in place?

Holly: I asked to put that in place. We don’t have a formal process and I think that a lot of small to mid-sized companies don’t have a mentoring process. I wish they did. So, I kept going to them with questions because I knew that they have more experience than I did, but because they’re busy trying to meet deadlines and stuff, they couldn’t always answer my questions. So, I asked if it would be okay if we did office hours like once a week and I could bring my questions to them then and it’s all on the calendar. He said that was fine. I asked the supervisor if it was okay if I did this because an agency and we bill our hours. He said yes and that this was learning time and applies to what we are doing.

Holly: So, I did it and since then I started office hours for two other individuals  who I mentor because I saw that they wanted to learn things. One of them was a PHP developer who wanted to learn React and some of the Javascript framework. So, I suggested that we do office hours and I could help her learn. So, I’m always trying to find a mentor, but also willing to pay it forward.

Sara: That’s really interesting. I really like what you said about finding someone within your company and creating a process. Just because one doesn’t exist doesn’t mean that you can’t create one. So, that is one of the things that you think is important to be a mentee and how to find a mentor. Tell us about, now that you’re a formal mentor through your work, what are some tips on being a good mentor? As you mentioned, I do run a few meetups now. We have a React meetup through Women Who Code Austin. We have Rockin React. Holly started this theme at Women Who Code Austin where everything is alliteration.

Holly: Yes. We have Lightning Learning and Rockin React.

Sara: Rockin React. Was it Mobile Madness?

Holly: Yes. It’s memorable.

Sara: It’s memorable. So, why not? It’s fun.

Holly: Learning should be fun.

Sara: Yes, learning should be fun. So, I guess one of the things that I struggle with as a mentor, especially in groups, is how do you provide value in groups because there are people from all different levels and experiences? Like I learned last week, just because somebody knows something, it doesn’t mean that they are going to learn something new by going over it again. Sometimes having to explain it to someone else can help you formulate something in your mind. So, what are some things that you’ve learned as a mentor? How do you be a better mentor to people?

Holly: I learned something while I was mentoring through a code school here called General Assembly. They set up a mentorship program for their students. I was mentoring one of their female students and every week I would ask her “what do you need now?” That’s because things change. In my own experience, I’ve had a situation where the mentor had a curriculum of things for me to learn, but many of the times I came, he would ask if there was anything else that I wanted. There was always something else I wanted because usually, if your new, what you need is what is most pressing. My mentee was going on interviews. So, what was most pressing for her was to learn how to do coding interviews. If I’m on a project, the most pressing thing for me is how to get this project done. So, as a mentor, you need to be flexible and ask what the mentee needs because you are there to serve them. They are not there to stroke your ego.

Holly: So, it changes. Sometimes I did resume writing with her because she needed to brush up her resume. Sometimes we went over code challenges. Other times she just wanted advice. For example, sometimes she had different job offers and she wasn’t sure what she should do or how she should negotiate her salary. I just gave the best advice I could and knew that she had to make the ultimate decision. My advice may not have been exactly what she needed, but I could give her stories from my own experiences and from other peoples’ experiences and then leave it up to her to decide whether or not this was what she needed to do or if she needed to find something else. The thing to remember is that their situation is not your situation.

Sara: That’s a really good point. So, what do you do if you are mentoring someone and they ask you something that you don’t know? How do you deal with that?

Holly: I would say that I don’t know. That is so important. I think you should never set yourself up as the expert who knows everything because we don’t know everything. Also, they are going to figure out that you don’t know everything and their opinion of you is going to be lowered if you lied to them. It also teaches them to be okay with not knowing things themselves. You want to be able to say to them that you don’t know and suggest “let’s research that, let’s Google it, or let’s find someone else who has  an answer, or find a book that may have the answer.” That will teach them how to find the answer for themselves next time so they don’t have to ask you. Also, when they are on the job, they can go to a senior developer or supervisor and say that they don’t know how to do something and not worry about being shamed or something.

Sara: That’s really cool. I like that. So, let’s talk about how there’s mentorship in groups. I think that’s something that you have a lot of experience in. I have some experience with it since we started the React meetup. I’ve found that it’s different.  I don’t know that I’ve gotten a lot of one on one mentorship, certainly not as much as I wanted. There is such a thing as group mentorship where you can be around people who make you feel like you can figure things out and it actually makes you figure things out. The reverse is also true. You have people who tell you you can’t do stuff, or they ignore you, or they treat you like your not good and that can make you feel like you don’t know and so you won’t even try. How have you experienced that? You were Women Who Code for a few years where it was basically just you and you’ve been able to build a really cool board and group of people that have all been able to build the organization in their respected areas. How has that been good mentorship to you and what have you observed about mentorship since you’ve been involved with all these thousands of women over time?

Holly: With Women Who Code, specifically, I guess group mentorship, we have a variety of events. So, there are different offerings for people to decide what they want whether it’s React, Python or small topics like Lightening Learning, which is short, five to ten-minute topics. So, people can come to what they want. We always leave room for questions. So, all the women feel like they can ask questions and we do our best to answer them. If you’re going to do group mentorship, you definitely need a topic. All of our events have a topic of some sort. I think the best one for mentoring would be our Hacking Hangouts because people actually bring a project that they’re working on so they can ask for specific advice.

Holly: When I first started it, I knew I couldn’t answer everyone’s questions and help everyone at the same time. So, I would have everyone go around and talk about what they were doing and what they need help with. So, if one person had a Java question and someone else was a Java developer and I wasn’t a Java developer, I could match them. In group mentoring, if people are coming with individual needs, it’s great if you can match them up with someone and make it more one on one.

Holly: We have found through one of our events that people will meet each other and they have similar things that they’re working on. So, they will meet outside of the event, like at a coffee shop. For example, they are both looking for a job and they go over code challenges together or they are both trying to learn React together. So we’ve also seen informal mentoring or peer mentoring forms. So, that’s really cool. So, I would say to treat everyone friendly and make them feel safe so they can ask any question they want. Do your best to help them and if you don’t have the answer, try to direct them to a good resource.

Sara: Sure. That’s aweswome. That’s really good. One thing that I found really interesting about some of the stories you’ve been telling us is that it sounds like you’ve never really had a mentor who was another woman, necessarily. It also sounds like a lot of the people who have been mentors to you have been men. So, why don’t you talk a little bit about that? I’ve had a different experience. Like most people, I’ve worked mostly with men. It’s hard to find these senior folks who wanted to mentor me. Then, I did find one and then I had to find a new job. So, that was very short-lived. I did learn a lot when I was working with him. Is that something that people talk about to you or is it just something that people take what they can get in terms of finding mentors who are similar to them, demographically speaking?

Holly: I think most people take what they can get. Peoples’ time is precious. We’re all busy and stretched in our modern society. So, if you find someone who is willing to meet with you, jump on it. The first mentor I had, I didn’t like the first time I heard him speak. I thought he was really critical and a little disgruntled. So, I didn’t want to have him as my mentor. Then, I talked to him in person and I found that in person, he was actually very nice. He does like to play devil’s advocate, but I learned that over time. For example, he likes to critique and criticize, but he was passionate about teaching. So, I could set aside his critiques of everything in the world and programming and theory and things like that and learn from him because he did know software and he did know what gaps I had. So, for me, since he was willing to give his time, I learned to set aside my personal preferences.

Holly: The next person I found was a personal friend of his and I met him at another event. It was just an after hours drinking. We started talking about programming. He had some strong opinions and I asked him why because I find that mentors who want to teach, they do so because they care about the subject. They care about quality and they are passionate. They want to see the next generation of developers have good skills. He was really passionate about Haskell. It was a language I knew nothing about. So, I asked him about Haskell and how it worked. I told him that I’d be interested in learning it because I didn’t know it and didn’t know if I’d ever be able to find a job with it because it’s kind of an obscure language, but at least I could learn theory from him. So, he was really excited to teach me Haskell.

Holly: So we met every week for a year. It wasn’t easy. I had to drive across town in traffic after a really long day at my job. Yet, after that, I was able to talk about Haskell in one of my job interviews. Even thought the job wasn’t in Haskell, it really impressed the hiring manager because they liked Haskell and I knew that because I had Googled the hiring manager. So, I knew to bring up Haskell, but I also knew Haskell and it got me a job in Javascript.

Holly: Through that mentor, learning about this obscure language, I also learned about other things. I learned how to  and how to ask for a good salary because the programmer was a developer team manager. So, I asked him what salary range should I be looking for as I was job hunting? He said “Well, let’s figure out what your skills are.” So, he assessed my skills and told me the range that I should be looking for and here are all of the ranges and what the next range I would want to go for. I took that information and did a Lightening talk on it at Women Who Code. I told all the ladies what all the different ranges are and what skills are needed for the different ranges. So other women used that information to help them get better jobs.

Sara: That’s cool. I really like that story. Everytime you tell that story, it’s hilarious. I think that what it also illustrates is that you are going to get things out of mentorships that you don’t necessarily know about. It sounds like the young lady that you were mentoring, G.A., knew specific things that she needed. Yet, when you were learning Haskell, you didn’t necessarily know the specific things that you needed outside this nebulous idea of software theory. You ended up getting some very practical information and skills out of that too.

Holly: Yes, because I would ask questions and I think that’s another piece of advice for a mentee. When you have your mentor’s time, treat it like money. Bring your questions to them even if it’s not on that topic. We rarely stayed on topic. I’d come and he’d be ready to teach me how to profunctor optics, or something like that and I’d change the subject by asking how to my salary. So, I would bring some other questions and he was a passionate person, so he cared about helping me. He wanted to see me succeed, so definitely make sure that your mentor wants to see you succeed. They should make you feel good about yourself. Like you said, they should praise the successes that you have.

Sara: That’s cool. I also want to talk a little more about your experience working in software. So, I also wanted to ask you about something that we’ve talked about before because we’re friends in real life. It is the one thing that I think is really important in mentorship that you were talking about with this last person, in terms of very practical things like how much salary can I get. It is also figuring out where you are. I recently had a job interview that was the worst interview of my life, not because of me,  but because of them. The Javascript assessment was a train wreck, not because of me, but because of them.

Sara: At the end of the interview, he asked me where I thought I was in my career. I told him and he was really surprised that I was self-aware enough to know where I was. I can take a lot of things away from that response, but I think that one of them is that it seems that most people don’t really know where they are at. It’s something that I think that mentorship is really helpful for.

Sara: When you don’t know anything, you think a couple of things. You think that one day you will reach a point where you know everything and that will never happen. You also think that everyone knows more than you. So, once you get to be a little more mid-career, which is where I consider myself to be, you know that you’re never going to know everything and it doesn’t scare you. That’s the real knowledge gain there. They’re not terrified that you don’t know things. You’ve also figured out enough things to have a facility to figure things out. You also have a little bit of an idea of how to get to where you need to get versus when you are starting out when there are so many things and it is so overwhelming.

Sara: So, talk to me a little about how you as a mentor and the people who have mentored you have helped you figure out where you are at, how to get to where you want to go, and maybe assessing that those judgements that we get in the workplace aren’t necessarily tied to us, but are wrapped up in company politics or favoritism or whatever the case may be?

Holly: Yes. I had a weird juxtoposition of my skills in one job and then immediately in the following job. I got hired at a data science company and I was super pumped. I had been working for a year to get hired there because I had met some of the developers at a meetup and they were so smart and talented that I wanted to work with these guys. I wanted that on-the-job mentoring that I wasn’t getting at the startup. So, I taught myself Python for a year and I got through the interview. I got a job offer and started working there. The team that I was put on was so difficult to work with. They would give me the smallest tasks to do and would never respond to my questions. So, I couldn’t even complete half the tasks because they wouldn’t even work with me.

Sara: There was shockingly no documentation anywhere.

Holly: So, it was really frustrating because this was the dream company to work for. It was downtown with really cool offices, and great culture. Some of the other teams had really great people on them. I liked them, it was just the people who I worked with didn’t believe that I could do anything. They wouldn’t work with me and I was really frustrating. There was also a lot of politics and stuff going on as well. After I had been there for about four months, they had layoffs and I got laid off. I was just so frustrated because this had been the dream job and it wasn’t a great experience and I ended up getting laid off a week before Christmas. It was miserable.

Holly: So, I went on some job interviews and, thankfully, I was able to find a job in six weeks, which is pretty fast.

Sara: That’s pretty fast.

Holly: Pretty fast. So, I started this next job that I found out there, my current job at Praxent. Immediately, they told me that I was going to lead a team on a project. I was surprised because it was on a framework that I haven’t used before, but they were confident that I could learn it. This was the guy that I talked Haskell to. So, he just believed in me and believed in my skills. So, I went from being a junior developer that no one trusted to now leading this team, learning a framework I had never learned with a database I had never used before.

Holly: We got it done and shipped our product on time. The project manager told me that the last software company that this client had worked with had been six months late. They were so amazed that we made our target date. I did work pretty hard the last several weeks…I  worked about 70 hours, but I realized through that experience that I wasn’t a junior developer and I could learn. Like you said, knowing that you don’t know something, but not being terrified about that and knowing that you can learn and figure things out.

Holly: So, I’ve been at this job now for a year and a half. I’ve learned two more frameworks that I didn’t know. I’ve learned Angular 2 and React and I’ve been on some really awesome projects. I’ve built some desktop applications. I knew nothing about desktop applications and it’s been really exciting. Like you said, to be in an evironment where they believe in you and they believe in your skill is so encouraging. I love coming to work every day. I didn’t enjoy coming to work every day at the other job because I felt like no one believed that I could do anything. They weren’t working with me. Here, we are learning a lot and it can be stressful, but I also know that they believe in me and if I have an issue, I can ask someone for help. They are not going to look down on me when I say that I don’t know because they also know that they don’t know. We are all learning together. Nobody knows everything. So, it’s a complete polar opposite of the job that I had before.

Holly: I think that finding mentors and people who can assess your skills and believe in your skills is important because you might be at that company where they are not giving you a chance. So, just go to another company. If you’re stuck at this company, just keep asking for more responsibilities. Believe in yourself that you can figure it out because you will. You will figure it out.

Sara: That’s the kind of story that blows my mind. Before we decided to do the podcast that we’re having, you and I had discussed that I had also worked for a previous company where they didn’t really give me any responsibility or think that I could do anything. Now, I also started out as the only developer at this startup and everyone is so impressed with me because I’ve been able to do all this stuff. I think that is also something that I’ve learned because I’ve been building a team and we’ve been bringing people on and we’re trying to create infrastructure and procedures and stuff. Last week, I told our first hire that I was going to set the bar for him up here because I’ve learned that if I set the bar for him up here, in two months he will tell me what the better way for him to move forward on this is. I want him to be there. I want him to be better than me versus another place where I worked where you ask a question and the response is “you don’t know that.” That’s not helping people grow. That’s not helping the company get better developers. That’s something that I really appreciate about you.

Sara: The way that Holly and I became friends was that we met at Women Who Code and I was starving for mentorship. She said we could get together and she would teach me Javascript, but we ended up just becoming friends and gossiping a lot. We also learned Javascript, though.

Holly: We had a coding brunch.

Sara: Yes, we started having a coding brunch. A lot of good things came out of that. A lot of other people were able to re-negotiate their salaries and stuff. So, group mentorship is also a thing.

Holly: So, I paid it forward and she kept inviting people to join. I thought “Oh it’s just going to be me and Sara and we’re going to attack the Javascript and eat some tacos,” and she’s like “Guess what, I invited three other people.”

Sara: Yes, that was an interesting time. I remember waking up in San Antonio over a weekend and I had to get up early because I didn’t want to miss my coding brunch.

Holly: I feel honored.

Sara: So, that’s cool. Well, I am running out of things to ask you. Is there anything else that you want to talk about or any last points that you want to make about mentorship? Tell us about your career and where to follow you if they want to learn more or if they want to ask you specific questions.

Holly: The best way to reach me is on Twitter. My handle is @HollyGlot. It’s a joke for Polly Glot. Uber nerds. Get it? Sorry, I’m a nerd at heart. You can follow me there. I’m always tweeting about things that I’m learning, things in tech, and occasionallly, political rants, but we won’t go there. You can ask me questions there. We’re also at Women Who Code at most of the events. So, check them out or at MeetUp – Women Who Code Austin. As for any last advice, just breathe. What troubles you today will not be what troubles you tomorrow. There’ll be new troubles.

Sara: That’s a promise. Also, if you guys are going to be in Austin, come to our meetups because we’d love to meet you.

Sara: Well, Holly, thank you for being on Mentoring Developers. I know this was super fun for me and I hope for our listeners as well. If anyone has any questions, feel free to follow her on Twitter. Our Women Who Code Twitter is www.codeatx.com and you can follow us on Twitter @MentoringDevs as well. So, thanks, Holly.

Holly: Thank you. I really enjoyed being on here. Good luck everyone on the inter-webs.

Important Links

  • Women Who Code Austin/Meet Up
  • Hack Reactor
  • General Assembly Code School
  • Women Who Code/Hacking Hangout

 

Thanks for Listening!

Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.

If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.

You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts. 

https://media.blubrry.com/mentoringdevelopers/content.blubrry.com/mentoringdevelopers/MD-episode64-Holly_Gibson_with_Sara.mp3

Episode 63- David Gatti on Development Setups and Environments

August 22, 2017 By arsalan Leave a Comment

https://media.blubrry.com/mentoringdevelopers/p/content.blubrry.com/mentoringdevelopers/MD-episode63-Tools_Of_the_Trade_with_David_Gatti.mp3

Podcast: Play in new window | Download

Subscribe: Apple Podcasts | Google Podcasts | Spotify | RSS

Whether you are just beginning your career in software development, or you’ve been in the field for a couple of years, knowing which tools can make you more efficient at what you do best can make a world of difference. After all, creativity is the name of the game when you’re creating code. It doesn’t matter if you are doing mobile development, backend, frontend, or something else entirely. Why not make some of the more menial things more efficient, less cumbersome, and free up more time to do what you love most….create code.

David Gatti and Arsalan Ahmed are back with a discussion you won’t want to miss! David and Arsalan share their deepest secrets on which products work best and why they like them and use them over some of the others. Be sure to listen in to episode 63 and hear what they have to say.

 

David’s Bio:

David Gatti began his career in IT as a Systems Administrator. He learned how to code in PHP out of boredom, and made some simple internal tools to help him while managing the company network.

He then became a blogger and wrote about mobile technologies before the iPhone came into existence and PDAs had cellular modems. He also wrote the CMS for the website itself when WordPress was first starting. Then he began working as a web developer for a company that did simple Facebook games.

After this initial experience, he imported a Windows Mobile app to Android 2.3. He later became a Brand Manager for a mobile game company and a Marketing Director for another company, and at that company – he transitioned to Developer Relations Manager and worked for two companies with this title. It was a job that he fell in love with.

But, while hunting for his next opportunity, he struggled to find the right company. Out of frustration, he created Simpe.li (simply) so he could keep doing what he does best – Development Relations Management done right.

Episode Highlights and Show Notes:

Arsalan: Hi everyone, this is your host Arsalan Ahmed and today I have David Gatti with us. David, how are you?

David: Hey, Arsalan. How are you? I’m good.

Arsalan: It’s really good to have you back. Now you are hanging out in Italy.

David: Yes, I am in sunny Italy. Good wine and better food.

Arsalan: Wow. We are all jealous right now.

David: You can come and visit me, so, no worries.

Arsalan: Okay, I’ll keep that in mind. We are here to talk about our development setups, our environment that we are going to create to write code, to do our work. Why is that important, David?

David: I think that if you have a set up that you understand and it is simple and you have everything that you need to work, and then you don’t have to think about it. You can just focus on working. I was always trying to come up with a set up that makes sense since forever. I think that last month I was finally able to put everything together in a way that makes me happy and is super clear and very simple. So, now I can just work and not think about my backups, my continuation or what my application I need or any of that stuff.

Arsalan: I see this as a uniform way of doing work. You probably have multiple projects, in this case, for different clients and you work in completely different items. So, if there is one single thing that you can say is a constant, something that you know that you can depend on it, trust in, and know which tools exist, and which you are good at them over time. It is going to take the uncertainty out of it instead of starting from scratch in every project and having to learn new tools. You want to work the way the client works. For instance, many times we go on clients’ sites or their offices and then we are handed a computer. So, we have to use their computer the way that they’ve set it up. That happens to a lot of people.

David: Okay. Good point.

Arsalan: But if you have a choice, then you’d rather use your own computer because you know how things are set up and you know how you can be efficient and how you can actually get some enjoyment out of your work. What are some of the different types of things to consider when you are preparing your set up?

David: Right now I’m just going to explain my set up. I never had a situation where a client gave me something that I had to work with, thankfully. My main goal is not to worry about anything. I could lose my laptop or have my laptop stolen or throw it out the window, it doesn’t matter. If I lose it, the goal is to be able to go back to work within two hours. The only downside is how close my Apple Store is. That would definitely be the most complicated part.

David: That’s why, when I travel, I checked to see if there’s an Apple store near me because I’m using a MacBook Air. I chose this brand because there is no type of configuration that I should get. There is only one type. There are a bunch of types of laptops, but they are like a carbon copy of each other. So, if you have a MacBook Air, you could switch to a Mac book and everything would still be the same. Everything would still work. It’s the same operating system and the same version. There is no extra software installed in this one while another piece of software is installed in another one. So I could go to the store, pick one up in power it up and log in with my iCloud account. This would then automatically start syncing my files from the iCloud drive and I have access to my apps that I bought through the App Store.  This way, I always make sure that I’m close enough to an Apple store so that I can always get a new Mac if the worst-case scenario happens.

Arsalan: That’s interesting. There are not a lot of Apple stores in the world and they are far apart. So, most of our listeners will not be near an Apple store, but that’s a good strategy.

David: When I moved back to Italy, I checked because I was close to Venice. But in a situation when I was back in Poland and my MacBook air crashed, I took an Uber and drove one hour to go to the shop, went home and logged in and was back to work within two hours. This way, downtime was very minimal. That’s why I don’t say that you can only do this with a Mac. If you have a Windows computer, you may have a similar setup. In that case, I would make sure that you choose a brand that has good support and you have a model of that laptop that is easy to purchase over and over again if you need to.

David: For example, let’s say that you have a Dell XPS. Then, there is a bigger chance that if you go to a different place, you can basically by the same model and have the same setup, and everything. You could do it with both. I choose the Mac because to me it is the simplest one, but it is not limited to Mac. You can also do it with Windows.

Arsalan: Yeah, an argument that I could make would be that it is good to have the same computer so that you can replace it, but technology changes. Our needs change and new models come out. So, we generally like to be on the lookout for something better. Perhaps for the same amount of money or a little bit more you can get something that’s similar but better than you had before.

David: Well, yes and no. That’s why I chose a Mac. When I buy one, I only replace it when the first falls apart. I’m a developer; I am not a gamer. I don’t need the latest and greatest with graphics or whatever. I only need to code and do this type of work. So when I buy one, then I may wait for five years before I change it. This is my approach. That’s why I like this type of computer because once I get one; I know this thing is rock solid.

Arsalan: Right. In my personal experience, I’ve used Macs for development and I’ve used Windows computers and I’ve used Linux operating systems. Canonical…what’s it called?

David: So there’s a brand that uses Linux operating systems?

Arsalan: Yeah, so this is a problem with my memory. It is the time of day. Canonical Linux? I don’t remember what it’s called, but I’m going to look it up. Ubuntu. Yes.

David: Ah, Ubuntu. Oh, okay. I got it. It’s Ubuntu distribution.

Arsalan: So, Canonical is a company that makes and distributes Ubuntu. So, I’ve used Canonical. It works really well because I had a very beefy Windows computer.  I was doing Windows-based development and then I wanted to do other types of development like Ruby and other open source things. So, I found it very hard to work with those in Windows because a lot of the tools, tutorials are based on people who are using Macs or Linux.

David: I have a solution for that.

Arsalan: Okay, what’s your solution?

David: That is what my setup is also. That’s with my Mac. Even though I have a terminal console and everything, I still use Virtual Box. Virtual Box is like one system. So I had my Linux box inside of my Mac. So, all of the development that I do is through this virtual box so it doesn’t matter what type. So if the project is Windows, I can do it through that virtual box and I will always have the same setup, and everything.

Arsalan: Right. So, Virtual Box, for people who don’t know, is a system that allows you to run these local virtual machines and they act like they are their own computer, but this is a software layer that is running inside of your computer. So, when you install something or run something, it’s not actually affecting your own hardware or operating system. It’s not affecting the files there. It is self-contained. This way you can have a box for this environment. You can have a box for that environment. For instance, for every new client that you get, you could possibly spin up a new virtual machine and everything is self-contained there. If something goes wrong, it doesn’t affect your main computer. So, that’s the idea of a Virtual Box. It is one of the many virtual technologies, but the Virtual Box is free for a single user for a limited number of versions, I think.

David: Yeah, I like using it like that because it’s actually free. It does what I need. It’s pretty flexible. That’s why I like using Virtual Box because I don’t mess up my main operating system, which means fewer issues that can come up when I’m doing development. Some examples of issues that could potentially come up if you’re not using something like Virtual Box, is your operating system could get slower because it’s full of stuff that you don’t need. Sometimes you install something and forget about it and it’s still running in the background. So, for example, when I’m checking on the performance of my Mac, I just pause the virtual operating system and my Mac is 100% dedicated to whatever I need, which is also nice.

Arsalan: Yeah, that’s nice. That’s something that I haven’t done much. To be honest, I’ve done some development using Virtual Box, but probably not as much as I could have or should have. I was just wondering about two things that can happen. One is that these virtual machines are huge. So you need a lot of hardware space.

David: I would say that the main issue when you create a virtual machine, you have to say how much hardware space you need. Virtual Box is going to build it based on how you set it up. Sadly, I don’t know if Virtual Box has it or if Parallels has it, which is another type of virtual machine software, but it’s not free. Yet, you can have a dynamic hard drive which means that if you want to go up to 7 GB, but in reality, you’re going to use whatever you need to use. If you’re using only  1 GB then that’s the size of the file you’re going to use. The downside of that is that it’s not reliable enough. I don’t remember which one I try to do it with. But it wasn’t working so well. So, I ended up just putting a fixed number and having another file, which is annoying but it worked. Plus I have iTunes that are streaming in the cloud and everything, movies, music, whatever. So, I don’t need storage. I’m good.

Arsalan: Right. These days, hard drives are big enough so that may not be a problem, but if you’re listening to this podcast right now and you have a problem with capacity in your hard drive, that that is something that you should consider.

David: It’s good if you want to spin a bunch of them. I have just one virtual system, but if you want to spin a bunch of them, like four or five, it can get pretty annoying and you will run out of space pretty quickly. So, you have to think about how you’re going to use it, and plan for how much space you have.

Arsalan: Right. The other thing is something that I have not used as much. You can probably enlighten me on this, David. When you spin up a Virtual Box, you need an image for an operating system to load it or to perhaps install it.

David: Yes.

Arsalan: If you do that, then you need a license for that. Isn’t that how it works?

David: Yes. If you have Linux, then it’s free, but basically what happens is that when you installed it, the Virtual Box itself is just empty. It doesn’t have an operating system. You have to create one and then you have odd things like a virtual serial port, floppy disk, CD-ROM, DVD drive, hard drive, you name it. What you do is choose the CD-ROM drive and there’s an option that you can point to an ISO file. When you booted, you tell it to boot from CD-ROM, which will load from that ISO file, which is cool because then you can install any operating system that you want. But, if you choose something like Windows, then yes, you will need a license for that Windows machine. From Microsoft’s perspective, they would treat that as a separate computer.

Arsalan: What if you are on Windows and you are running Virtual Box? Maybe you want to run a virtual Mac box. How could you do that?

David: Wow, okay. You’re getting into a little bit of crazy here. I think I’ve heard of people running Mac OS, which is called Hacking Post. It seems to be working, but then you’re not doing it with the original version of the Mac. Mac OS itself is not licensed by any means. So, if you do it, you do it at your own risk. Nobody’s going to shoot you over it, but it’s nothing official and it might be unstable and stuff. So, that’s something to think about.

Arsalan: I just found a Life Hacker article on it.

David: I mean that if you want to, for example, if you’re unsure about buying a Mac and you want to play with the system, then, for sure, go and use it, and do it and get used to the system and see how you like it. Or, may be a client needs something very specific that can be just run on a Mac. Then you might go and buy one for say $1000 and install this and do whatever you have to do on it and then off you go.

Arsalan: They’re saying that you need a hacked mountain lion or Mac OS because the regular one will not work. There’s no legal way of doing it then?

David: That’s why I said it was like a hacking Post because you need an image that’s been hacked that will allow it to run in a virtual machine or even on PC hardware.

Arsalan: So, there’s no legal way of doing it. That’s what I was trying to find out.

David: No.

Arsalan: so, if you’re in Windows then you would, unfortunately, have to buy a Mac to use it, if you want to work on it. The good news is that you don’t necessarily need a Mac if you’re doing any open source development. Yet, you will need a Mac. If you’re working off of Xcode, for instance, if you’re doing iOS development. You’ll need a Mac if you’re working on Mac software. But, if you’re working on, Python, Ruby, PHP, or anything like that, you can still use Windows or Linux which is free.

David: Yes. If you have Windows, you can always have a Virtual Box with Linux inside. Yet, in the most flexible situation, you would have a Mac that would legally allow you to install Windows or Linux, whichever you want. In theory, that’s an option.

Arsalan: So, I’ve used all of these different types of computers. While I’m talking to you I’m connected to a Mac, which is a MacBook 13 inch. It’s similar to yours. The only difference is that I have a MacBook and you have a MacBook Air. I really like this and I recommend this computer for people who are starting out, and they have a little bit of money to spend. Not only is it very hefty, it is a standard MacBook. It came with the solid-state drive, which means that it doesn’t have those spinning hard disks, which makes it fast to boot up. It’s pretty fast.

David: Yeah, and the nice thing is that you can bump it. You don’t have to be gentle anymore. You don’t have a spinning disk that might get damaged, which is always a nice feature to have. Plus, if you have a virtual machine that also helps because it helps to boot and to run stuff smoothly. I have this virtual box that I don’t treat any differently that runs when I’m running my Mac normally. I also don’t see a difference inside the box. Everything works perfectly. So that’s a good thing.

Arsalan: Yeah, that’s great. So, I see a lot of developers who use 15-inch laptops in the Mac world and 17 inches in the Windows world. Certainly, there’s a case to be made for larger screens. However, I have an external monitor and I can always hook up my laptop to that. Then, I can go as big as I need to. So, that argument doesn’t hold. I think, when I’m traveling, or when I met a coffee shop or at a client’s site, that’s when I use my laptop without a second screen. In those cases, for me being compact and easier to carry is more important. So I preferred the 13 inch over the 15. What do you think?

David: Well, I prefer the same. I also have a 13 inch and I don’t have an external monitor or an external keyboard. My reasoning for that is that I don’t want to get used to those external things that might not always be with me. I don’t want to be sitting at home using a special keyboard because when I go out to someone I have to use the keyboard that’s on my Mac. So, I’m not used to it in the same way that I am used to the external one. The same goes for the external screen. If I had a second monitor, then when I am without it I would constantly be thinking about not having it, and then not feeling comfortable about it. A couple of years ago I decided to get rid of that stuff and be comfortable with what I have. Now wherever I go, I always feel right at home wherever I am. That’s my approach to these types of things.

David: I can do everything that I need to do. It makes sense to have a second monitor to be more efficient, but in the end, if you don’t have it, then you just get used to doing the same things in exactly the same way. For me, I find that’s most important because then I’m more comfortable with my keyboard. I can type very fast on it right now and I don’t have to switch and worry about getting used to something else.

Arsalan: Right. I think that’s a very good point. It also depends on the type of work you’re doing. If you are doing text-based work, and you’re in a text editor, that’s primarily what you’re doing. You are inside a text editor and your typing and running commands and you need to be in that window or program all the time, then you should only use one screen because everything else is a distraction. When you are switching between different programs, you’re going into a terminal, you’re going into a browser some of the time, you’re going into may be two different types of text editors, maybe you have a differing software to tell you what’s changed and everything is happening at the same time. Sometimes that type of work is warranted.

David: Yeah, that’s true.

Arsalan: But in some cases, maybe even in most cases, when we are putting our heads down and doing development, we are just typing. In that case, you only need one screen.

David: That’s true, but that’s my point with getting used to it. For example, now in Windows, you could do the same thing that you can do in Mac. You can have full-screen applications and switch very easily between them. Now, on the Mac, you can do side-by-side applications, which works quite well. That’s why I always try to use something in its original form as much as possible and see how much pain I am in before deciding whether or not to buy a new piece of software or equipment like an external monitor or different keyboard.

Arsalan: Good. Okay, so let’s talk about the software that you use. We’re going to talk about some other parts of your set up. We’re going to talk about backups and all that other stuff, but I think it’s important for listeners to understand how you do the work. You probably use a nice text editor to edit your program, right?

David: Yes. So, right now I use Sublime text. I did try a bunch of different stuff over the years, and this one is the least annoying. It’s not perfect, but I’m not someone who gets all emotional over text editors. Some people use text editors as a way of life, kind of. But, this is a tool for me. It just needs to allow me to do my work. Right now, Sublime is the one that is the least annoying. That’s what the tool is supposed to do. What do you use? If you use C# development, then you have to use Visual Studio, right?

Arsalan: You don’t have to and that’s not all that I do. I use Sublime for most of my development these days. Today, in 2017, you can use Sublime to do all kinds of development because of all of the plug-ins that it comes with. It’s a fantastic tool, but it’s not a complete, integrated development experience. So, what I want our listeners to know that most of the rest of us know because we’ve been in the industry for a long time is that there are two different kinds of editing environments.

Arsalan: One is a simple text editor with some nice features that help you to type quickly and edit text quickly and they do syntax highlighting a little bit and they do indentation properly. They have a little bit of intelligence with the programming language that you’re working with. The other type of text editor is a complete, integrated development environment, or IDE, which tries to do more than that and is very specific to a particular framework that you’re using. For example, if you are on a .Net project, then you’ll find this IDE called Visual Studio, which is very comprehensive. It is also very slow because it is comprehensive, but it not only lets you type and do all the other things that we talked about, it also lets you build, compile, publish, and all these other things. It does all these database things and way too many other things in fact.

Arsalan: If you’re working in Java, then you’ll find this IDE called Eclipse and Eclipse even has plugins for so many different languages. There are too many choices right now. But if you are just starting out and you don’t really know what you’re doing, I think my recommendation is that if you are running Windows or a Mac or if you’re in Linux, then your first choice should be Sublime Text.

David: Yeah, but Sublime Text is not free. You can use it for free, but it’s going to annoy you sometimes with a reminder that it’s not free and to pay for it. Yet, another one is called Atom, which is free but the downside is that if you have big files that go over 1000 lines, that app becomes very slow and unusable. Sublime Text is way more efficient with big files. Let’s say that you have a file that doesn’t even have that many lines of code, but you open an SQL file, which can be 10 MB or more. With the atom text editor, you might as well forget it. You won’t be able to even open it. But with Sublime Text, you can do something. It’s easier and more efficient in that regard.

Arsalan: I think another tool or text editor that should get our mention is something called Visual Studio Code. Is a fast and simple text editor by Microsoft. It’s free. It’s used by the Angular team, for example. It’s also used by a lot of hard-core JavaScript developers. It’s a text editor with some nice features and its super fast. It’s a competitor to Sublime Text. So, it’s something to check out, especially if you are in Windows. I’m not sure if it’s available for a Mac, but it certainly available for Windows. So, if you’re on Windows, definitely check it out. If you’re on a Mac, you can look it up. There’s another text editor that a lot of us like it’s called Notepad++. It’s a fantastic text editor for Windows. It is completely free and open source. It does way too many things. It has a lot of plug-ins as well. So that’s the ultimate use for 20 years, but it’s still very nice and I still have it on my machine.

David: Very well, yeah. I heard of it, but it was back in the 90s. I didn’t think it was still alive and kicking.

Arsalan: It is still alive and kicking. It is really kicking butt because it does a lot of good stuff for you that you would expect in the can do the formatting for you. It recognizes many different languages. If you have an XML for instance, it will organize in a way so that you can open and close nodes. It’s very nice for some things. The best feature, in my opinion, is its fine feature. You can actually point towards a folder or directory and you can ask it to find files with a particular text in it. That works better than the built-in Windows feature. It’s a really super fast at organizing and it’s incredible. This is a very nicely engineered product. So, I recommend that. Basically, try everything and then see what you like.

David: Definitely. Do you use something to organize in GitHub or repositories?

Arsalan: I don’t. What do you use?

David: I used Tower, Tower two, which is an upgrade application. I use a lot of paid applications because they realized over the years that if you pay you’ll get the extra quality of the software that makes it better and you don’t have to think about it. It just works. For example, there is a GitHub obligation to manage a GitHub repository. It’s freeze. So you can use it. But if you don’t like the common line or you get confused by the common line, which is what I do, I don’t like common line applications because my memory is not that good, I need icons and things. Then, you can use it for free in the GitHub app, or you can pay but I don’t remember how much, for Tower ended up allows you to literally manage every aspect of a get repository. It’s very convenient and very fast and this is something that you can just click left and right and it’s done. You don’t have to fill it with the common line unless you are better with a common line. Then, don’t use a better UI application.

Arsalan: Yes. So, I actually use the command line, and I haven’t heard of Tower before. So, I just looked it up. It looks like it’s now available for both Mac and Windows. So, that’s good.

David: Yes, there’s no problem with this.

Arsalan: They just made it available for Windows as well. There are also other clients. For instance, GitHub has its own client.

David: Yeah, that’s the one that I was mentioning, but it doesn’t have its own name. It’s just GitHub for Mac, basically. It’s like the GitHub for Windows.

Arsalan: Right. Then, there are other tools as well like SourceTree.

David: Yeah, there’s a bunch of them. I could almost say there are too many of them. Everybody tries to build one that’s basically better than the other ones. After everything, I think there are at least four of them that are the most known on the market. The paid version of Tower kicks everybody’s butt. It’s well designed. It’s clean. It’s simple and it just works. To me, it’s worth the money.

Arsalan: Sure.

David: If you do a lot of repository work…

Arsalan: Yeah, if you do a lot of repositories and if you do a lot of pull requests if you’re going in and out. And if you’re merging and cloning and doing a whole bunch of stuff with gets, that a tool like this could be very useful.

David: Yes, it saved me a ton of time. So that’s worked for me. To me, it’s worth the money. For example, when I was using GitHub for Mac and I had to fight the interface, it was just a waste of time for me. Sure, it was free, and if you do some stuff from time to time, it’s fine. Yet, if you have a lot of repositories that you have to take care of, then Tower is the way to go for me.

Arsalan: Yeah, so I just looked up the prices. The price is $79 for a license.

David: Like I said, it’s 100% worth it. If you buy it once, then you have it for life.

Arsalan: That’s good. So, let’s talk about your backup solution.

David: Backup solution. I don’t have one. That’s how awesome my backup solution is. I do it completely different than everyone else, I think. Back in the day when the cloud didn’t exist, you did backups by basically backing up the whole hardware. Every single time you were saving a file you were backing it up and then restoring from the last image. For example, even Mac and Windows have the built in native backing up solution so that when you touch a hard drive over USB or over the network, then you could back up to them. Yet that stuff is so slow because those backups copy every single file, one by one, which is super inefficient. Now, these systems take 5 GB of data. So, enjoy copying that, especially for the first time.

David: When you’ve had a backup running for a while, you may say that your backup has been running for five minutes, but if you try to do the first one which is the whole first copy of everything. It just takes ages. So, I decided that everything was in the cloud anyway. I don’t backup my apps because I buy them from the Apple Store. So, the Apple Store is my backup. If I have to restart my operating system from scratch, I go to the Apple Store and search through the app store and click install on everything that I bought before.

David: I have a bunch of apps that I buy from outside of the Apple Store and I know exactly where to find them. So, I just go to the website and recover the account and then I can reload the app without any problems. Files that I actually need to backup are either on GitHub, but since all of my code is backed up there, I don’t have to think about it or worry about it. All of my slowly changing files like documents, images, or whatever are on iCloud. The cool thing is that if I throw away my Mac and then log in again, I literally have all of my files back where they were. So, basically, the only thing that I’m backing up is my iCloud drive, which is backing up quickly. So, that’s what I do. So, everything else I don’t care about. Stuff is on GitHub. Stuff is in iCloud. Apps are in the app store. Photos are in iPhoto and that’s it.

Arsalan: Right. So…

David: One more thing. The same goes with movies and music and everything else. Everything is in iTunes, and everything is streamed. So, that’s why I choose the Mac. I can throw this out the window and get a new one and be back to work within two hours.

Arsalan: I think that’s primarily because all of your work projects are in the cloud, as you said. They are on GitHub, for instance.

David: Yeah.

Arsalan: You should not have anything that’s on your computer that is also not in GitHub.

David: Exactly, and the same goes with everything that’s on iCloud. Everything goes there.

Arsalan: That’s sort of the workflow that I have. I have a network, attach stories device, which is a big hard drive on my home network. I have occasionally uploaded images for my computer over there, just in case something happens. That way, I can restore it. As you said, it’s too painful to do and generally speaking, my computer works fine except for once every few years when it’s going to fail. You might want to just check take the chance because all of your important stuff is in the cloud. I watch a lot of Netflix. So I don’t have copies of videos or YouTube. The thing is, everything is already in the cloud. The only thing that’s on my computer that is not on the cloud is the things that I don’t want on the cloud. They are very temporary things sometimes.

David: Ah. So I have a solution for that. My approach is this. As an example, my clients give me their SSL certificates and their pilot keys. You might think that I am crazy for storing them on the cloud. To solve that problem, I create 50 MB virtual drives on my Mac. I don’t know if you can do that on Windows now, but for sure, you can do it on the Mac. You create a basic drive which behaves basically like an SD card. I then encrypt it with the most secure option settings that I can find. They always say wait a month because it’s going to be slow, but nowadays with five courses 8 GB of RAM, there is no slow here.

David: So, I create this virtual drive and I mount them on the system and copy all the secret stuff. When you unmount them from the system, they are encrypted. So, without the password, you cannot get in. So, I even put all of my SSH keys they are. So, every time that I unmount the drive of a client, you can immediately not access the remote servers of that client anymore. When you mount that drive again and put the password in, the system then decrypts the drive. This way, I can store the stuff in the cloud and I don’t care because they are nice and encrypted with a very long password that would make everyone cringe when they see me typing them. So that’s my solution for that.

Arsalan: That’s good. So, we talked about the type of computers people can have and the type of text editors or integrated development environments. We talk about backup solutions. The time is flying and it looks like we have to wrap up, David. Do you have any final advice on what any new developers or people who have been in this industry for a couple of years, anything with your experience that they can do to make their lives easier?

David: Don’t waste your time configuring your ID. Try to live with the bare minimum with the default configuration with your one screen and default keyboard on your laptop. Work with that until you feel the pain that you’re using that thing and you feel that you need to have an extra thing. You need to change this configuration. You need to connect an external monitor. This is the rule that I apply to basically everything that I do and it works well. It allows me to just focus and get used to the default settings. Then I just do the extra other things that make my life actually easier. If I get used to it, that I get used to it and I can just enjoy working without thinking about what type of font I need. Do I need this want to be red or would it be better in yellow? What type of background? I don’t have that nonsense. I don’t care about all those things until I’m in pain and I’m screaming in my head that I need to change something, or I’m going to go crazy. That’s it.

Arsalan: I think that’s really good advice. I’m going to add to that to make sure that you’re enjoying your work. If you are doing software development, you should enjoy your work. Sometimes that means changing the color scheme a little bit to suit your eyesight, the work environment, for may be the lighting. Sometimes you need to choose different themes. Don’t change it because you’re bored. Change it because it makes you happier. Usually when you choose the setting, a font, or colors, and other types of settings that you can have, once you have it the way you like it, generally people don’t change it. I have spent some time in the past, taking a couple of hours just to get everything right. I have noticed that it makes me want to work more. It makes me better, but obviously within reason.

Arsalan: All right, David, this is been a very interesting episode. I hope that people who are listening right now have enjoyed it. If you’ve enjoyed this advice or if you have your own advice that you would like to share with others or your own experiences, send me an email. My email address is us@mentoringdevelopers.com. My twitter handle is @MentoringDevs.

Arsalan: You can also get in touch with David. He loves to get in touch with the audience and hear their thoughts. He’s got a lot of experience and he’s a nice guy. So, he’s going to help you out. What’s your contact info, David?

David: You can reach me out on Twitter. I think that’s the best one. Sometimes I get people asking me questions on how to fix the problem in my app. It just makes life interesting. You can find me @Dawid Gatti on Twitter and you can shoot me any questions that you want.

Arsalan: That’s right. David, what’s your expertise if someone wants to hire you and they say to themselves “hey, David sounds like he knows what he’s doing?” You’re an independent consultant. You do contract work. What type of work do you do?

David: I do mainly backend development with NodeJS. I build and design APIs. I also know how to configure and set up all of the AWS that’s out there. I also focus on efficiency when it comes to those APIs.

Arsalan: Excellent. If you need to hire David, get in touch with him. Or, you can get in touch with me and asked me a question that you have. If you are confused about your set up, let me know. If there’s any way that I can help you, let me know. All right, everybody, I’ll see you later.

Important Links

Ubuntu

Virtual Box

Sublime Text

Visual Studio

Eclipse

Atom

Visual Studio Code

Notepad++

Tower

SourceTree

Thanks for Listening!

Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.

If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.

You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts. 

https://media.blubrry.com/mentoringdevelopers/content.blubrry.com/mentoringdevelopers/MD-episode63-Tools_Of_the_Trade_with_David_Gatti.mp3

Episode 62 – Kelly Karsnia and the power of determination

July 25, 2017 By arsalan Leave a Comment

Kelly Karsnia with Mentoring Developers co-host, Sara Ines Calderone
https://media.blubrry.com/mentoringdevelopers/p/content.blubrry.com/mentoringdevelopers/MD-episode62-Sara_with_Kelly_Karsnia.mp3

Podcast: Play in new window | Download

Subscribe: Apple Podcasts | Google Podcasts | Spotify | RSS

It’s hard to really understand what it’s like to pull grunt work until your fingers mentally bleed (or physically, in some fields) and work your way up the corporate ladder one tiny step at a time until you reach your destination. Yet, if you’ve been there and have gone through every inch of every step yourself, you understand this. It’s not magical. It’s work. In fact, it’s hard work, very hard work. Yet, our next guest has been there. Come push or pull, Kelly Karsnia has climbed that ladder and is here to tell you her story.

Kelly began her career as a customer service representative. She spent time in a call center, seated behind one of a gazillion cubicles answering call after call in technical customer service for a travel and transportation company. While many people in this line of work are happy moving up the corporate ladder to become a call center manager or more, Kelly saw a different path for herself.

 

Kelly had a strong desire tugging at her heart strings and beckoning her toward the path of software development and the world of technology. Despite having little knowledge in the field, when Kelly saw the possibility of an opportunity open, she jumped and has never looked back or been happier. Now she’s here to tell you how she reached her destination and the struggles she faced along the way. Listen in to episode 62 to hear the interview between special guest Kelly Karsnia and Mentoring Developers co-host, Sara Ines Calderone.

Kelly’s Bio:

Kelly Karsnia is a self-taught mobile developer (iOS and Android), Director of Engineering, and an advocate for underrepresented groups in tech who lives in Austin, Texas. She works with Women Who Code Austin, Lesbians Who Tech Austin and Austin Women in Technology. She has a cute cat named Piper, loves woodworking and kayaking.

Say hello to Kelly on Twitter!

Episode Highlights and Show Notes:

Sara: Hello. My name is Sara Ines Calderon and this is Mentoring Developers. Today, I’m here with Kelly Karsnia, my friend, and also an amazing developer. She is a self-taught mobile engineer and she is here with us today to talk about her career. Thank you so much for joining us, Kelly.

Kelly: Sara, thank you. You are so sweet. Sara is amazing as well and I am delighted to be here with you.

Sara: Thanks so much. I just wanted to start off by asking you to tell us a little about yourself. I met you, was it last year?

Kelly: Yes.

Sara: It seems a lot longer than that. I met you last year at the Google I/O event in Austin, but then we met again at the Women Who Code at Austin Slack and then we became friends because you are helping me with an iOS issue that I was having with Phone Gap. Then, we became friends in real life and that’s why I feel like I’ve known you forever. So, tell us a little about yourself. I know you’re involved with a few organizations, not just Women Who Code Austin. I want to hear all about how you got into software development.

Kelly: My name is Kelly Karsnia. I’m the director of engineering at a company called Tabbed Out. It’s a mature startup here in Austin. As Sara said, I am on the board for Women Who Code Austin. I’m on the board for Lesbians Who Tech Austin. I’m also on the advisory board for Austin Women in Technology. I’m also a kayaking and woodworking enthusiast.

Sara: I’ve seen the woodworking and it’s pretty impressive for the listeners out there who don’t have a visual. That’s awesome. I’m super impressed that you keep up with all of those organizations. I’m impressed because I also know you in real life, but I think everyone who is listening will also be impressed. I hope you guys are ready.

Sara: Kelly has a really great story. She’s one of those people who, if we believe in the term “pull your self up by your bootstraps,” she’s definitely one of those folks. So, I want to hear more about how you parlayed one experience after another into your current role as Dir. of Engineering.

Kelly: I started in a call center for a social science research firm. We were doing transit and travel studies for departments of transportation and councils of government across the country. It was very low-level work, but I saw the direction in the company and started to go with it and worked my way up to corporate. At corporate, I was working in verification and working on some more dead level projects that we had and saw that the company was ramping up their IT department in the direction that I was going. I decided that was the direction I wanted to go in. I didn’t have the qualifications. My degree is in CS. I have my Associates degree in computer aided drafting and design, but I’ll tell you this, I’ve never once used it.

Kelly: So, I saw this new direction and I was fascinated by it. So, I started applying for every IT job that my company was posting at the time. The last one that I applied for, the current director of IT who had formerly been the director of the call center that I had worked at called me into her office. She asked me if I knew anyone for that position. I answered yes, me. She laughed and said you’re not going to give up, are you? I said no, absolutely not.

Kelly: From there, she created this technician position within IT so that I could be a liaison between the people that we had just brought in and IT and the rest of the company since it’s very highly specialized. There is a lot of terminology lingo and different aspects that I already knew about and could help relay to the new team. So we started there.

Kelly: As we went along, we did not have any QA for any of the software that we were creating. SO, I talked to her and took it upon myself to implement an entire QA structure for software within the company.

Sara: I think this is really interesting because I think it’s going to come up again and it’s really important for listeners who are probably also trying to advance in their careers. What words do you use? What is the conversation like when you see an opportunity and you notice there is a need and you want to address it? How do you say why not me?  What’s the verbiage that you use to have that conversation?

Kelly: When you see those opportunities and you see the need, read up on what it is you want to implement before you go and talk to anyone. You don’t have to be an expert, but make sure that you can speak intelligently on it because if you were the expert then you would already be in that role. Show them that you have been learning about these things and that you want to learn more. Show them that you were actually capable of doing those things. Go in and be confident. Then go in and have the conversation of “hey, we don’t have anyone specifically in charge of this thing. Here’s why we need it, and how to implement it, and I’m the person for this because I’m the one who’s having a conversation with you that no one else has.” To that aspect, you could say that about anything. At the same time, if you have the sincerity and conviction, it really works for you in a lot of ways.

Kelly: I’ve been called an “atta boy” before. I don’t agree with that at all. I think it’s more of an enthusiasm and a passion for learning and always doing better.

Sara: That’s cool.

Kelly: So, when you are able to show people that, and obviously you can’t do it right off the bat and roll into a new position and a week later say that you want to be director of engineering, that’s typically not going to fly. But, do the best that you can and look for those opportunities where you can be the best fit possible.

Sara: That’s really good advice. Thank you so much. I didn’t want to interrupt your story. You implemented QA from scratch at this research company.

Kelly: Right. It was a lot of learning and research on my own time. It was very time-consuming. However, it was very worth it. I really enjoyed it. It was something that I have really never thought about before. Once I really started getting into it. It fascinated me and once I started, it allowed me to see how our technology was working and really be able to give solid inputs because I had a lot of knowledge in the areas of the software that we were building. So, I really started breaking things.

Sara: In the existing infrastructure.

Kelly: In the in existing infrastructure and as a new QA. I’m not going to lie, I made some new developers cry. I’m not very proud of that. I could’ve done better on that, but that also taught me a very important learning aspect of how to interact with people. You catch more flies with honey, but not all the time. So, I was kind of hard on the developers, to say the least, and I started thinking that maybe it would be better for me to learn how to do these things myself. That’s because they didn’t always have the answers that I wanted to hear when things would break.

Sara: Do you mean like why is this broken? It’s the eternal question.

Kelly: Yes. As an engineer, I now realize that I could’ve done things better. I was talking with my developers and was like I want to understand but I know that you can’t always tell me. I really want to learn. So they set me up with some of our codes that I could play around and learn with on my own time. I didn’t even have my own environment. So I was just playing with codes and going through them and figuring out how everything worked together and using Stack Overflow and Google. I would modify something and it would break. Then I would go and figure out why it broke and how it was fixed.

Kelly: When I was doing that, I was fascinated by it, and I fell in love with writing code. Code to me is a giant puzzle and I played that in a lot of things in my life. Figuring out the puzzle and how it fits together and being able to modify the puzzle yourself is something very special to me. It gave me a new outlook on life and it also gave me a new direction in life on where I wanted to go. So that was really amazing, but I will say that there are limitations when you are learning. For example, I started out with Android because I couldn’t afford a Mac. Yet, Android allowed me to learn the basics of how we were doing mobile development.

Sara: So, you were working at this research company and you were talking to the developers and you were doing QA and decided that it would be interesting and worthwhile for you to learn how to write code. Then, you didn’t have a Mac, so you decided to start with Android. So, they were doing mobile apps? Were you doing QA for mobile apps?

Kelly: Correct. We were just starting to foray into the mobile app world. This was about seven years ago when the government research sector was a little more behind the times. So, it was kind of a tough sell.

Sara: Wow. So then you started doing Android development, which is awesome. So, what did you do then? You started doing Android, but we know that you’re a bilingual developer. What happened after you started learning Android development?

Kelly: I started working on Android and I reached a point with a simpler survey application that was pre-built out that I had been playing with and learning. We needed a modification on that. So, I went to my director who gave me my shots and believed in me and allowed me to do the QA and all the stuff. She knew that I was learning on my own. I went inside and said that we don’t need to hire a third party. I can do this. So she agreed. She trusted me and believed in me. She said that if at any point, I feel that I can’t do this, tell her and they would get someone else. Project deadlines are very important. There’s ego and then there is the reality. You always have to keep in line with reality and don’t think back because it will look bad on you if you try. Always be realistic with what you can do and what you can’t especially when you are self-taught. That’s very important.

Kelly: So, I had two weeks, and I made all of the modifications. It was the first time that I had ever seen my code go into production.

Sara: Because you QA’d it to?

Kelly: Actually, yes they did. Don’t ever do that, but they did have me QA my own code. I did ask some other devs to check it for me as well. They did, but it was more of a walking through and making sure that nothing in the service level was broken.

Sara: Wow.

Kelly: There is still a very special place in my heart for transit and travel. So from there, I expressed interest in learning iOS. They agreed and asked what I needed. They went out that day and bought me a math book. They told me that when I got up to speed on that and started feeling comfortable with it, to let them know.

Sara: That was still on your own time though?

Kelly: Yes, it was still on my own time. I had some company time to do it while I was doing QA and more Android code. It was vicious, but I loved it. I knew that the opportunity was not once-in-a-lifetime but at that time, was what I wanted. So, I put my nose to the grind again and within four months. I went to them, we were scoping something else, and I asked for my first shot at this. I built my first iOS app scratch along with an Android app from scratch at the same time.

Sara: Wow.

Kelly: It was pretty intense with the transit and travel industry making these apps, there are a lot of location service aspects involved. There are very calculated things that you have to do to be in compliance with what departments of transportation and councils of government consider acceptable data. So I was really focused on, not just from a QA aspect, but also from a data aspect, of understanding this industry on how to collect that data. They did some really interesting things that I had to explain to the Apple store, but at the end of the day they ended up being okay with it.

Sara: Wow. That’s awesome. So, then you became a fully-fledged mobile engineer.

Kelly: Yes, I was hooked at that point. It was a lot of blood, sweat, and tears, but the payoff and the way that I felt after each of these was more than worth it.

Sara: Yes. So, then you’d did do different types of contract work if I recall correctly. You worked at different companies after this place, all in mobile development, before you landed in your current position. So, do you want to tell me a little about how that went for you and how you mentored or were mentored along the way?

Kelly: Sure. Mentorship played a role in my career from the aforementioned director who gave me my shot, Miss Saundra. She was the director of IT. She had actually migrated from the director of the call center to director of IT without knowing much about IT. She was a very good director. She was always my cheerleader. She showed me that as long as I worked hard and acted with ambition, I could achieve goals that seemed far-fetched and almost fantasy. This was really great for my start in IT and I’ve carried it throughout my entire career. So, that was always very special to me. All it takes is one person.

Kelly: I’ve had mentors along the way, but we’re still in touch. Every mentor that I’ve had, I am still in touch with. They’ve boosted me to where I am now and that is invaluable.

Sara: That is so cool.

Kelly: You never forget those people.

Sara: Yeah, definitely. So, tell me a little bit about how you found these organizations that you’re involved in like Women Who Code Austin, Lesbians Who Tech Austin, and Austin Women in Technology and how those are opportunities for you to either continue to be mentored or for you to mentor others, and how you think that is important.

Kelly: Well, as you said, I initially met you at Google I/O Extended. Sara gave me her card and we were both front and center and ready to go.

Sara: I was there with Women Who Code Austin. That’s how I got there.

Kelly: I was there for my current company. They got me in and I was front and center and ready to go and I was actually getting ready to do my first live tweeting session. I was super excited. I had just gotten into Twitter and I was ready and that I meet this amazing woman, Sara, who gives me her card. And I was like oh wow, Women Who Code.

Kelly: We go through the thing and we touched base a little bit after, but were all amped up from Android and Google. I mentioned to one of my buddies at Lesbians Who Tech that I had met Sara and that I thought she was amazing. You and I got back in touch.

Sara: You were mentoring me and iOS on Slack. Why is this broken?

Kelly: It was an experience, I will say. Never be afraid to ask for help because you never know who’s going to be your salvation and it was great because Sara and I talked through this. I don’t know if I was the ultimate solution, but I gave advice on different things and I sent articles and documentation just to make sure. This probably didn’t take more than over the course of three days. It was like two hours of my time spread out.

Sara: From my perspective, honestly, even you just saying that that had happened to you before made me feel that I wasn’t stupid.

Kelly: then we were making jokes with each other about different aspects of iOS that could be better.

Sara: Now, I’m a mobile developer.

Kelly: This girl’s amazing; I mean I’m in the presence of greatness now. I am basking in this glow coming from her right now.

Sara: So, we met at Google I/O and then we were talking about Lesbians Who Tech here in Austin.

Kelly: At that time, I was just going to different meet ups and happy hours. I started being around all of these amazing women in tech who were incredibly inspirational to me with who they are and what they do to boost women in tech as a whole. So, I decided that I wanted to join these amazing women and I started really getting involved with these organizations that go beyond meet ups and happy hours. I was finding ways where I could be a benefit as a mobile developer because there’s so few of us, to begin with, and there’s even fewer between the Android and iOS specialized areas.

Kelly: So, I dug in and started to talk to more people and Sara and I reconnected and I believe you asked me if I wanted to, was it Country Girls Can Code?

Sara: probably, yeah. So, we had an event. It’s not my event Women Who Code works with women, but through Women Who Code and yoga I became connected with a really cool group here in Austin. Techs4Tex organized the event during the last two years. It’s called Country Girls Can Code and they bring rural high school girls from parts of East, Central, and South Texas to Manor, Texas for a day of coding. So, I was volunteered to help organize this event and it’s always really great to see the young ladies. It was the first time that they’ve ever built a whole thing. Most of the time they would’ve done a bit from Minecraft or a little bit of this and that but I’ve never built anything like this from scratch. So, that’s always cool.

Sara: This year we had them all make GitHub accounts and they pushed up all their code and we showed them how to use the command line a.k.a. we did the command line for them and they watched. I wish somebody would’ve done that for me.

Kelly: A.k.a., we all googled syntax, or at least I did.

Sara: Why is it broken? But yeah, so through Women Who Code and Udemy, I won a scholarship to do an iOS class. So I started doing an iOS class and my first app was a Hello World app. I thought this is a really cool tutorial. So, I asked Kelly if she wanted to teach the children iOS. So, long story short, Kelly taught the children the iOS tutorial.

Kelly: So, I led the tutorial and sorrow kept me and the young ladies on task and on a timeline because I wanted to help everybody. Sometimes, you just gotta get up there and lead.

Sara: There were 50 of them there, by the way.

Kelly: There were 52.

Sara: 52 high school girls. That’s a lot of girls.

Kelly: One of my favorite stories was this. After we got through the tutorials, there was an HTML component for the web that they were learning; we split them up into two groups. Half of them were doing HTML and CSS, and half of them were with me. Then, they switched with me and Sara. We got through that and then we allowed them enough time to come back and ask questions and finish up.

Kelly: One of these young ladies was having a tough time when she came back for the Q and A. I’ll never forget her face or the frustration on it. She said, “My code is failing, just like I am.” So, I said, “No, absolutely not. If I run code for 20 minutes and do not fail at something, I’d be like what is going on here. Xcode is not this nice to me ever.” So, is really special for me to be able to connect with her and she laughed and was like “really?” One thing that was also cool was during both of the tutorials that I did. There were build issues that I was able to highlight and show them how to work through. One of the most maddening parts of being able to teach yourself is getting frustrated with IDEs and product set up, and how to actually work through those and do all that. You look around you all the time at these companies and you don’t see the struggle on everyone’s face.

Sara: Sure.

Kelly: So, it’s important to make this struggle apparent and I feel that’s important because a part of mentoring is allowing people to understand that there are going to be frustrations and the frustrations that you have are along the lines of the same frustrations that they have. It’s okay because you can work Passed this. If you can get through this, you can get through anything.

Sara: Sure.

Kelly: That was something that was ingrained in me from the start. Keep fighting and if you don’t give up on yourself that no one else can give up on you. I mean they can, but you’ll keep going because you never gave up on yourself. There are pitfalls. There is quicksand that you’re going to hit. There’s all that but never stop. Allow yourself to have some kind of mentorship ability and even when you don’t have it, work your way up there. Even if you think that you’re not going to be a good mentor, you will probably surprise yourself.

Kelly: I had a company once told me that I wasn’t good for a job because I only had three faces.

Sara: That’s because they were judging the facial expressions you made.

Kelly: Right. They were judging the faces that I made.

Sara: Man, that’s crazy. That’s very professional. So that’s nice.

Kelly: Those were not any of my mentors.

Kelly: I think that’s a really great thing to highlight and I think you and I had conversations about this too. If you don’t decide at some point that you are going to make this happen, you are going to be a developer, you are going to be a QA, or whatever it is you are going to be, I think that inspires even mentors to take confidence in you. So, obviously, you can’t just get a mentor by conjuring one up. You have to keep working even if you don’t have those mentors in place and kind of mentor yourself or find mentors through organizations. When I met you, when we really started communicating on Slack, I was like “why is Phone Gap the worst thing ever? Will someone help me?” For those who were wondering, the answer to my problems was that it wasn’t broken in Xcode only in Phone Gap.

Kelly: Exactly, because we talked about that. You were like no, it’s just broken here.

Sara: It’s not actually broken.

Kelly: You know what; I don’t have the most robust experience in Phone Gap. But, what I was able to do since I’m self-taught and know all this; I hit Stack Overflow and Google. I researched all the knowledge that I do already have it and was able to piece some things together and send it over to you. I will say this, in terms of being an unexpected mentor and not even knowing it, I had been in the Women Who Code Slack for maybe a month or two and I had been waiting for someone to just ask a question about mobile. Finally, Sara asked the question and I’m like “I’m right here. I’m right here. What do you need?”

Sara: That is so funny.

Kelly: Will work through this together. I’m just so happy that there’s some solidarity here and something that I can provide value in because that makes me feel good as a person to spread the knowledge of what I’ve learned over time and to allow other people to understand that there are struggles that we all go through. Also, they are not the only one struggling. There are other people who have been there before them.

Sara: So, thank you. I love that. You tell the best stories. One of the things that I want to talk about now is, and this is something that we were talking about earlier, though not on the podcast, that I volunteer a lot of my time to Women Who Code Austin.

Kelly: Yes you do and thank you for that.

Sara: But you also volunteer a lot of time to Women Who Code Austin, Austin Women of Technology, and to Lesbians Who Tech Austin. What is the value of mentorship? I mean, these are advocacy organizations in one definition of what they do. So, how do you feel mentorship can change technology and change the space for women, for the LGBTQ community for people who are “underrepresented” in technology? I think, fundamentally, that it can because otherwise, we wouldn’t be volunteering all this time.

Kelly: Yeah, I agree with that. How I feel about that is that there is so much solidarity when you’re mentoring and when you’re being mentored because you have someone who is literally there and you are not alone. Whether you are there for someone else or someone else is there for you, you have at least one person either way. Neither of you is alone in that. You see this community as a whole where we are all there for each other and we all have solidarity with each other. So, when you’re having your loneliest day or that moment when your code is broken and you don’t know why, or, you are that project manager and nothing is going as well as you thought you have a community around you or people who you can talk to about this. That’s why we are mentors and mentees.

Kelly: This is the important aspect. You don’t just celebrate when something goes right. You talk to people when things go right and celebrate it. You talk to people when things go wrong and when you fix it, you can celebrate together. Mentoring not only helped me to become the person who I am today through being continually mentored, but it also helped me in furthering myself through mentoring others. When you are mentoring others, you get a much better grasp of the field around you and the people coming into your field, which is monumental.

Sara: Yeah, that makes sense.

Kelly: Right now there is a director hiring junior developers. I don’t necessarily look for people who know the lingo. I look for people who have the will to learn. I am looking for the people who have something to offer who I can work with. I am looking for the people who have the ability to just get after it and better themselves. That’s important to me because when I mentor, I see that and I know that from being mentored that is important.

Kelly: I wouldn’t be where I am today if my mentors thought because I didn’t know everything, every acronym, every single piece of tech jargon out there, that I wasn’t worthy of the job. So, that really changed me and it also allowed me to get a better understanding of not just coworkers or people in my field but friends, family, coworkers, and everyone in between. You start looking at things differently because you experience different things while working with people hearing other people’s experiences and sharing yours. I never thought I’d be on this podcast speaking intelligently about this or that anyone would care.

Sara: Yeah, they care.

Kelly: Thank you, Sara. It means the world to me. I hope you can tell that even through this podcast, the way that Sara and I lift each other up. This is not fake. This is genuine.

Sara: This is totally real.

Kelly: This is what we do with each other as friends.

Sara: It is way too late on a Tuesday to be lying.

Kelly: It is. It is way too late on a Tuesday to be lying. It’s been a long day for both of us, but we’re here and we’re doing this because we care about each other and we care about the community. It brings so much solidarity and understanding to the community. I’ll say that mentoring in general. The side you’re on doesn’t matter. It will make you a better person as long as the person you were working with on both sides of the fence is someone who is accepting of feedback and also the way that things are working around you. I’ve talked a lot about my first mentor, Saundra. I had lunch with her the other day and she still lifted me up.

Sara: That’s cool.

Kelly: I really believe in people.

Sara: Sure.

Kelly: That’s what we were able to provide to each other. There’s also knowledge transfer and there’s also teaching each other and ensuring that we all know that we can do this. We know that we can do this because we have each other’s backs. It is really vital to the industry because otherwise, you’re going to feel very alone. When I first began teaching myself how to write code, even when I began learning things in the made-up tech position, it was very intimidating, but I had people who surrounded me that reassured me. I taught them things about the company and they taught me things about tech. They didn’t treat me any different just because I didn’t know SQL at the time.

Kelly: We all have to start somewhere and I firmly believe that college is great, but it’s not for everyone. It wasn’t for me and my mentors understood that. That’s something that I tried to pass along when I come across women on an almost mentees basis who have not gone to school for CS or who have but don’t know where they want to go. I try to help them find what they actually want to do.

Sara: That’s so interesting to be in a position where you are talking to CS majors and you’re like it doesn’t matter because they don’t teach what you need to know in college.

Kelly: Right. So, all of those tutorials that you followed in all of those things; you’re going to get hit hard with curveballs left and right. You’re going to get handed code sets that don’t make any sense. You’re going to get handed feature changes that you will realize, once you look at even your own code set, that your code set doesn’t make sense. Programming and tech, in general, are tough pills to swallow sometimes. As long as you can have your community around you and you can have your base and these people who you can go to and you can be that person for other people, it’s invaluable.

Kelly: I will say this, though, I love going to my mentors, and I love talking to them, I still go to them for things occasionally. I talked to one of them several times a week. He’s a very good friend. He’s a mentor who taught me a lot about tax but also taught me how to breathe in tech. He taught me how to take a break and walk away and move around and to try to forget about it for a moment. That was also monumental. So, I talked to him quite a bit and he still helps me be able to do those things and he helps me to pass that knowledge on to other people. Sometimes you’ve just got to get away. Sometimes the fix will be right in front of you. I would literally dream of fixes before. I’m not going to lie. I’ve gotten up at 3 AM after a dream. I fixed it and it worked.

Kelly: So, a mentor is not just about how to write code. A mentor is how you handle the aspects around it. Hopefully, it’s not just going to be one mentor. Hopefully, you will find several. Then, hopefully, you will find several other people who you can be a mentor for in their life. The people who I’ve mentored in my life and the people, who I continue to mentor, continue to change my life in these positive ways. Like I’ve said before, they give me different outlooks on things.

Sara: That’s awesome. I think we’re going to wrap it up here because it’s Tuesday night and it’s late in the night.

Kelly: Yes, it is taco Tuesday.

Sara: We have both had long days, but I do want to leave our listeners with some more of your knowledge. So, I want to ask two questions, but it’s the same question. What two tips would you have for someone who is trying to be mentored or trying to learn the software? What two tips would you have for someone who’s trying to groom or mentor or bring people up in technology?

Kelly: For someone who’s trying to learn, find out what technical resources you have within your community and if you can’t make it to these things, find the Women Who Code Slack team where you can jump on and get on their even if you have zero tech experience, but you want to get into tech. Find resources like that out there.

Kelly: Obviously, if you’re going into tech, you’re going to have access to the Internet at some point. If you’re going to try to Google things, Google, the city you’re in. If you’re a woman, try to Google Women Who Code in your city and hit them up. Even if you’re not in a city that has that, I would recommend hitting up the Women Who Code Austin Slack team because it is seriously the most amazing resource for women in tech as a whole that I have ever come across. It is amazing. That’s not me doing shameless self-promotion. It really is legitimate.

Kelly: Find your community. Find what you like to do. Go to meet ups. Talk to people. Find the person who you would like to be mentored by because there are different personalities out there and there are different ways that people learn. Everyone has some learning disabilities. There are certain ways that I learned and there are certain ways that I don’t. So, full disclosure. I have adult ADD and adult ADHD and a tendency towards dyslexia. So, I have people who understand these things about me. It allows them to tailor things to my specific criteria when they’re talking with me.

Sara: it’s as though they want you to be successful.

Kelly: Yes, exactly. See, I couldn’t even find the words for that and Sara came right in because she knows because little does she know that she’s one of my mentors. So there’s that, and also pick your battles with the mentor because it’s going to be frustrating. There are going to be times when you want to cry and there are going to be times when you want to scream.

Sara: Yeah, that’s a good one. Try to be as open as you can.

Kelly: Yeah, try to be as open as you can about what’s going on. Talk to them because they are people too. This is why it’s important to pick a mentor who is good for you and who can work at your level. Someone can be the most brilliant Python developer, but if they can’t relate to you on your level, you’re not going to write very good Python because you’re going to feel like you have to venture up to them. That’s not okay and that’s not acceptable as a mentor. A mentor should always be able to speak to you on your level and if they can’t, please find a new mentor.

Kelly: Be open but understand that the mentors that you pick, a mentor should not be singling you out against your will, I’ve seen that happen before and it’s totally weird and uncomfortable, be open and honest and understand that your mentors are there to help you. If you are feeling frustrated, communicate that with them and they will help you through it.

Sara: Yeah, be nice and respectful and professional.

Kelly: Yes.

Sara: So, if you are a mentor, and I know that you are a mentor and not just to the children because you were at a hack-a-thon this last weekend and you’ve been a judge at hacker funds, what is your advice to people who are mentoring?

Kelly: This will be everything that I’ve said on the other side of the fence about what being a mentor should be. Be understanding with your mentees. They don’t know everything that’s why you are there to help them. Also, don’t be opposed to learning from your mentees because I have learned from my mentees very valuable points that I didn’t realize or didn’t know how to work with people. Be open. Be understanding. Treat them with tender loving care because we’ve all been there before and we all know how it feels. Explain what acronyms are.

Sara: Yeah, that’s really good practical advice.

Kelly: It really is.

Sara: I just have to say for everyone earlier who doesn’t know what an IDE is, it’s an integrated development environment, a.k.a. a program. It’s like Visual Studio code, Sublime, or Atom, Xcode.

Kelly: Explain the difference between a text editor and an IDE.

Sara: I agree with you. I love that because when I started working, I was like “I’m so stupid. What’s a CLI?”

Kelly: Also, if you’re just throwing words out there common to the industry, like Jenkins. The first time that I ever heard of Jenkins, I had no clue what it was.

Sara: Well, that makes sense because when I talk to people I always ask if they know what that is. If they say no then I say that’s okay because when I first started. I didn’t know what it was either and then I explain it. It’s just faster that way.

Kelly: Yes, just be careful in your explanations. Allow them to feel that the information that they get from you is digestible.

Sara: Are there any closing thoughts? I think we’re going to wrap up here, but I really appreciate it. Thanks for being on Mentoring Developers, Kelly. You’re the best.

Kelly: Yes, Sara. I would like to close with everyone out there, be awesome. Each and every one of us is doing this. If you’re doing this, you’re awesome. You want to be at that next level. Keep pushing added. The only limitation that you have in life, not the only but a major limitation that you can have in coding is thinking that you can’t. Always push for the next and never plateau. You can always be more awesome than you are. You can plateau for a little bit, but don’t forget to be awesome and don’t forget to be yourself. It’s going to be frustrating and it’s going to be hard but, I’m seriously going to say this from the bottom of my heart, I may not know any of you, but I’m proud of each and every one of you.

Sara: She totally means it. I know her.

Kelly: I’m not going to tear up right now.

Sara: No, she’s not going to tear up.

Kelly: I hope that I’ve been as amazing as Sara, and Sara I would like to thank you for having me on the podcast. You are an inspiration to me and you are one of my mentors, and this means a lot. High-five, people!

Sara: If you want to follow, Kelly, because she’s amazing, on social media, her handle is…

Kelly: @therockynash on Twitter and Rocky Nash on Facebook. You can’t miss me. I’m wearing a ‘Bring A Lesbian to Work Day’ shirt for my profile picture for Facebook.

Sara: That’s a really good picture. I know that picture.

Kelly: Sara took that picture.

Sara: And if you want to follow Mentoring Developers, I think its @MentoringDevs on Twitter. Don’t forget to subscribe to us on iTunes, and you can share us with any newbies that you may know. You can reach out to me if you know someone who would be interesting.  All of my social media is @sarachicad. Like I said, follow @mentoringdevs on Twitter or Mentoring Developers on Facebook. We’re going to wind this down, but we’ll talk to you again next week. Thank you!

Important Links

  • Lesbians Who Tech
  • Women Who Code
  • Austin Women in Technology
  • Google I/O Events
  • Google I/O Extended
  • Tabbed Out
  • Stack Overflow
  • GitHub
  • Country Girls Can Code
  • Techs4Tex

 

Thanks for Listening!

Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.

If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.

You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts. 

https://media.blubrry.com/mentoringdevelopers/content.blubrry.com/mentoringdevelopers/MD-episode62-Sara_with_Kelly_Karsnia.mp3

Episode 61: Fernando Hönig on AWS and Cloud Computing for Spanish Speakers

July 4, 2017 By arsalan Leave a Comment

Fernando Honig and Arsalan Ahmed with Mentoring Developers
https://media.blubrry.com/mentoringdevelopers/p/content.blubrry.com/mentoringdevelopers/MD-episode61-Sara_with_Fernando_Honig.mp3

Podcast: Play in new window | Download

Subscribe: Apple Podcasts | Google Podcasts | Spotify | RSS

If you come from a predominantly Spanish-speaking country or anywhere in Latin America, you may already know about the harsh realities that students and people face when trying to access information about IT. It doesn’t matter if the information is books, industry-related magazines, or documentation on how to do something. The problem is always the same. The information available is most often only available in the English language. While that might be fine if you’re already familiar with, or lucky enough to have fluently learned English, that is not the case for most Spanish-speakers in Spain or Latin America. This dilemma usually results in holding Spanish-speakers back from gaining access to valuable knowledge that could potentially progress their careers, enhance their current knowledge, or even open up new opportunities. Now, someone is doing something to change that.

The information available is most often only available in the English language. While that might be fine if you’re already familiar with, or lucky enough to have fluently learned English, that is not the case for most Spanish-speakers in Spain or Latin America. This dilemma usually results in holding Spanish-speakers back from gaining access to valuable knowledge that could potentially progress their careers, enhance their current knowledge, or even open up new opportunities. Now, someone is doing something to change that.

Meet our next guest, Fernando Hönig. Fernando is originally from Argentina and fully understands the challenges that Spanish-speakers around the world face in the IT industry when trying to learn new information and ultimately get ahead. He has found a way to give back to the Spanish community through his AWS program and social media channels. Listen in to episode 61 while Fernando and Mentoring Developers co-host Sara Ines Calderon discuss cloud computing and AWS in the Spanish-speaking IT world.

Fernando’s Bio:

Fernando is an experienced Cloud Infrastructure Solutions Leader with over 18 years of extensive IT Architecture and Management experience in a variety of market sectors. He has an in-depth understanding of Information Technology services and technology in conjunction with their related markets and strategies.

Fernando is an accomplished professional in designing, implementing and configuring a wide variety of hosting, web, applications and systems solutions. He has proven experience in managing multiple large-scale infrastructure projects across matrix environments and multi-phased, complex migration programs.

 

Publications:

  • AWS en Español (Spanish Translation)
  • AWS in Spanish (English Translation)
  • User Groups are the Newest Addition to the Growing Global Community
  • Save Money with AWS VPC EndPoints
  • How to Monitor a VPN Connection in AWS using Lambda
  • Control the Cloud with Code!

 

You can find Fernando on YouTube, LinkedIn, the LinkedIn group AWS en Español, or Twitter.

Episode Highlights and Show Notes:

Sara: Why don’t you introduce yourself, tell me your name, where you work, and how you got into technology?

Fernando: All right. My name is Fernando Honig. I’m originally from Argentina, but I’ve been living in London since 2014. I have a strong infrastructure background. So I come from the infrastructure type of the IT field. I have more than 15 years of IT experience. Lately, I’ve been getting more into the cloud technologies and the cloud aspect of the IT system. I work in cloud infrastructure solutions architect for a company in London. So, that is who I am.

Sara: Cool. When we were talking earlier you told me about how you came into technology and you said that you had started when you were very young. Is that correct?

Fernando: Yes. So, back when I was 16 or 17 years old, I started back in the ages. I’m 36 now. I started two centuries ago. People were using modems and connecting to the Internet using the U.S. Robotics 56k modems to start browsing. That was the old Internet then. It was, I think, 1.0. So, I started doing that. I was going to customers and basically installing pieces of hardware. So it was a long journey when I started doing that and then I later got interested in Linux. That drove my passion about all the Linux and open source technologies then I became a DBA.

Sara: That’s awesome. So, how did you learn? You mentioned previously that it was in Argentina in the 80s and we had Internet 1.0. How did you learn how to install modems and then continue?

Fernando: It was really hard. I remember when I had to install my first Linux. I bought a magazine and installed it with some CDs. Everything was in English, so I was really lucky that I had started in English by that time. After 15 years. I can now say that I was lucky enough to have the opportunity to learn a second language and start to progress my career by having magazines and browsing the Internet and finding books by that time. Every book was in English. There was no Google at that time. There was another another search engine, but there were no self-learning that I could take.

Sara: That’s really interesting. You had mentioned that there was some stuff on the Internet in the pre-Google Internet as well. I’m assuming that you went to college in the late 90s or early 2000’s when may be a little more information was available. I know that there were some online communities at that time that were specifically talking about technology. Tell me a little bit about how you grew with the Internet when you were looking to learn new things like my SQL or the next new thing in technology. Did you start finding communities online to help support that?

Fernando: Not really. As I had mentioned, I was in Argentina and I was, not in the bigger city of Argentina. I was in a second one. It was kind of a university city. So there were a lot of people who were interested in understanding these new technologies. There were people who were just coming out of Oracle and were starting to work on MySQL. It was free, open source by that time. So you could basically go to the MySQL website and screen in the manuals and view all the changes online for every new version and install that new version and all kinds of things. It was the same thing with Linux versions. It was more like a trial and error to see if it would work or not. I remember back in the day when we had to compile your kernel with a support for the latest graph and interface. Sometimes I just try to explain things to people who were new in the IT world that it wasn’t always as easy as it is now with a working server.

Sara: So, you said that you were in a university town and there were a lot of students and people who were on the bleeding edge of technology. Were there meet-ups or online message boards or anything?

Fernando: At that time there was no Slack or Iceberg or anything like that. So, we worked together on a typical IFC and we were discussing things like the kinds of issues that we were having. So, it wasn’t a proper meetup. We were a group of friends who were all interested in technology. We were the typical geeks of the city and things like that. So, it was not like a formal meet up.

Sara: Yet, you guys were still working together to help each other out. It sounds like to me that from the very beginning, you were collaborating with people to learn these new technologies.

Fernando: Yes. It was always my passion to help somebody else get on board. That’s basically what drives me to learn things, to pass it on to somebody else and to try and connect a bridge to connect technology with people. I think that is one of the things that I’m really passionate about.

Sara: That’s cool. For those who are listening, I met Fernando on Twitter and through a Mutual Friend over at Cloud Guru. Fernando has been doing some really cool work trying to bring people who may not speak English, but who may speak Spanish as their dominant language to specifically enable them to learn more through AWS. In case people are listening and don’t know exactly what you do, could you explain quickly about what the cloud is and why being able to bring that information into Spanish is relevant? For example, you did mention that being outside of the US, you may not always be able to get manuals or textbooks or YouTube tutorials or official documentation in any other language except English. Even if you do use a Google translator or something, it’s not going to be as precise as you might need. That’s my understanding.

Fernando: Yes. The lack of documentation in other languages, not just Spanish, is gruesome. I do get that English is the universal language, but sometimes, some communities are not able to learn a second language. Basically, that is postponing this progress on their professional careers in IT. I don’t know if you know this, but 516 million people worldwide speak Spanish. There are about 57 million Spanish speakers in the US. So, it’s a lot of people. Basically what I’ve been trying to embark myself on during the last two years was that I needed to give something back to the community and try to leverage the cloud computing technology across people who speak Spanish. So, I’ve been trying to create meet up groups in Latin America and Spain and also create and translate different documentations on AWS. So, the intention is more about enabling people as the first step into developing to get cloud computing knowledge and help them grow in their career.

Sara: Sure. So, I wanted to ask you a follow-up question. When you say that you want to bring more Spanish speakers into cloud computing, is that because you haven’t run into a lot of native Spanish speakers or have you talk to people who have said that this was a barrier? What prompted that for you?

Fernando: Yes, one of the things is the language barrier. The other thing is that it is hard for companies in Spain and Latin America to find properly skilled people in cloud computing. So, it’s a two-way thing. It is companies who are trying to hire and develop the right kind of people who have the right skills and also people who want to get onto this new train, but they feel that it is passing very quickly and they struggle to catch up with everything that is happening daily. So what I am trying to do is fill that gap by injecting content in Spanish and providing people with the right training and documentation.

Sara: Sure. So, you said that you are starting some meet ups and places. Can you give me one or two examples of what that looks like? You did mention the AWS documentation that you translated. I’ve seen some of the posts that you put online and translated. I’m trying to imagine this as in I’m trying to do cloud computing. I’ve read about it online and I think its super cool. My English is okay, but it’s still hard to understand technical documentation, even if you’re an English speaker. So, that’s probably difficult. I know that I’ve done this where you just look and look online and try to find somebody who will help you. Tell me, if you will, some of the feedback that you’ve gotten from some of this work.

Fernando: Yes. So, one of the things that I’ve been trying to do is grow a LinkedIn community. We have an AWS in Spanish LinkedIn group with more than 800 people already. We just launched two or three months ago. So, it’s growing incredibly well. We are also running an online AWS meet up in Spanish. So what I’ve basically tried to do with this online meet up every month is bring people from AWS and the community from different companies who are implementing cloud solutions and AWS. So, we look at server solutions or how to put your application in the marketplace and make money with AWS. So, what I’m trying to do essentially is connect people who are lucky enough to have the experience with cloud computing and AWS with people who are just beginning this journey.

Fernando: One of the really good feedbacks that I’m receiving from people who are taking my courses or people who are participating in this LinkedIn community is quote thank you for helping us to have training on this in Spanish.” That cost less than a pizza. We cannot forget that South America and Latin America are not the richest countries in the world. So, having access to affordable training is important. For me, it’s very fulfilling. Knowing that they are using it to get a new job or gain new skills for the job that they have. So, it’s really rewarding for me.

Sara: That’s so cool. So, just to reiterate for those who are listening and want to follow up in case they’re interested, you said that you have an AWS in Spanish group on LinkedIn and you have an online meetup group for AWS in Spanish services. Is that correct?

Fernando: Yes. That’s correct and we also have it on a YouTube channel under the same name and people can go and subscribe to that. We also have all the user groups in Spanish that are uploading their meet ups and are streaming to the same channel. We had 10 or 12 videos right now. So anyone can go in and watch what people are doing, and all the different places across the globe in Spanish. That’s the most important things.

Sara: That’s awesome. I didn’t want to get back to something that we had discussed earlier. Can you explain to somebody who has just been doing web development and doesn’t really do backend services, what is cloud computing?

Fernando: It’s difficult to explain what cloud computing is because people might understand what the cloud is, but you still have servers. So, cloud computing is a way that you could rely on somebody else to do the heavy lifting on buying servers, installing servers, cabling servers, and having people to manage the physical security on your hardware so that you can just focus on the things that you are good at. So, as a developer, the good things that you have to be doing coding, making your code more secure, making your code faster, and getting your code out there as soon as possible. So that is the basic principle of it all. It’s all about getting your code out there as soon as possible.

Fernando: Cloud computing is definitely helping to have this in place. It allows you to put the core of your business in front of all of the heavy lifting and managing of servers. I think that companies who provide cloud computing are changing the way that IT is being presented to more people. So, I think that more people are able to interact with the technology because of the removal of the heavy lifting on the hardware piece.

Sara: That’s awesome. Thank you. So, I wanted to get back to what you were talking about within the meet ups. I wanted to talk a little about mentorship since you started sold young and you did have these communities and now you’re building this other community. I’m sure you’ve managed people and hired people at this point. I want to get your thoughts on mentorship in informal settings like the meetup or via formal settings like the workplace. How has mentorship helped you and how do you feel as a mentor in the workplace? How is that important to other people’s careers?

Fernando: Every role that I’ve played in my career, I have always try to look for mentorship. I’m always trying to find mentorship opportunities in every company. It’s not always specifically on technology. Sometimes you just need mentorship on other things like public speaking or how to do presentations or even how to study. Sometimes you just need somebody to help you understand the best way to use your time to study for something, as an example.

Fernando: So, sometimes, it comes down to learning how to give or receive a mentorship. Whenever I’ve always had a mentor, I’ve always tried to get the most out of it, and then I’ve tried to pass that knowledge on to somebody else. In my previous two or three roles, I was in a team lead or manager role. I try to leverage people skills and put some specific goals on how to improve their careers and how to communicate better with colleagues. It’s like being a respected player within the company. That is something that is really important when you want to collaborate and create a good culture in your company.

Fernando: The idea behind the meet-ups sometimes is having someone present in a specific docket, but also trying to find someone who can help them on getting a better result to get something done. I think that is something that the industry is lacking a lot of. Sometimes we meet people who do things rather than just talk.

Sara: That’s awesome. I’m not super familiar with all of the exact technologies that you use, but I know that Linux is a little different than AWS, for example. So, when you were trying to learn these things, how did you learn and how did you find mentorship? You said that you always try to find mentors. So, how do you find mentors? What do you look for in a mentor? Also, once you learn these things, do you just wait for someone to ask you for mentorship or do you seek it out like in the case of the AWS in Spanish?

Fernando: The cloud journey was interesting because I joined Rackspace a few years ago and I realized that this was definitely a cloud player. So trying to understand how people were moving over to cloud was an interesting learning curve. So, I try to understand the other new technologies around cloud and then had to explain that to customers and new peers there. It was a really good team back at Rackspace. Everyone was very supportive and explained things and gave examples and provided new training. After that, I was trying to understand how I could pass that knowledge on to somebody else.

Fernando: The important thing was for me meeting Ryan Kroonenburg from A Cloud Guru. His idea was that the way to teach people is to offer it is in a way that is similar to talking to people in a one on one session, only in this case, it was for thousands of people. So that is what I tried to do with the solutions architect training in Spanish. I was looking for a way to build it so that it would not resemble a product or a prototype. I wanted it to be more like having a conversation with the students. That is how I really enjoy explaining things and showing examples and answering questions. This is what helps people to better understand new technologies like this.

Fernando: Less than 10% of all people working in IT are working on the cloud. The rest are still working on physical data centers and physical servers. These are on premises and some companies even have their own data centers on promises. When you are so connected with cloud people, it’s easy to think that everyone is on the cloud. The world of technology moves so fast. Two years ago, no one was talking about the cloud. Now, everyone is talking about artificial intelligence, machine learning, and becoming server-less. Things move so fast and we don’t want to forget that not everyone is moving at that pace. We need to help people to afford that train and then guide them as best as we can.

Sara: Yes. That’s awesome. How did you find mentors? I was interested in what you were saying about how you sometimes needed a mentor to do other things like presentations or etc. How do you assess what you need? How do you find mentors? That’s something that I’ve had problems with. For example, I worked on the team as the only woman and I kept trying to look over other people, shoulders, but they were too busy. I would ask for help, but they would be too busy for that as well. So, I try to find people on Twitter and some people would offer to help, but then never respond back. I think we talk a lot about finding a mentor, but how do you find one?

Fernando: I think to become a mentor; you need to be passionate about it. Sometimes people who are really good at one thing might not make it good mentor. Mentoring is like teaching. It is like trying to explain something in your own words. I’m not going to say that it’s simple, but when you join big companies like Intel, Rackspace, or IBM, you always tend to have these mentorship programs. You find these extremely nice people who are willing to help, maybe not specific technical things, but how to reach that place to be able to learn specific technical things. The mentorship is about how to get to that place to learn something.

Important Links

  • A Cloud Guru
  • Cloud Computing For Beginners
  • Rackspace
  • Intel
  • IBM

Thanks for Listening!

Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.

If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.

You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts. 

https://media.blubrry.com/mentoringdevelopers/content.blubrry.com/mentoringdevelopers/MD-episode61-Sara_with_Fernando_Honig.mp3

Episode 60: Allan Kelly on Agile Development and what’s wrong with it

May 30, 2017 By arsalan Leave a Comment

https://media.blubrry.com/mentoringdevelopers/p/content.blubrry.com/mentoringdevelopers/MD-episode60-Allan_Kelly.mp3

Podcast: Play in new window | Download

Subscribe: Apple Podcasts | Google Podcasts | Spotify | RSS

If you are not new to software development, have you noticed that sometimes the workflow does not run as smoothly as it could? There are times in software development when the problem is with the workflow. Maybe with a few adjustments, it could run smoother. The problem is, not everyone is willing to make those adjustments because, after all, the current workflow has been in place for years and no one before you has seen the significance of it. What do you do? How do you make workflow more efficient so that you are making the most of your time? If you are a business owner or manager, perhaps it’s a matter of making the most of your company’s time? They say that time is money. So, efficiency matters. Our next guest knows all about efficiency in software development.

Meet our next guest, Allan Kelly. Allan began his career as a software developer but quickly moved into consulting. He has authored several books on software development and shares his love of tech and how to be more efficient in software development with others in the industry. Listen in to episode 60 and hear his story.

Say hello to Allan on Twitter!

Allan’s Bio:

Allan makes digital development teams more effective and improves delivery with continuous agile approaches to reduce delay and risk while increasing value delivered. He helps teams and smaller companies including start-ups and scale-ups with advice, coaching, and training. Managers, product, and technical staff are all involved in his improvements.

 

Allan is the originator of Retrospective Dialogue Sheets and Value Poker. He is also the author of four books, including “Xanpan -team-centric Agile Software Development” and “Business Patterns for Software Developers” and more recently “Continuous Digital: An agile alternative to project”. On Twitter he is @allankellynet.

Episode Highlights and Show Notes:

Arsalan: Hi everyone. Welcome to another episode of mentoring developers. Today my guest is Allan Kelly. Allan, how are you?

Allan: I’m very well. Thank you for asking me, Arsalan.

Arsalan: I’m so happy to have you here. You are not in the US. You are in London. Is that correct?

Allan: Yes. I’m sitting here in sunny London. No rain today.

Arsalan: That is incredible. I am so sorry that I have to hold you in your home office right now instead of out there having fun on those rare sunny days in London. So the question is, who Allan is and you told me that you are an Agile coach and you coach people and teams about how to do better. You mentor people. You have so much that you have done in your life, and we really want to go into that. There is one story about your first proper programming job that you got. That was five years after you graduated, and it was supposed to be this amazing new opportunity where you do things and it didn’t go according to plan. What happened?

Allan: I had already been earning money for programming before college. When I went to college I learned how to do it properly. You know that thing when you ask users what they want and you write it all down, and you design it, and you build it, and everything’s cool? I learned all that in college and then I graduated. When I got to the real world, nobody does it like that. It’s all over the place. I do these jobs because you have to earn money, but I spent five years feeling guilty doing projects after projects. I was thinking that we don’t do these things the way we’re supposed to. I was thinking that it was all wrong because we don’t do it how I was taught in college.

Allan: I started working this job for the British railway system, and they were doing it properly. Everything was written down, and they have an ISO approval on all the rest of it. I was so happy to get this job. It was a nightmare. The documentation was as high as a five-year-old kid. I spent half my week writing documents. We got audited and we were coached on how to answer the auditor’s questions. We had these architects who came from a Cobalt background and we were writing in C++. They had no idea about the technology we were using. So, the code and the architecture were two completely different things.

Allan: One day at lunchtime, I wandered into a bookshop that was close to the office. I found this book by a guy called Jim McCarthy. He’s still around and he’s brilliant. He opened my eyes and I suddenly realized that the way I was taught in school was a bit wrong. It never works out like that. It can’t work out like that. Jim laid out how his team at Microsoft does things differently. I suddenly no longer felt alone or the odd one out. That was in the late 90s. That was the start of my journey to the thing we now call Agile. So, I got to do it properly and it just didn’t work.

Arsalan: I have a lot of listeners who are just starting out and who may not know about all these processes were talking about. There is this idea that exists in academia and a lot of other circles where you talk about with the best way is to build software reliably that will be maintainable and where the process that you follow is repeatable for high-quality software, just like you can do with other pieces of engineering. You can say do this and you will result in having a very high-quality piece of software with fewer bugs, fewer defects, and it will work as expected and everything will be great. Then we have this idealized notion of how to build software. We go into the real world and we see that has flaws. Tell me a little about the issues you faced.

Allan: We were doing software about trains and how trains move around the network. One problem we had was with a source control system, but when you check something and there’s a load of paperwork. So, you had to fill in these forms before you could check something in and you had to get a line manager to check in your code. It slowed everything down. Once your code was checked in, the form goes to the testing department who builds your code and they test it. So, one day we do this and it gets sent back to me with the book report that said that my train was doing this and it shouldn’t be doing that. I asked if they were sure. I went and talked to the testers.

Allan: We realized that what it said in the requirements department of what the train should do and what the trains actually do in real life are two different things. There’s this one station where the trains go in and come out in an odd way. According to the manual, it never happens. So I mentioned that we know that trains do this. So I was told to speak to one of the customs people. But I’m also told that I must find out what the trains do in real life, but not let on that the document says one thing when we think something else, because that’s a contract issue, and they have to escalate it.

Allan: This is a project where we are working six days a week. On the seventh day, you carry a pager back in the pager days because the testers are working seven days a week. So, were trying to do as much as we can and as fast as we can. Yet, we have all these paper forms flying around and all these conversations that don’t exist because you’re not allowed to talk honestly to your customers. There are all these barriers because we’re doing it properly. It was utterly crazy. The way you can write something down, and the way things happen in real life will never meet. The more you write it down, the more complicated it gets. The more you write it down, the lesser the people will remember if they do read it.

Arsalan: These things happen because as we discover that people don’t just turn up one day and they are enlightened software developers. They have a history. They have some baggage. In your case, there were some programmers who were perhaps coached and trained in a completely different coding paradigm. They are experienced, but they are not necessarily well-versed in this methodology and programming languages. Also, people have their quirks and software development is not an exact science, unfortunately. I believe it’s more like Ninja, Kung Fu stuff.

Allan: Yes. It’s a bit of everything, isn’t it? I believe software development is engineering. I also believe engineering requires a bit of inventiveness and a bit of art. I know there are people who argue about whether or not it’s engineering. I say were not good enough to be engineers. We had to get one haven’t quite mastered it. The thing is, most people who talk about software ring engineering don’t know much about engineering. There are lots of different types of engineering. I’m a 3rd generation engineer. My father was an engineer. My grandfather was an engineer. They really had oil under their fingernails. They were ship engineers. At times, they built ships. They spent most of their lives making ships work.

Allan: As a kid of seven or eight, I’d been down to ships’ engine rooms. I saw ship engines over hulls. That informed me. I know that when you’re engineering things, that’s how the engine should work, but it doesn’t always work like that when there’s a bit of dirty oil in there. Or, the ship has to sail but the guys haven’t finished the maintenance. The ship has to sail…there’s a commercial imperative there. The idea that many people have about engineering and why they think software is a form of engineering is because they aren’t really informed about actual engineering. Engineering is the art of the possible. Engineering is making things work within constraints. That is absolutely what we do in software and it does require some innovation and some imagination, blue sky thinking, call it what you will. There are a lot of different things in there. I think that’s all part of the engineering mix.

 Arsalan: Right. So, it’s not clearly defined and it’s somewhere in the middle. Let’s talk about you, Allan. We want to understand who you are and where you’re coming from. Tell me a little about yourself. Let’s let our listeners understand who you are.

Allan: Who I am? I am Allan Kelly. I live here in London. I used to be a programmer. I used to put my fingers on the keyboard and write code. I still think of myself as that kind of person, although, no one has paid me to code for many years. I still have my pet projects at home, but when I work with teams and developers I see in them many of the frustrations that I had as a programmer. I reached a point a few years after I turned 30 and realized that I could make the code fly. I could make the code do what I wanted it to do. The code wasn’t a challenge for me anymore. The challenge was the way we are asked do stuff and the way we are set on teams.

Allan: Once upon a time a guy in his bedroom could write a program and he could make a lot of money. As a teenager, I was that guy. I didn’t make a lot of money. I made a little bit of money. I never had a Saturday job. I never delivered papers or anything like that. I never worked in a shop. I used to write programs in my bedroom and I used to them to TV, magazines, BBC, and people. That was how I had money as a kid.

Allan: Code is still a problem for a lot of people. What makes it so much more difficult is the way they are expected to perform, the structures that are put in, the way they are managed, the way their teams are sorted out, and the way the needs and requirements reach them. So, when I work with teams and managers, I see the problems they are having and I know those problems. I have lived that life. I want to help them with that problem. Before we can fix the problem with their code, we have to rethink how they’re going about structuring the code. It’s the structures, the organization, the culture and everything around it. When you’re setting up a code, what are you thinking about? Can you think clearly about your code? Or, are you worried about something else? It’s all about the environment that you’re in.

Allan: I still think of myself as a software engineer, but I don’t write the code directly. I influence how the code is written by helping teams and organizations do a better job. So, that’s what I’d say about myself if I’d had a few drinks at a party.

Arsalan: What was your first encounter with programming? How did you even know that was the thing to do?

Allan: I grew up in Liverpool in the 80’s. It was when home computers were just coming in. One of our neighbors bought a Tandy TSR80 from Radio Shack. I’d watch him and his dad typing in programs. I wanted some of that. So, I persuaded my mom and dad to buy me a machine. It was a ZED X81. That was what we called them here. It was a ZED80 machine with 1K of RAM, which, after a few months we got a PAC with 16K, not megabytes, K.

Arsalan: That’s kilobytes, people.

Allan: That’s kilobytes, yes.

Arsalan: And people are wondering what a kilobyte is. I haven’t heard that in a long time.

Allan: That’s like a thousandth of an MB, not a thousandth of a GB. So with this machine, I had found my thing. I was just hitting my teenage years. The machine and I used to commune. I moved up from this one K machine to a 2K machine with a 6502 processor. I spent most of my money for it. I used a little of the money and bought a book on machine code. So, I used to write 6502 assembly stuff. When I got a bit more money I could afford a Pascal compiler. As a self-taught programmer, I had go-to’s all over the place, but there were no go-to’s in Pascal. So I had to relearn how to program in a proper fashion the way you’re supposed to. That has still stuck with me.

Allan: I’ll tell you a funny story. When I was 16, like most 16-year-olds here in England, you do your first proper school exams where they get marked and recorded forevermore. I was one of those kids who did computer studies back then. We had to do a programming project as part of our assignment. One of my teachers had it in as one of the examiners. He told me a year or two later that I scored 98% and the programming assessment. Do you know what I lost 2% for? I didn’t use a go-to.

Allan: The exam board had this list of things that you had to do to demonstrate that you could program. One of the things that you had to demonstrate was that you could use the go to. Had I known that, I could’ve put a go to in there somewhere.

Arsalan: That’s a problem with computer science education because the teachers themselves are not equipped or trained. We follow these checklists of things. It happens now as well. You have to do this because it’s in the curriculum even though the rest of the world has realized that it is bad practice to do it.

Allan: Yes, so this is a really key point. It was one of my first big moments when you realized that those experts aren’t necessarily right. It’s like where I’ve mentioned before that, on a project where we were doing it properly. Doing it properly was hell. What is happening is with our education system and the people who are coming out of our education system of certain models. But because our technology is racing ahead, our technology is already invalidating some of those models. So if you go back to the traditional model that we used to develop software, we call it the waterfall because you have to get out the requirements and do the analysis and do the design and on and on. That makes perfect sense if it’s 1970. That model comes from 1970. We’ve spent the 70s and 80s perfecting that model.

Allan: Let me remind you of something. I’ve read up on this and most of your readers could read up on this as well as they want. In 1970, we had teletypes to communicate with our computers. If you had a screen, it was a green screen. We programmed our computers in Cobalt on an IBM 360 OS mainframe. The IBM state-of-the-art mainframe had 4 GB of RAM and 10 MIPS of processing power. My eight-year-old has a Raspberry Pie and it has 4500 MIPS of processing power and 1 GB of RAM. It is 2017.

Allan: That traditional software process that we’ve been taught makes sense if you’re programming IBM mainframes in 1970. In 1970, CPU cycles were really expensive. Paper and desk time were cheap. In 2017, when you’re programming your Lenox or Android in Ruby or Closure or one of these other modern languages, CPU cycles are now so amazingly cheap. That machine in your pocket has spent more cycles than Neil Armstrong going to the moon. Now that CPU cycles are so cheap, paper and dust time are expensive. It’s far cheaper and we can try out new ideas and get a quicker feedback loop. But, many of the things that are still being taught stem from an earlier age wall we’re racing ahead. The trick is to spot what those earlier lessons we keep and which we move on from.

Arsalan: Okay. That’s very wise because we are constantly going to always be learning and evaluating our successes and failures. Over time, the software industry tends to get better. We tend to understand how this works better. I think you will agree that context is also very important. What works in a very rigid scientific environment or an environment where the requirements don’t change, your requirements as a software developer per or your methodology may be very different from something else where you don’t understand the problem that you are iterating.

Arsalan: We’ve talked about Agile. You’ve referred to it a few times and mentioned that we didn’t have this term Agile before. You’d also don’t necessarily like this term because it doesn’t encompass everything. So, tell us a little about what you mean by all this.

Allan: The only thing that you can really do wrong. If you claim to be Agile, is to do things the same way that you did them three months ago. You should constantly be experimenting, innovating, and trying new stuff. Some of it is going to work and some of it is going to fail. I say that in and Agile context, but really that applies to all software development. That’s because software is always changing. By definition, when we create software, we are creating something new and innovative. If it already exists, you’re going to reuse it, take it and download it from source Forge or somewhere. If you have some code that already does it, you aren’t going to write it again. Instead, you’re going to do control C and control V. You’re going to copy it.

Allan: When we’re writing code, we are always doing something new. We are always innovative. All software development is about learning. We are learning about our tools, our languages, and our options. That’s the most obvious thing. We are also learning about the problems we are solving. Whether you are creating medical equipment or train software or iPhones, you’re learning about the problem you’re trying to solve because we don’t really understand the problem that we’re trying to solve. We think we do. But the truth is that as we are creating the solution we view the problem in a different way. The next time you’re having trouble getting email on your phone, that’s a new problem. How many people 10 or 15 years ago knew that we would get email on a phone? How many people 10 years ago knew that they needed to send 140-character message to the world?

Allan: We are constantly doing new stuff. As we are doing this new stuff, we are thinking of new ways of approaching it. We redefine the problems we are approaching and addressing. We create new problems to solve. So, the second thing that we’re learning is about the thing that we’re creating. The third way that we are learning is about the processes and actions that we are going to use to go about doing this. To some degree, we are learning about learning. For me, all of our technology and software is a multi-layered learning process and we are constantly layering.

Allan: I think that the traditional model, the thing that we call waterfall, tried to freeze learning and tell us that we’ve learned all about the problem. We have written it down. We have now studied the architecture and we have written it all down. We will now give it to a simple programmer who will code something up and when he is done, that will pass the test. We try to put in boxes and freeze it, but what we see is that those boxes feedback to one another. Over time, as we’ve gotten faster, our cycles are getting faster and faster. Our chain cycles are getting faster and faster. So those boxes are interfering with each other at a faster rate. The big thing about Agile is that Agile suggest that we have a model that incorporates learning. It’s the kind of model where we do something and see what happens, we think about it, we reflect on it, and maybe that changes what happens.

Important Links

  • AllanKelly.net

 

Thanks for Listening!

Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.

If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.

You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts. 

https://media.blubrry.com/mentoringdevelopers/content.blubrry.com/mentoringdevelopers/MD-episode60-Allan_Kelly.mp3

Episode 59 – How software developers can make the Web secure

May 9, 2017 By arsalan Leave a Comment

David Gatti and Arsalan Ahmed with Mentoring Developers
https://media.blubrry.com/mentoringdevelopers/p/content.blubrry.com/mentoringdevelopers/MD-episode59-David_Gatti-Security_In_Software-Part_1.mp3

Podcast: Play in new window | Download

Subscribe: Apple Podcasts | Google Podcasts | Spotify | RSS

Internet security has come a long way. Now, we need passwords for everything we do and every website we visit. We’re told that we should have a different password for everything, but, what a pain! Why shouldn’t you use the same password and username for everything? It would make your life so much easier.

 

Special guest, David Gatti has returned to Mentoring Developers. This time, he discusses the importance of internet security and what he has to say may surprise you. Don’t miss episode 59! Arsalan and David talk about usernames, passwords, and the importance of proper authentication.

Say hello to David on Twitter!

 

David Gatti’s Bio:

David Gatti began his career in IT as a Systems Administrator. He learned how to code in PHP out of boredom, and made some simple internal tools to help him while managing the company network.

He then became a blogger and wrote about mobile technologies before the iPhone came into existence and PDAs had cellular modems. He also wrote the CMS for the website itself when WordPress was first starting. Then he began working as a web developer for a company that did simple Facebook games.

After this initial experience, he imported a Windows Mobile app to Android 2.3. He later became a Brand Manager for a mobile game company and a Marketing Director for another company, and at that company – he transitioned to Developer Relations Manager and worked for two companies with this title. It was a job that he fell in love with.

But, while hunting for his next opportunity, he struggled to find the right company. Out of frustration, he created Simpe.li (simply) so he could keep doing what he does best – Development Relations Management done right.

Episode Highlights and Show Notes:

Arsalan: Hi everyone. This is Arsalan Ahmed with David Gatti. David, how are you?

David: I’m fine. How are you?

Arsalan: I’m great and today we’re going to talk about security in the sense of how to keep our server secure, how to build websites that don’t get hacked. Those are important. We are going to talk about how to keep our users secure, how we can avoid becoming hacked ourselves, and how we can have secure practices as software developers. For someone who is starting out and learning these new programming languages and frameworks to build cool apps, they may not be thinking about security. They should pause and listen to this podcast and really think about what they’re doing to ensure they’re not skipping something that’s important.

Arsalan: You had a personal experience with that. You had a new website and it got into really big trouble. So tell us a little bit about that, David.

David: it was for a website that was built more than 10 years ago. I developed it myself. Back in the day, we used the technology called STP to transfer files to the server. I had this STP client. I decided to make my life easier by saving my password to the server. By doing that, I ran into the situation where I got a virus on my Windows machine which detected that I was using this STP client and it try to access every website that I had in my favorites. It found my website, which was gaining popularity with over 7000 views a day. So a bunch of people was visiting it. This virus then updated my index HTML file with a piece of JavaScript code and started infecting all of my visitors with a virus. I received a bunch of messages letting me know that something was wrong. I fixed it, but it took me a while to understand how someone accesses my server.

David: After a while of googling around, I realized that the STP client that I was using had a common line interface which allowed the virus to easily use this client from the common line. Just by making my life easier and saving the password I had compromised my security pretty badly. After that situation, I started taking security more seriously and I started to make my life a little more annoying by not remembering passwords.

Arsalan: So there are a lot of things that we can do to keep ourselves more secure at different levels. So, one thing is to not get hacked or get a virus and one of the ways to do that is to have long, difficult to generate passwords. If somebody just wants to randomly create numbers and letters and try to break your password, of them a hard time. If it’s a longer password, it’s going to be harder. If it’s a random password, it’s going to be harder. So, that’s one level.

Arsalan: One thing that we talked about earlier was that we shouldn’t have the same username and password combo for every website. You can. A lot of times we use email addresses. So, if you use email addresses, then often your password is going to be the same.

Arsalan: If someone cracks your password on one website, they can try to gain access to other websites using the same username and password combos. Sometimes I don’t even have to work hard for that because there is a way for them to send you an email the link to all these different websites. Maybe it’s a link to something else that triggers a call. Perhaps it’s a form submission to another website. They’re hoping that you’re still logged in. That’s another type of attack. It’s called C surf. They can go in there and get access. Or they can go in there themselves and use a password, so that if you are logged into Facebook. Their hope is that you may also use the same password for linked in, for example. Or, maybe you use the same username and password combo for Yahoo mail and Microsoft email or your Gmail. It depends on how you set it up.

Arsalan: The point is to keep everything separate. If you have different usernames and passwords for every website, keeping track of it becomes hard, but you really want to keep it separate. So, how do you do that?

David: Let’s go back for a moment to talk about using the same password for different websites. We’ve already had situations over the years where Yahoo was hacked and there were password leaks and people tried to use those passwords to access information on Facebook and other websites. It was working because everyone wanted to try to make their lives easier by using the same password for different places. So, I have a different password for every website. This is what I started doing. I started using passwords like Last Pass. It’s a nice app that allows you to store all the password security in one place and have one master password and auto fills the forms when you go to a website.

David: Nowadays I’m using Keychain on my Mac because it’s a built-in feature and it’s more convenient. The cool thing about this is that you don’t have to remember all the passwords. This way, even if someone stole my passwords from one system, it won’t work on another.

David: I go one step further than this by always trying to create a new email for each account that I have. So, I use Gmail and Gmail allows you to create aliases very quickly. So, I do that every time I add a new account. So even if you get my password, it won’t work in a different place because you need to know which email I used. So now suddenly you have two things that are different.

David: I also try to enable to factor identification on all the sites that support it. This way the email is different, the password is different, and you have a second device that you need to use to authenticate the account. People say that I’m crazy, but I’ve experienced this thing and I feel good because I’m secure about the technology and computers and I’m confident that I won’t have any problems. So after that last incident, I decided to make my life a little more annoying, but at least I’m trying to do the right thing.

Arsalan: The flip side of the equation is where we’re talking about people who are developing websites for users. We do want people to come to our websites and feel secure. Not only do we not want our passwords to be out in the open or have other people gain access to our accounts, but we also don’t want our users to lose access to their accounts. So there is one thing that we can absolutely do and a lot of companies and websites are doing it already.

Arsalan: So, for new or aspiring developers who are starting to build websites, let’s make sure that we force people to use secure practices – our users. How do we do that? We can make them use strong passwords and not allow passwords that are weak and can be easily hacked, guessed, or generated. So, the minimum password length should be pretty long. That’s one idea.

Arsalan: Another thing that I’m really surprised by is that a lot of websites that I visit do not allow spaces or special characters in passwords. That makes it very hard to randomize a password. A lot of people have talked about this XKCD comic where a guy was explaining that if you have a long phrase that’s easy for you to remember “I have a horse that is brown.” It might be an easy phrase to remember, but it’s a lot of words. If you can toss in a special character that isn’t used a lot that can throw them off a little bit, but some websites don’t allow that. So, one thing you can do is that when you build a website that you do allow it. You can also encourage people to have strong passwords. We also talked about two-factor authentication.

Arsalan: So, let’s talk about the two-factor authentication a little bit for people who don’t know.

David: Yes. So, two-factor authentication is a very simple thing to implement because there are modules and things that people have already written. This is an old standard where you generate a random string of whatever and you keep this string on your server and you send it to the user. The idea is to display a code on your page where the user can use an app like Google Authenticator and scanned the code, which has a secret. So, now the server has the secret. And your phone has the secret. There are two places that have it now. Then, based on the time, a six digit pin is going to be generated. So, every 50 seconds you get a new pin based on the secret key.

David: The cool thing is that the two devices do not have to communicate with each other. They can be off-line completely. This way there is nothing that someone can hack to the communication in any way. They might be able to see the pins on your page, but the pins would stop working after 30 seconds anyway. The flow is very simple. If you had this feature on your website, the user could go there and click enable and they would receive this code that they have to scan. Immediately there app is going to pick this up and display the first pin that is generated. Then they put the pin on the website to confirm that they are able to factor authentication correctly. If the pin is correct, the user is enabled.

David: Now, the next time they try to log in. They type their login and password. The page will ask for their six digit pin to verify they have access to the second device. The idea is to not send this piece of information to the same device that you are trying to log in from. So, if we were receiving an email with a pin, it’s kind of pointless because you would be using it on the same device that you are trying to log in from. That’s why it’s important to have the two factors on a completely different device, and ideally with zero communication with the Internet.

David: So, it’s a very simple thing to implement, especially with NodeJS. I don’t know for sure with different languages if they have the same libraries that you can just use.

Arsalan: It’s something that’s coming up. It’s not universally implemented. There are different ways of doing it. As you said, two-factor authentications basically mean that you don’t just rely on username and passwords. You have another way of authenticating. Usually, you enforce that. Sometimes, you have an option.

David: The thing to remember is that if people are not mindful about security, they will not know that anything even exists. So, that’s one sad part about the situation. The second thing is, they may think that the two-factor needs to be completed in a way like banks use them. For example, you were given a dongle that you had to carry with you that was generating those pin codes based on the secure string. So I think in people’s minds they may think that two-factor authentication is too complicated and they don’t have time for this or the knowledge to do it. In reality, it might take you three days to do it from start to finish. It’s very simple and easy. So, if you’ve heard of it and thought about doing it then just do it. I can guarantee that it’s very simple. It’s not complicated and the flow is very easy to follow.

. It’s not complicated and the flow is very easy to follow and adds a lot of security to your account.

Arsalan: Yes. It makes you look professional. A professional developer should think about the users and their own well-being and security. That is very easy. Now, these days because there is a very popular Google authenticator app that has a presumably easy API to use.

David: You don’t need an API. That’s the cool part. Completely off-line. The app just reads that secure string. You can either do it with a core code to make it easier for the user, but there is another option where you can type it in by hand. There’s no API or anything like that. The app is just there to make your life easier.

Arsalan: So essentially you have some kind of a string or a key as you mentioned. That key is using a known algorithm from which you can generate a token or a number with that. You can only do it if you have that random thing that you just generated. Since you are the website developer, you’re the one who generated it. So you have it. By the Google authenticator scanning that, they have it too. So, now only two entities in the world have it. Using the same algorithm, they are going to generate the same number. Once you’ve entered it, it’ll be very easy for the application to know. You don’t have to enter this because there are plug-ins and libraries and lots of other different ways of doing it. If you want to do it, you can, and it’s a very good idea to do it.

Arsalan: While were added, let’s also talk about HTTP and HTTPS, which is another thing that’s easy and even I’m guilty of doing that. If you go to mentoring developers.com, it’s on HTTP, not HTTPS. I didn’t get around to doing it, but it’s very easy to do these days. HTTPS is a secure version of your website. The way it works is that you use SSL or secure socket layer. Then you need a certificate on your website that tells everybody that you are a legitimate purveyor of website content. You are who you claim to be.

David: Yes. The point is to tell the website visitors that you are who you are pretending to be.

Arsalan: So, somebody has to trust somebody. There has to be some entity that we trust and that entity has to verify who we are. That entity provides us with a certificate, which we can then use to do encryption and the other entity will know for sure that we are who we claim to be because they also trust that other entity. Those entities are called certificate authorities and now there is a free one. It used to be that you had to pay a lot of money, but now you can go and get a free SSL certificate. So it’s very easy to do and it’s a reminder for me as well because I need to do it.

David: The good thing is that the free part is if you use Heroku, they have a built-in now. You can literally enable https for your website by using the automatic option and they use an encryption to do it. So, you just push one button and it’s done. You don’t even see your certificate. You don’t have to copy it. They just set it up automatically for you. Every three months. They will automatically generate a certificate for you because that’s how long those certificates last for you.

David: If you were to do it on your own server, then it’s a little bit of a pain in the butt. You have to run the script and set up everything. It’s a little more annoying. But if you use Heroku, then it’s one push of a button.

Arsalan: Right, and there are probably lots of people in the audience who are wondering right now what Heroku is. So, let’s just talk about it quickly. Heroku is a platform that allows you to deploy your Web servers, web services, websites, and whatever applications you have into their servers. It’s a cloud-based service.

Arsalan: So, if you were developing a program in NodeJS or Ruby on Rails or Python or whatever, it’s a website that you want people to access. You can have your own server deployed there and you can find a shared host or you can deploy a service like Heroku. Heroku allows you to deploy directly from your depository, such as your Getup account and once you’ve updated, it gets the new version and compiles it, runs a test and deploys it all for you. You save money because you only pay for the time that you use. This is very similar to what you can do on other platforms like Amazon, EC2, Azure, and some others. Heroku is very seamless from a development point of view. That’s why we talk about it and you can start for free. So, it’s very easy to get started.

David: The cool thing about it is Heroku uses EC2 machines. So, they’re using Amazon, but they’re putting a nice clean interface to interact with the craziness that Amazon is because the interface there is super crazy and complicated. When you have a lot of products like that. It’s not an easy thing. At Heroku, they just made it super simple to deploy and have it working. If you’re on that platform, it’s simple to enable SSL now. That’s especially important whenever you try to send any type of forms because if you don’t enable a secure connection everybody in the network is able to read everything that goes between the server and the client. So, the point is to make sure that you are not only connected to the website that you wanted to connect to but when you try to send information back to the server that stays private to the browser and the server. That way nobody else can see what is going on.

Arsalan: Excellent point. If you connect to a website that runs on https, which means that uses SSL certificates then all of that information is encrypted. So, only the person with the key that was negotiated during the SSL handshake can read it. That’s why Google is really pushing for it. Google at the search engine level likes to have all websites in https. It’s a good habit to have, but most websites today are not running on https, including mine. So it’s a reminder to me and everyone else to look into that. It’s very easy to do it.

David: I have it more for my private website which has no forms. It’s just the display with text on the page. I also enabled it just to do the right thing by default. Don’t even question it. It’s something that you might think is complicated because when you’re developing, you just want to develop something and you don’t want to think about this. But, sadly, many young developers forget about it. They don’t think about securities. This is not something that they are interested in for example. They just want to develop. If other people are going to use it, you need to start taking security seriously because other people’s lives are going to be impacted by what you create and how you created it.

Arsalan: There is a feeling that front end developers are not that interested in security. They don’t want to talk about it or think about it. They just want to build their functionality. So we’re going to talk a little bit about this. There’s a question on Stack overflow that caught my attention. I think we’re going to include the link in show notes. So, if you’re listening to this podcast right now, go to the website and the page for this episode. You’re going to find a link where there’s a nice answer with a whole bunch of bullet points.

Arsalan: The first point is to never trust any input. I think that’s a very good point, especially when it comes to front-end development. What’s your experience with that? You work with front end developers. What do you think about this, David?

David: The important part to realize is to never trust and input, but in the front end it’s not such a big deal because the front and is responsible for creating a good user experience. For example, let’s say you’re trying to enter your password and you have forgotten what it was. You should always check to make sure the inputs are all correct on the backend. The backend is where no one, in theory, has access. In the backend, you can ensure that the password is in place and is the right length. You can also ensure that the email is correct. You can also ensure the email is the right format. If you only make those checks in the front end, anyone who is visiting your page has access to that go to JavaScript code and can change anything on your website.

David: This is something that I realized a lot of people don’t think about. So, doing those checks on the front end is for user experience. Doing those checks on the backend is a security thing. The backend should be the last place to check and make sure that everything is correct.

Arsalan: So, we have different layers of security. When you have validation, you should have validation on the client and the browser because that’s fast and efficient. The ultimate validation and security is in the backend because that is where your data live. If you are user interface gets garbled because something happened, that’s okay. You can just reload the page or closure browser and start again as long as your data are good. You don’t want bad or untrustworthy data to get into your system.

Arsalan: So, let’s give an example of the different types of attacks or malicious content that can compromise your data or your application. There is something called SQL injection. SQL injection can be handled very easily. Let’s say you’re just starting out and you are building an application and you want to allow people to search for things. When you receive the text from the user, your plan is to use that to generate a SQL query to select something from a given table where this name, identity or field equals what you received from the user.

Arsalan: If you make a naïve query like that you are setting yourself up for an attack in the form of bad SQL input, which will run a random SQL query on your website and they can probably make a guess on what your data structure or database looks like. Not only would they be able to extract data, they would also be able to remove or insert things. They can wreak all kinds of havoc. This is something easily fixed if you use best practices, but you have to know best practices in order to use them. If you know that, then that problem goes away.

David: Yes, and it’s also a good idea to use forms as an added layer of your queries so you’re not writing low queries. Another good idea for ORM is to make sure you don’t have SQL injections. So even if this is not your strong suit, just by using one of those forms popular ones, you’re safe, at least in that regard.

Arsalan: Right, so let’s talk about some of those ORMS. ORMS are the software packages or pieces of software that take an idea or concept that you have in terms of data. You want to get and manipulate some data and convert that internally into commands for the database, like SQL. You don’t have to implement SQL in your own code. You write your idea. For example, let me get all these records that fulfill these criteria. You give that command in the ORM language, whatever the ORM uses. It could be text-based. It could be API, like a fluent API or whatever uses. Then, it internally converts it. When it does, converted it makes sure to prevent SQL injection.

Arsalan: What David is saying is that if we use those software packages, which are built into a lot of programming languages like Ruby on Rails and more, you can use them. They are very popular. If you follow the best practices, it will become very natural and just happen. But in a lot of cases when you’re first starting out, you may not know them or be intimidated by them. You may think that you need raw speed or just to get down to the metal and see how things work. So, it’s okay to create your own queries, but just make sure you use parameter-based queries.

Arsalan: I’ve been in situations where I’ve seen raw SQL all over the place. In the real world, raw SQL is used. Sometimes people think that gives them extra power. Some people don’t trust ORMs. It is sometimes the case where ORMs are very slow. In the .Net world there is a Microsoft sanction and Microsoft entity framework which is a very nice framework because it gives you a very nice API and you can type queries easily. It gives you a lot of ability, but it comes at the cost of speed of execution. It’s very slow.

Arsalan: You could pick another ORM that’s not sanctioned by or developed by your company of choice, like in the case of ASP.net. So then you could find another ORM that is like a micro ORM. It may be a very thin ORM that gives you some protection and some facility without being overbearing and it’s still pretty fast. So, there are some options.

Arsalan: If you’re listening to this podcast right now, and you’re wondering what kind of ORMS you can use for the framework or program language that you’re interested in, send me an email. My email address is us@mentoringdevelopers.com. I’ll help you out or I can get you in touch with people who can help you out. We’d love to know more about your problems and issues, what you’re dealing with at work. If you are interested in security, we’re going to have a follow-up episode. I think this is a good length. We’re going to conclude this episode right now, but were going to have but were going to have a follow-up episode where we will go more in depth on ‘are our application secure?’ I think you’re going to really enjoy that episode if you liked this one.

Arsalan: The show notes and links for this episode are going to be on www.mentoringdevelopers.com/episode 59 because this is episode 59. We are going to have to stop now and continue in the next part of this episode.

Arsalan: So, David, what do you think? Do you think we were able to cover some important security topics?

David: Yes, I think it’s a good start, especially if you never thought about this. Good topics are good for yourself. Do some research. Read articles. Learn more. There is one more thing that might help you out. It’s called Security Now! If you Google it, you’ll find it. It’s by Steve Gibson. It’s way more advanced than what we’ve just talked about. He goes into all the smallest ideas when it comes to security. So, at first it might be very scary and daunting, but it’s a good thing to at least listen every week to get a general idea of what is happening in the security world. That’s because there’s a lot of stuff happening. There are people hacking others and different accounts every day and every second. There’s always something happening. This will open your eyes to this world and what it is.

Arsalan: All right. So, this has been Arsalan Ahmed with David Gatti on security. We are going to be back with more security. Go back and check out episode 59 show notes again at www.mentoringdevelopers.com/episode 59. Send me an email at us@mentoringdevelopers.com. What’s your contact info, David?

David: You can hit me up on Twitter at @dawidgatti or on instant gray. Those are the two best places to get in touch with me.

Arsalan: Awesome, and our twitter handle is @mentoring devs. See you guys later!

Important Links

  • GRC Research
  • Stack Overflow
  • Heroku
  • Stack Overflow
  • Security Now!
  • David Gatti

 

Thanks for Listening!

Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.

If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.

You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts. 

https://media.blubrry.com/mentoringdevelopers/content.blubrry.com/mentoringdevelopers/MD-episode59-David_Gatti-Security_In_Software-Part_1.mp3

Episode 58 – Carlos is as Carlos does

April 11, 2017 By arsalan Leave a Comment

Carlos Munoz Kampff and Arsalan Ahmed with Mentoring Developers
https://media.blubrry.com/mentoringdevelopers/p/content.blubrry.com/mentoringdevelopers/MD-episode58-Carlos_Kampff-1.mp3

Podcast: Play in new window | Download

Subscribe: Apple Podcasts | Google Podcasts | Spotify | RSS

Starting a new career or adding a second career can seem like a daunting task to take on, but it doesn’t have to be. If you enjoy the kind of work that you are about to embark on, the opposite can be true. Sometimes in life, we make a career move that seems right at the moment only to learn later on that our initial intuition would’ve led us down the right path after all. Some might call it ‘living and learning’ and the learning often involves living with the path you currently have. But, if that path isn’t the right one, fear not! Sometimes in life, you have to take a chance to reach new heights that you never before thought possible. That’s what happened with our next guest, Carlos Munoz Kampff.

 

From the TI 84 calculator to music and back to tech, Carlos has done it all. Although music still tugs at his heartstrings, the overwhelming desire to code has been seeded there for years as well. But, Carlos never before considered tech as a potential for a career, until recently when he took a chance and enrolled in a code school. Now, he’s here to tell us his experiences that his path has created for him. Listen in to episode 58 while Arsalan chats with Carlos, a musical entrepreneur who turned to software development.

Carlos’s Bio:

Carlos Muñoz Kampff grew up in an entrepreneurial and musical family in Brazil, Mexico, and Germany. In 1999 Carlos moved to Boston to study audio production for video sync (aka film scoring). Since graduating, Carlos has been a rock and roll musician and circus music composer. He’s been on veggie oil bus national tours with the band Incus, reality TV shows with the ClownSnotBombs, and most recently started his own business and became an entrepreneur. He began Star Power Music School in 2011, developed Notabtion™ (his trademarked music notation and leveling system), and recently received a scholarship to participate in the Advanced Certificate for Entrepreneurial Leadership, of which he is now a graduate. He is currently in Portland and learning to code at Epicodus so that he can turn his innovative methodology and Notabtion™ into fun and engaging music apps.

Episode Highlights and Show Notes:

Arsalan: Hi, Everyone! Today my guest is Carlos Munoz Kampff. How are you, Carlos?

Carlos: I’m doing great. How are you, Arsalan?

Arsalan: I am awesome and it’s so good to have you here. We have discovered while we were talking that we have a lot in common, including the fact that you did something with your programmable calculator back in high school. You were cheating on an exam and you got away with it. Tell us a little about that.

Carlos: It’s kind of funny. Back then it seemed like a guilty pleasure, but now it’s becoming what my life is all about, which is kind of interesting. So, when I was in high school. They wanted us to use these TI 84 calculators and the thing about them was that they could do all kinds of mathematical computations, but they were also programmable. I hope my teachers aren’t listening right now, but they assume that if they didn’t teach us how to program that we wouldn’t just figure it out. As soon as I found out that you can program these I went through all the manuals and just created sheet programs for all my tests. So a lot of times I would have to twiddle my thumbs at the end of a test to pretend that I’m doing something because I’d be done already.

Carlos: So that got me curious about it. Then I went into different avenues. After that, and I started playing music. I joined the band and moved to the United States to study music and through that, I started to learn more about entrepreneurship. Years later I came back around to my interest in technology and coding.

Arsalan: So you’re currently in a coding boot camp in Portland, Oregon, right?

Carlos: Yes.

Arsalan: I was going to ask you to describe yourself because that’s one of the questions that we always start with. How do you describe yourself? Who is Carlos Kampff? But, I think it’s going to be hard because you have your legs in three or four different boats. But let’s see if you can. Who is Carlos? We want to see who you are.

Carlos: I’m trying to understand who I am as well. One thing I can really say is that I’m really a curious person. I like to learn about many different things. For example, I played music for a circus troupe that was on a reality TV show on truTV. That was an experience. I’ve toured with bands. I’ve started my own business. I’m always very curious and learning about different things. I’m an idea person. I think of ideas all the time, which has been hard in my life. It’s hard to describe ideas to people and not have people interact with you on that level or not be all about that idea as well. Until I found entrepreneurship and the coding community, that was the case. Now I’m really starting to feel like I’m finding my people because they are all about ideas too, and I find that really exciting.

Arsalan: That’s good. It’s good to have ambition and it’s good to have ideas. Yet it only matters and is beneficial when you put those ideas into action and actually produce results and you know that because you have your own business and you been working on it for years. We are going to talk about that, but first I want to know about your first encounter with programming. I know that you worked on that TI 84 calculator and that was pretty cool, but when we talk about programming we traditionally talk about sitting in front of a computer and typing on a keyboard and making stuff happen. So, what was your first encounter with programming?

Carlos: My first encounter with programming. More recently was just being curious about Swift and learning to make my own apps. I created a metronome app for my students to use.

Arsalan: Yes, we need more of those. We don’t have enough. Okay, that’s a joke, folks because there are 1 million metronome apps. But, if you make it without ads and it is fairly accurate and then a metronome is a very useful tool to have. So, tell me a little more about this app when you get a chance, maybe outside of the interview because I’ve been learning music and trying to play the guitar for a while and would love to know more about your metronome app.

Carlos: So, that was really just a project that I was coding. I don’t think I’m really going to take over the world with my metronome app, but I think there’s a switch that we can all choose to engage in which is whether or not we are consuming technology or are we creating technology? I think that when you’re creating technology, even if you’re just reinventing the wheel in your own way, it’s kind of magical to see how things work and to create new things in your own way. I notice every day when I’m going to coding school that I need to get on the bus on time. So, in Portland, there’s a Tri-Map API which we can use to get the exact time of the bus, so I made an alarm that tells me if the buses on time or late. The cool thing about coding is there’s always a niche. Maybe that Apple only work for people in Portland, but there are just so many problems and solutions out there. It’s really fascinating.

Arsalan: That’s true. Programming is like that superpower that can literally allow people to change the world. Sometimes it can make people’s lives better and it’s fun, but it’s also useful. There is also an opportunity that if you make something that is very useful, maybe somebody will pay you for that. So, that could turn into a product or business. So, programming, software development, and entrepreneurship are sort of tied together. As long as there are people making software, there will be entrepreneurs who are programmers.

Arsalan: Now, you didn’t study computer science in college?

Carlos: That’s correct.

Arsalan: Did you study something else in college? Did you go to college?

Carlos: I did go to college. I went to the Berkley College of music for film scoring which is music for movies. So, there is some technology involved. You’re learning about audio and interacting with video and whatnot. But, that’s only half the program. Most of it was learning about music and learning how to orchestrate and write music for different types of ensembles and arrangements and stuff.

Arsalan: I’ve heard that Berkeley’s entrance exams or auditions or whatever you have to do to get in are incredibly hard. Did you have to go through any of that?

Carlos: The thing about Berkeley is that it’s the biggest music school there is based on the number of music students that they have. Berkeley is a very tiered program. There are a bunch of different entry levels. It’s almost like a bunch of different conservatories altogether in the same place. So there’s this leveling system that kind of carries you through the whole thing and can give you different experiences. It’s been an inspiration for me. In my business, I’ve been implementing a leveling system as well because I felt like it was really effective.

Arsalan: When you’re talking about a leveling system, you’re talking about a kind of multi-tiered system where you can get more out of it if you invest more. So, help us explain what you mean by leveling system. I think what you mean is, you can either go to a level I or level II and level II is everything and level 1+ some more.

Carlos: Absolutely.

Arsalan: So, I would personally describe it as a multi-tiered system like tier 1, tier 2, or tier 3. I think people would understand that better.

Arsalan: Okay, so you didn’t study computer programming until you started this code camp.

Carlos: That’s correct.

Arsalan: That’s the first question. You have a business that you started back in 2011 and you were making money. Was it making money?

Carlos: Yes.

Arsalan: Was it making enough money for you to live on?

Carlos: Not in the bay area. It was definitely difficult to live in the bay area. It was a bootstrapped kind of business. We need to make money to be able to spend money. It’s been growing slowly and steadily and we try to keep our overhead to the minimum.

Arsalan: Tell us a little bit about this business. A lot of people would be curious by now. What business are you running and why are you doing this in the bay area? I know because you told me about your business, but the listeners don’t know. So let’s talk a little bit about what business it is and has it changed over time? Also, why did you do this business is not something else?

Carlos: The idea for this business came while I was in New Orleans. Have you ever been to New Orleans people?

Arsalan: I have.

Carlos: it’s an amazing cultural experience while you’re there. You can experience the best blues you’ve ever heard and then walk across the street and hear the best jazz you’ve ever heard and then down the street find the best southern rock you’ve ever heard. It’s just a really enlivening experience there. I was there visiting a friend, and that’s when I started crafting the business plan for the music school. The question was how can we give a little bit of the richness of the culture of that city to your city?

Carlos: With that mission, I started the business in Danville, California. I already had some connections they are and I started step-by-step having music students and then hiring other music teachers. I was also part of a group that started another business called JJ music camps, which does summer camps and puts kids in bands. I’m the music director for that program.

Carlos: Parallel to that I started Star Power Music and Star Power Music is all about the actual learning part about how to play your instrument and that’s where I started implementing the multi-tiered system. What we saw with that was immediately after I created and implemented it, the students sparked up. The reason is they all want to get to a certain point where they can feel really proud of how their playing music, but they’re generally confused as to how they’re ever going to get there.

Carlos: By creating that multi-tiered system, people light up because they can envision themselves taking each one of those steps. It’s kind of like a ladder, in a way, that students feel excited to climb. Some people might find offense to that because they see it as they just want to play their guitar without having to worry about the different levels, but most of the response to it has been great. The parents love it. The students love it, and they want to know that they’re making progress, and this allows them to have their small wins.

Carlos: Many things are hard to learn. So having those little wins really helps you stay motivated. There’s also the philosophy of doing community events and bringing the community together and getting people to meet each other because that’s the ultimate goal. You have to have something that you want to see you like the child improve playing music that’s improving, and pleasing to your ears because otherwise, you probably wouldn’t want to come. So that’s the fireplace, but you want people to come to that fireplace and meet each other and create friendships. That’s how you create a community kind of like the one that exists in New Orleans. In a way, I was trying to bring a little flavor of that to other communities.

Arsalan: I think that’s a really interesting idea, especially in music because music is something that a lot of us want to do, including myself. We would love to be able to play a certain kind of music and play efficiently and not suck. But, as soon as people start learning how to play a new instrument they realize that they do suck because it takes years of practice. It’s not like programming where you can potentially start from zero and in six months churn out a product which would look very good. It’s possible that within a few months of starting you can actually be hired to do this professionally, but it’s not the same with music. Music takes a lot of patience and a lot of practice.

Arsalan: As far as I can tell, you’re talking about assigning levels to people based on their proficiency. So, if I don’t know anything, maybe I’m level 0 and then I go and learn a few basics and a few chords and then maybe I progressed to level I. So, you can graduate from level 1 to 2 to 3 and it makes you feel like you’re actually making progress. It’s not like it’s a huge continuum. It’s not like 10 years later you’re either a professional or an amateur. There are levels in between. That’s a really good idea. So, I think people should check it out. We are going to have all the links in the show notes. So, if you’re listening to this podcast, and you’re not able to take notes, don’t worry about it. We’re going to have all the links in the show notes, so you can go check out his academy. You’ll need to be physically in the bay area, right?

Carlos: Yes, for now.

Arsalan: Okay, so if you are in the bay area, then I think this would be great. It looks like with this program that you’re targeting kids which I think is a good idea, but there are lots of adults who like to learn as well. So, maybe you should think about that, Carlos.

Carlos: Well, that is something that I’ve been thinking about a lot and it is part of why I am in coding school. What I found is that adults are very busy. So, for them to be able to meet at a certain time and be willing to spend money on something like this, it always ends up being on the chopping block with their other bills. So, what we’re trying to do is make it more accessible, especially for adults and young adults.

Arsalan: Like myself.

Carlos: Yes, Your 29, right?

Arsalan: I’m 19.

Carlos: So what I was going to say is that young adults often don’t have the money or the time to have a teacher come to their house or for them to even go to a school. So, I’m trying to introduce technology where I can stream lessons and have tools that would make it easy to do the lessons remotely because I see the technology getting better every day.

Arsalan: I think that’s an idea worth pursuing and hopefully you will find success. People who want to learn more about an instrument or become musicians who just never had a chance may be able to get in touch with you and I’m sure you’ll help them out.

Arsalan: So, you are in a code camp and the question is why? First of all, why do you want to be a developer? Lots of people just go online and read books and just hack their way through coding, but now you’ve decided to go through a code camp. The first question is why do you even want to be a software developer? The second question is why do you want to go to a code camp?

Carlos: The school year prior to this one. I went to an entrepreneurship boot camp where you learn all about starting or growing a small business. Constantly during the entrepreneurship program, they were referring to different types of technologies and what you find as a small business owner is you end up having 10 different accounts to 10 different things. So in the end, you have all these different services and they’re not speaking to each other and everything is disconnected. So what I’m hoping to do in learning to code is to create something that is more integrated and something that I can understand and have some level of ownership over. I want to be able to know what it’s for and how it works. So that if I want to go in and create a new feature than I can create a new feature. So it seems like a natural progression to learn about business and then learn the technology to actually implement a lot of these ideas.

Carlos: first, I started by self-learning like a lot of people, and used sources like Tree House and Udemy. I actually found the lessons very helpful and great, but the one issue is that you tend to run into a bug as soon as you are not doing exactly as they’re telling you and you and you try to do your own creative project. You run into bugs. So, then what do you do? You try to go to Stack Overflow or GitHub, but it’s confusing and it can be discouraging. So, I found that in a coding bootcamp, there’s that community. For example, last night I went out for beers with one of my cohorts. So, there’s just this sense of we’re all in this together and we understand each other and even though we are over beers and having snacks will still talk about coding and how to do certain things.

Just being around someone who understands these types of questions is incredibly valuable about being in a boot camp and learning with other people.

Arsalan: That’s very interesting. I think what a boot camp does for you is sort of create an artificial environment where we are all on this proverbial boat and we are all going together and you are all doing the same thing. I’m assuming that you are all doing similar, if not exactly the same projects. Is that correct?

Carlos: Yes, that’s true.

Arsalan: You’re given a project and everybody’s doing the same project just like in a college class, but in this case, you are forced to be together. So, you know that if you’re talking to the person next to you. They are also working on the same problem. That means that they will have empathy for your situation, first of all. They will also not have to learn what you are trying to do. For example, if you came to me with a problem or an issue and asked for help, I would first have to learn what it is you are trying to do. So I have to get some context. It’s going to take some time and I’m going to have to look at your code. It may take half an hour or an hour or two for me to really understand where you are coming from before I could even begin to help you. None of that happens while you are inside a cohort.

Arsalan: First of all, if you’re in a cohort, you probably don’t have kids. You’re probably not married because you probably got divorced. If I tried to join a code camp right now, I probably get divorced. There are certain times in your life when you just cannot do that. So, if you’re in a cohort than you probably don’t have a lot of responsibilities. I was just trying to say that in a funny way. If you are in a cohort and you are on campus, you’re not doing anything else. That’s all you’re doing.

Carlos: Right. It’s very demanding.

Arsalan: So, the barrier of entry for me to go in and asked somebody is low. That’s a really powerful concept that code boot camps bring that even colleges cannot do. When you’re in college, you’re taking multiple classes and doing multiple things and you might have jobs. But, if you are in a coding bootcamp, I don’t think you have the capacity to have a job on the side. That’s your job.

Carlos: Yes.

Carlos: Right. So, I’m going to Epicodus in Portland. The way they have us work is revolutionary. It’s a flipped classroom. You watch the tutorials at home and learn how things work and then while you’re there, you watch some tutorials on how to implement some things. Then you spent eight hours they are with a partner because you pair with a different person each day. So you spent eight hours trying to accomplish those things and meet those goals and lessons. You have tons of time with hands on coding, and that’s one of the most important things. Bill Gates even commented on the value in that. He even had time in the library where he was able to work on these computers and had tons of ours programming. It seems like it’s the most important piece. It’s the same in music, actually.

Carlos: You can learn a concept in music, but if you don’t know how to play it on your instrument, then it doesn’t matter. No one is going to come to the concert to watch you think about an idea. You need to be able to actually do it. I’m finding that at Epicodus I’m able to actually practice and learn all the key commands. It’s almost like a sport. You have to have a certain flow to it, and have certain good habits like copy and pasting certain names so that you get the spelling correct. You have to know how to check for common bugs. So, I’m finding boot camp very effective in that sense.

Arsalan: That’s good to know. It’s good that it’s helping somebody like you who has never really done any programming before. Did you ever write a program before this? Did you ever write a page with a function to do something? I know that you worked on your calculator for a little bit, but before you started Epicodus did you actually write a complete program? The metronome app was part of this, right?

Carlos: No, that was before. That was something that I learned from Udemy. They were teaching a tutorial on how to make a clock. I figured that I could make that into a metronome if I just added a sound to each time that there was a second and then I could change the duration.

Carlos: So, I’ve done a little bit before but there are plenty of people in the program who started from absolute scratch. One of my best friends there is a plumber. So give a shout out to Drew. He came from being a plumber in New Jersey, I believe. Now he’s doing amazingly well with coding. I won’t say that anybody can learn it because there may be some people who aren’t interested in learning it. But, anyone who’s really interested in and curious about it can really learn it because it’s a sequence of logical steps and if you can think logically, then I feel like you could build up the knowledge to understand it.

Arsalan: That’s really good to know. If you’re a plumber out there and you’re listening to this podcast and you never thought that you could be a programmer, now there is proof that you can. Anybody who is motivated enough to go through the difficult parts will be able to make it, I think. It’s hard when it’s hard. That’s what you were referring to when you said that we run into bugs as soon as we go off the script a little bit on a tutorial. It’s going to happen.

Arsalan: Let’s say that you go to a website and you find a step-by-step tutorial on how to build a certain type of application or a website and you start following that step-by-step. Invariably you will find that one of the steps does not produce the results that the tutorial said that you should expect. Sometimes it’s because you did something wrong, you typed something wrong, or you made a mistake in the way you set up your computer. Sometimes the underlying framework or software library has changed and you are now on a different version and it’s not compatible. It happens all the time. It happens to me all the time. Yet, since I’ve gone through this so many times over and over, I’ve come to expect it.

Carlos: Right.

Arsalan: It’s good to have somebody who you can lean on and it’s good to us have somebody who you can talk to. Even if they don’t help you, it’s good to know that what you are experiencing is normal and that you’ll get through this. Sometimes, you need somebody to actually work together with you on a problem to get at it or find a solution that works. Sometimes what happens is that there is an actual bug in the framework. It’s pretty common. For example, if you’re using Ruby on Rails to build a website and the new version of Ruby on Rails that you installed has a bug in it or has a problem, that’s not your problem. Yet, now you’re building on top of it. So, you’re going to have to find a workaround. That’s just how it goes and that’s okay. Eventually, at some point they might fix it. We just have to constantly adopt the changes and adapt our skills and know that there is never going to be a perfect solution. We just have to find a balance.

Arsalan: I studied engineering. Engineers kind of know that instinctively because engineering is all about finding the right compromise between different options to get to the result. You just want to have the finished result that is acceptable and it doesn’t really matter which approach you take. That’s a nice engineering concept that I think when you’re building software. You should think like an engineer a little bit. It’s like these Lego pieces. You need to put those Lego pieces together to come up with your building. If a certain piece doesn’t work, throw it out and find something else that works in its place.

 

Arsalan: What I’m curious about is the sets of technologies and frameworks and so on that you’re using. Do you have a choice in your coding bootcamp to pick the technology or is it given to you?

Carlos: We do have a choice. I could’ve gone into the C# or .Net path or the Java or Android path or the Ruby and Ruby on Rails path. I chose the PHP and Drupal path. Part of it is because I’m into education and a lot of the universities will use PHP and Drupal. All of those different tracts learn Ember and Angular as well. It’s been interesting because PHP is a much older language compared to Ember and Angular, which has positive son negatives. The exciting thing about angular is that they are constantly updating it, and you can work with Firebase and you can do different things, which is great. The downside of them always updating it with new features is they are constantly changing all the things that you are trying to learn. I’m just getting started with that, but I’m seeing that it’s a beast and I’m in a fast lane. Yet, if you’re working with PHP and Silex then my experience is that it is what it is. You get to know it and you get to work with it. So, it’s been a kind of interesting experience.

Arsalan: Learning Ember and Angular is a very humbling experience because you are never the man. You’re never really comfortable or on solid footing because the ground under you just keeps moving and it’s generally true for all the JavaScript frameworks. I think the good attitude to have is to never be comfortable and never have the I know all there is to know and I don’t need to learn anymore attitude. That’s something you could probably do in Java, maybe. Maybe you could do that, and PHP, to an extent as well. But you can’t do that if you’re working on modern web development frameworks like Ember, ReACT, Angular, and so on. But if you have somebody who does not want to constantly be in a place where they have to learn then you could say that they could learn a language or a framework that doesn’t change so much or even fall much in the world. Maybe the versions keep changing, but the industry as a whole doesn’t adopt new changes as frequently. So, you don’t then have to keep on that treadmill. That’s an interesting thought. However, the reality is a little mixed. It’s not always true because if you are working on PHP or C sharp, or Java, and you’re building web applications, then the chances are that you will need to build something that works with the modern times. It’s faster. It’s more fluid. It updates more frequently. It doesn’t have page refreshes as often. The chances are that you’re going to need to use some client side framework along with it. For instance, Angular is a very popular choice or Ember or React or something else.

Important Links

  • Star Power Music School
  • Epicodus Code School
  • JJ Music Camps
  • Stack Overflow
  • GitHub

 

Thanks for Listening!

Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.

If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.

You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts. 

https://media.blubrry.com/mentoringdevelopers/content.blubrry.com/mentoringdevelopers/MD-episode58-Carlos_Kampff-1.mp3

Episode 57: How to Sell Yourself and Find Work

March 14, 2017 By arsalan Leave a Comment

David Gatti and Arsalan Ahmed with Mentoring Developers
https://media.blubrry.com/mentoringdevelopers/p/content.blubrry.com/mentoringdevelopers/MD-episode57-How_to_sell_yourself_to_employers-with_David_Gatti.mp3

Podcast: Play in new window | Download

Subscribe: Apple Podcasts | Google Podcasts | Spotify | RSS

Do you need to have experience in software development in order to get a job in tech? The answer may surprise you. In a world where technology leads the way to new and exciting innovations and designs, finding a job in tech can seem like a dream. But too often you hear from others around you that entering the field of software development is tougher than it first appears. You must have the skills needed, but skill alone isn’t enough. You must also have experience under your belt. That’s the theory, anyway. So, let’s separate fact from fiction.

Returning to talk more about selling yourself and finding work in software development is David Gatti. David comes from a varied and global background in tech and more. Now, he’s here to confirm what’s true and what’s false about what you really need to do to get into tech. If you’re ready to hear more about it, listen in to episode 57. Be sure to leave us some comments about what you liked at the end.

Say hello to David on Twitter!

 

David’s Bio:

David Gatti began his career in IT as a Systems Administrator. He learned how to code in PHP out of boredom, and made some simple internal tools to help him while managing the company network.

He then became a blogger and wrote about mobile technologies before the iPhone came into existence and PDAs had cellular modems. He also wrote the CMS for the website itself when WordPress was first starting. Then he began working as a web developer for a company that did simple Facebook games.

After this initial experience, he imported a Windows Mobile app to Android 2.3. He later became a Brand Manager for a mobile game company and a Marketing Director for another company, and at that company – he transitioned to Developer Relations Manager and worked for two companies with this title. It was a job that he fell in love with.

But, while hunting for his next opportunity, he struggled to find the right company. Out of frustration, he created Simpe.li (simply) so he could keep doing what he does best – Development Relations Management done right.

Episode Highlights and Show Notes:

Arsalan: Hi, everyone. Welcome to Mentoring Developers. My guest again today is David Gatti. David, how are you?

David: I’m good. How are you?

Arsalan: I’m doing fantastic. It was good to have you in the last episode and I’m excited to have you again because we’re going to talk about another really relevant topic. I’m going to let you describe it.

David: Thank you. I don’t have a platform for it, so let’s say this. I want to help you learn how to sell yourself to an employer.

Arsalan: That’s great! How to sell yourself or how to get a job and get ahead if you’re just starting out and are new to software development. If you’re wondering how you’re going to get noticed and how you’re going to get a job, you should be listening to this episode.

David: Correct. The first thing will require lots of work and patience. You are going to need to do a bunch of things before you can start looking for a job if you want to do this quickly and find someone who is going to like you. There are a lot of people online who are bombarding employers and companies trying to convince them that they are the perfect fit for the job. This is without them providing any proof that they are any good at what they do. You may be thinking to yourself that you just finished school and you don’t have any experience. Yet, in 2017 you don’t need any experience. You need to build your portfolio online. You can do this a couple of ways.

David: Start a topic that you’re passionate about and learn everything that there is to learn about it. Write something about it explaining what you just learned. If you’ve written five or six of these articles, then, while job searching, you can show that you understand what you learn, you can explain those topics, and that you can write interesting articles about that topic that are fun to read.

David: Spend some time writing small tools to help other developers. Now, many languages have package management systems. A couple of examples are NPM for NodeJS, PIP for Python, and many other tools. Find something that always annoyed you when you were developing something and perhaps no one wrote a tool or they did a poor job of creating a tool. Then, make a bunch of tools for yourself and publish them with links on your website. This gives you some proof that you are active and building things. Then when someone asks you for some examples of your work, you can include all the links to the things that you’ve created. You can show your GitHub profile is active by building something on there. You can also use GitHub as a blogging platform. That’s something that I do – publish my articles on GitHub. Basically, GitHub is like Facebook for developers. This is the way that GitHub is going after their last conference. They are understanding that developers are the most important part of their community rather than B2B, or businesses. So, they are going back to their roots and building new social features.

David: When I look for new developers and their GitHub profile is empty and they don’t have their own name or a photo, I tend to pass them up. It’s a very important part especially for someone who’s looking for a developer. One of the easiest ways to find a job would be through places like Upwork, Freelancer or a similar website. You may wonder why you should bother when there are so many people bombarding lawyers and companies with messages, but I would suggest to go and check the profiles of those people. There is literally nothing there. Those are people who are just looking to make a quick buck and work on a project. They don’t care about the code quality. You can easily stand out by showing what you’ve done.

David: If you’re young and you’ve just finished school, you could say to the employer that you are willing to work for less and prove yourself. And if you create clean, nice and well-organized code, the employer will take that into consideration and it will be to your benefit. The main thing that companies want is somebody that they can trust, someone who knows how to do a job, and someone who is writing clean and well-organized code. By being diligent in taking the time you can make it so that the company will not want to let you go. Then, you can more easily ask for more money.

David: This is something that I take the time to write in my own profile. I write out the codes and continue learning new things. I love writing articles. So, I take a complete idea and simplify it. People on twitter are starting to notice it, and are commenting on my articles. Then, if I need them while looking for a new job, I just point to my GitHub profile.

Arsalan: Yeah, a tip that I received from recruiters and from my own personal experience, is to always include your social media profile or all of the links where you maintain your social media presence in your resume. I don’t necessarily mean Facebook.

David: I would say that if they are a developer, then enter it. But, I wouldn’t be interested in what you ate yesterday.

Arsalan: Right. A lot of people think of their social media profiles as an extension of their resumes or an extension of their personality. So, they curate that. It’s all intentional. If they post something on Instagram or if they tweet something, they’re wondering to themselves “what do I want the world to see.” So, they include that in their LinkedIn profile and on their resume. It’s possible that some of their social media profiles will have content that is not very professional, but it doesn’t have to be unprofessional. If there’s something questionable in that content, then you should take it out. Otherwise, that tells you a few things as an employer or manager. Firstly, that person can communicate, even if the article is not technical. If you write about something and comment on things, it shows you as a real person, which most people are more comfortable with. If you have done work, then you can always create articles and you can write other pieces of software and you can post them on GitHub.

Arsalan: The other thing that you mentioned about GitHub was fantastic, but a lot of people who do work in enterprises or non-open source projects, which is the majority of people, they don’t have the liberty to share their work on GitHub. But, what they can do some work on their own or show snippets of something that they’ve built, and then they can share that.

David: Of course. It’s always personal stuff. Don’t share corporate code.

Arsalan: Yeah, don’t share corporate code, but a lot of people have worked on open source projects to begin with. Then, they can share it. That’s great if you can.

Important Links

  • Instagram: https://www.instagram.com/gattidavid/
  • Website: http://david.gatti.pl
  • GitHub: https://github.com/davidgatti

Thanks for Listening!

Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.

If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.

You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts. 

https://media.blubrry.com/mentoringdevelopers/content.blubrry.com/mentoringdevelopers/MD-episode57-How_to_sell_yourself_to_employers-with_David_Gatti.mp3

Episode 56 – Working remotely overseas and loving it – with David Gatti

February 28, 2017 By arsalan Leave a Comment

David Gatti and Arsalan Ahmed with Mentoring Developers
https://media.blubrry.com/mentoringdevelopers/p/content.blubrry.com/mentoringdevelopers/Episode56-Working_remotely_overseas_with_David_Gatti.mp3

Podcast: Play in new window | Download

Subscribe: Apple Podcasts | Google Podcasts | Spotify | RSS

Becoming a software developer and beginning your career with a small or large company can provide you with an abundance of opportunities, experience, skills, and sometimes even advancement. But, working in an office isn’t without its disadvantages. Regardless of which industry you work in, one thing always seems to be a constant: office politics. While working around office politics may be a reasonable solution for most people, what if you want something more? What if you want to be a software developer, but without the office politics? Is it possible to find a way to work as a developer outside of the office?

Our guest in this episode is a jet-setting remote developer David Gatti. David appeared on the show as part of a panel back in episode 31. Now he’s back and he has something special to share. David works as a remote software developer from outside the US and he is here in episode 56 to tell us all about it. Listen in to find out if doing remote software development is right for you.

 

Say hello to David on Twitter!

 

David Gatti’s Bio:

David Gatti began his career in IT as a Systems Administrator. He learned how to code in PHP out of boredom, and made some simple internal tools to help him while managing the company network.

He then became a blogger and wrote about mobile technologies before the iPhone came into existence and PDAs had cellular modems. He also wrote the CMS for the website itself when WordPress was first starting. Then he began working as a web developer for a company that did simple Facebook games.

After this initial experience, he imported a Windows Mobile app to Android 2.3. He later became a Brand Manager for a mobile game company and a Marketing Director for another company, and at that company – he transitioned to Developer Relations Manager and worked for two companies with this title. It was a job that he fell in love with.

But, while hunting for his next opportunity, he struggled to find the right company. Out of frustration, he created Simpe.li (simply) so he could keep doing what he does best – Development Relations Management done right.

Episode Highlights and Show Notes:

Arsalan: Hi everyone and welcome to another episode of Mentoring Developers. In this episode I’ll be talking to David Gatti. David, how are you?

David: I’m good. How are you?

Arsalan: I’m great. You have been on the show before in discussion. So I know quite a lot about you, but my audience who is listening right now doesn’t know a lot about who David got today is. So, describe yourself a little.

David: so, I’m a human, born on earth. More precisely, though, I’m a software developer and project manager for two different companies. I was born in Sweden and then I moved to Italy, where I was raised. Then I look for a long time in Poland. When I became a little older I decided to start traveling the world. I ended up in China and Southeast Asia, so, China, Singapore and Bali. In Bali I stayed for about 10 months before I moved for a short bit to the states and then back to Poland. So, I’ve been a little bit of everywhere.

David: I became a software developer and at one point I became a blogger for four years. At that time I was working on the site itself. At that time WordPress was still starting out with version 1, if that tells you how long it was. I was building the whole website by myself because at the time WordPress wasn’t a thing. It was just starting. After that I became a web developer and then I took a break and became a brand manager. After failing with the blog website, I had to close it and go back to becoming a web developer.

David: I became very passionate in understanding why a company fails. As a result of that, I read a lot of books and different articles and even watch different movies about the topic. I became a brand manager because of that. I worked in the software development company where they were working on a lot of games. It was fun, but I eventually came back to just software development because I didn’t like the office politics within a company.

David: As a software developer, you can just sit down and do whatever you have to do. You punch the keyboard and cool stuff ends up at the other end. I also missed just being a developer. I became a project manager for one company because this allowed me to understand how to work with other developers. It also helped me to understand how to communicate over distance.

Arsalan: So, you are a globetrotting software developer who has live everywhere and who has experienced life in a way that most of us don’t get to do. Not only have you been developing, you’ve also dabbled in management and a little bit of this and a little bit of that. It’s interesting, but that gives you a perspective that a lot of us don’t have. That’s why you’re on this episode because we really want to learn from you and your experiences and to see what it is like for other developers who may not live in the US. Most of the audience for this podcast is based in the US and I’m based in the US. We really need to learn more about what it’s like for others, and perhaps the grass is greener on the other side. Maybe it is a great idea. What’s also very interesting about you is that you are working as a remote developer. Is that right?

David: Yes. Both companies that I work for are based in the US. I have a company in the US that I opened remotely. That’s like the ultimate remote thing. If you are a new developer who is just starting out, then maybe going remote right away is probably not the best option because you need to work with other people in a company and understand how the company works and what you like and don’t like about that.

David: The normal rule is that you go to college, you finish school and you go to work where you work, work, and work. Then, you buy a house; you have a family and all that other stuff. I’ve always understood that. First you need to understand the rules before you can break them. This is something that I learned.

David: I did everything that society expected me to do and then I decided that I didn’t like it, and I wanted to work remotely with the option to travel whenever and wherever I wanted. So lately, for example, I’ve spent a month in Spain, but the two companies that I work with don’t really know this. They just noticed that the background of my Skype looked different. So, on the plane I just continue to code and do my thing. So this is what’s great.

David: You can travel on the weekends and keep working during the week and nobody knows the difference. I think that managers and CEOs don’t get the position therein because they’re good people. They get the position that there in because they understand the corporate worth. By working remotely, you don’t get to see them and they don’t get to see you. So, they don’t get to see how you react to them. So if you react in a negative way, they don’t see that. So, working remotes gives you a way to work without being bothered by the whole office politics thing, which I like. In fact, I don’t even have contracts with the two companies that I work with.

David: We literally work together because we trust each other. I have two other friends who have their own companies here in Poland. They have contracts that are very strict. It’s like you having to pay me by this time and I have to work at this hour, and etc. I think that it seems like a very stressful thing. One of my clients, I know that if he doesn’t pay me it’s because he doesn’t have time. He’s running around doing a lot of other things. So I wait patiently and the next time we talk I’ll remind him about the payment. Then, by the weekend I get paid because he finds five minutes to just click on the button. So, this is how we try to understand each other. I’m flexible and their effect, flexible and it just works for us. That’s how I’d structure my life.

Arsalan: That’s nice, as long as you can trust people. But from experience…

David: Oh, from experience, you cannot just do this with anyone. It will not work. Nothing works like that. It takes time.

Arsalan: Even between friends, as a general rule, it’s a good idea to have contracts. But in your case, you don’t want that kind of stress in your life and you know these people.

David: I don’t do this with friends. That’s like the worst idea ever.

Arsalan: So, maybe it works for you because you are invoicing them or billing them regularly. You’re not waiting to or three months because I could be problematic.

David: I invoice them once a month, but with one guy, we were doing it every two weeks. I was getting annoyed with having to invoice him every two weeks, so I asked him if we could change it to monthly and he agreed. It all depends on how you approach this and what kind of deal you set up. Since we don’t have a literal contract, we can just have a conversation to discuss the new ideas. Contracts were invented because people were scamming each other. Yet, over the years, the contracts didn’t entirely solve the problem. You still have problems with people getting paid or doing what they need to do. So, I don’t think that’s the solution. For me, it’s a matter of finding someone I can trust and can have this conversation with and then everything works.

Arsalan: I think that is a good idea. In general, if I want to give advice to someone who is just starting out and once to be independent and work remotely, I would recommend more frequent billing than a month, like maybe once a week or every other week. That’s a lot of work. It’s a lot of overhead, but that protects you from the chance that somebody deciding that they don’t want to pay you. Maybe they ran out of money. Maybe their clients didn’t pay them. So, may be your only out for a week or two instead of one or two months. If you do it for a month and you don’t get paid for another month. Then you could be out two months of income.

David: That’s true.

Important Links

  • Instagram: https://www.instagram.com/gattidavid/
  • Website: http://david.gatti.pl
  • GitHub: https://github.com/davidgatti

Thanks for Listening!

Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.

If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.

You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts. 

https://media.blubrry.com/mentoringdevelopers/content.blubrry.com/mentoringdevelopers/Episode56-Working_remotely_overseas_with_David_Gatti.mp3
  • Prev Page...
  • 1
  • 2
  • 3
  • 4
  • 5
  • …
  • 9
  • ...Next Page
Subscribe To Mentoring Developers Podcast
Subscribe via Stitcher

We Be Tweeterin’

How to fast-track your tech career with author Greg Thomas | Mentoring Developers | youtu.be/z5WK7CVHzZA pic.twitter.com/imjBthnvph

About 6 months ago from Mentoring Developers's Twitter · reply · retweet · favorite

Creating a brighter future for the #success of new and aspiring #webdevelopers includes mentoring as well as #apprenticeships. Listen to an interesting panel discussion between mentors and mentees from @hearsparkbox moderated by @Arsalania at mentoringdevelopers.com/episo… pic.twitter.com/yJv29hNiqx

About a year ago from Mentoring Developers's Twitter · reply · retweet · favorite

Still dreaming of getting your foot in the proverbial #webdevelopment door? Did you know that there are companies that offer you a chance to do a proper #apprenticeship and get your feet wet? We found one in Dayton, OH. Check out “the exposé” :) youtu.be/Grsju8FjSx

About 2 years ago from Mentoring Developers's Twitter · reply · retweet · favorite

Not all #developer #jobs are created equally. Finding the right opportunity should include a great culture, a great workspace, and #apprentice opportunities for career growth. youtu.be/Grsju8FjSx

About 2 years ago from Mentoring Developers's Twitter · reply · retweet · favorite

To become a successful #webdeveloper, you need an employer who offers ample opportunities for growth. We met one such employer. Check out our #profile of a sparkling little #design and #development shop called Sparkbox. youtu.be/Grsju8FjSx

About 2 years ago from Mentoring Developers's Twitter · reply · retweet · favorite

Follow @mentoringdevs

Search

Copyright © 2021 · Mentoring Developers