Software systems to innovate and grow

Episode 26

Adopting Angular for Non-Front-End Developers: Kirk Graves with 1800 Contacts

Show Details

Today, we have Kirk Graves on the show. Kirk is a Senior Software Engineer over at 1800 Contacts. He has over 20 years of experience leading software teams and has quite the story to share with us. We are going to be chatting about Kirk’s experience working with Angular 2.0 project. We will discuss some of the lessons learned and how you might learn from his experience.

Well, without further ado let’s welcome Kirk.

Show Transcript

Carlos: Hello everybody, and welcome to another episode. Today, we have Kirk Graves on the show. Kirk is a Senior Software Engineer over at 1800 Contacts. He has over 20 years of experience leading software teams and has quite the story to share with us. We are going to be chatting about Kirk?s experience working with Angular 2.0 project. We will discuss some of the lessons learned and how you might learn from his experience. Also, if you enjoyed this podcast please make sure to subscribe and give us an honest review. It makes all the difference to hear your feedback. And also maybe you can go to some interesting people that we could have on the show. Also, if you have any questions over anything you want to communicate with me for you can email me at carlos@gistia.com. That is carlos@, G-I-S-T-I-A, .com. Well, without further ado let’s welcome Kirk. Kirk it’s a pleasure to have you in the show. How are you doing today?Kirk: Excellent! Thank you.

Carlos: So Kirk, for those who don’t know you give me a little bit information about yourself of how did you get into software, and maybe a little bit of your background.

Kirk: This is kind of a funny story so I’ll share it with you. I was actually a theater arts guy in college. I have some computer experience when I was younger but theater was my passion. However, about a year into college I came to the realization, ?Well, theater is a lot of fun there’s no money there.? So I went to my second love which was computers and kind of just started off writing reports for a company in the Salt Lake City, Utah area. And eventually that grew up into me developing in Visual Basic, and then eventually .NET when that came out. And I’ve been a C# guy for the last 15 years, 16 years.

Carlos: So given that you have, you know, a very senior career. You’ve been in the tech world for a couple of years now and you’ve got a lot of experience under your belt and I say that in a good way by the way. I want to make sure that I’m positioning questions to you around your point of view, right? Like there are times younger people that don’t have any idea of how things have evolved, and whether it’s good or bad. So I guess the first question for you is, based on your experience, do you think the evolution of software engineer has gone in the right way?

Kirk: Interesting question. My answer is, that’s the way it has gone. Therefore, it must be the right way.

Kirk: Is it necessary with the way we predicted 20, 30 years ago? I would say no, not at all. I remember in my first real IT job there was a group of about 10 developers. I was one. I worked in a client environment and the other guys they were all in an AS/400. And to them that was programming. And you weren’t a real programmer unless you’re on a mainframe or a small thing like an AS/400. It’s funny to watch how things have developed. We are really coming back to that world, kind of that really thin client talking to a server on the backend. Architecturally, it’s not that different from what those AS/400 guys were doing 20 odd years ago.

Carlos: So before we jump into your particular project with Angular 2.0 and kind of some other work that you’ve been doing. Can you give us a little bit of an intro of your role at 1800 Contacts, and maybe before that, what is 1800 Contacts? And if you could give us an overview of how it does the business that it does. I know that there’s a lot of automation maybe you can add a little bit of context to that.

Kirk: Sure, so 1800 Contacts is the largest internet retailer in the world. We are primarily web-internet based. We have some amazing tools in the mobile sphere. We do quite a bit of our business as kind of developing in the direction of fulfilling for other companies. By the 1800 Contacts brand itself has grown really out of this idea that we serve the customer better than anybody else can possibly serve the customer in the area of selling context. Very focused business as you can imagine. And that focus has given us some abilities that a lot of companies don’t have. When, you’re focused in on a product that is so specific. We can tailor our applications to be really really good at that one product. We can tailor our customer service around just selling that one product, and so 1800 Contacts has really done well just by becoming highly automated without taking the person out of the experience. It’s an interesting culture.

Carlos: So, how does your team support and impact the actual business? How do you guys help 1800 Contacts perform, you know, do the business that it does? Where does your team fit in?

Kirk: So my team supports our distribution center. Everything from receiving products, to shipping it back out the door, managing inventory. All the tools that are used to deal with product, that’s my team. But that’s just what we do. The way that we actually support our clients is really an area of what can we do to blow them away every day. How can we make our systems better? How can we support their needs in ways that they haven’t thought about yet. And we’ve got some guys on my team that are just phenomenal with that.

Carlos: So, I guess the core of our podcast today is discuss your experience with Angular 2.0. Particularly with one project that I know that you guys did in a very short amount of time. What was the overarching reason for that project? And I know you can’t go into detail, into many details but just give us a little bit of context as to how did that help the company overall.

Kirk: Sure, so uhm, yeah, you’re right. Unfortunately, I can’t go into a ton of details. There’s some politics internally related to the project. But the DC Team, the leadership team of the DC really wanted a particular application. The goal was to try and make it faster and more efficient for the employees there at the distribution center to be able to ship product out so that we could meet this amazing targets for ship dates. And some of our orders had grown in size dramatically so that process had gotten more and more difficult. We have a certain skill set and it’s kind of important to know. My team is more services in Windows App. So that’s really all we do, and we work primarily in the realm of C#, so Microsoft environment, .NET Framework, that’s us. What they want to do is something that would run on a tablet, and they we’re looking at Android and iOS. So they didn’t even think about coming to my team. They went instead to a third party vendor for the product. And they, you know, as these things go it takes for awhile to get the whole product moving, and they customize for what we need. We heard about it as a team about a month before the official deployment day was going to happen. And the pride kicks in. And we said, ?Well, this is our job, right? We support you guys. And we want to blow you away not some third party vendor.? So we saw what they were doing and we saw lots of flaws in the product. We really didn’t like it both from the UI perspective and the experience perspective, and then the technology as well. So as a team we sat down and talk through this and decided that we could produce exactly what our distribution center needed that would make the process as easy as possible for the employees that would be affected by it. And we could do it quick. And it may not be the greatest behind the scenes but the users would never do that. Right all they would know is great product, works really off for them. Unfortunately, none of us have any experience doing anything with mobile and the entire team combined has some experience with web but it is limited. So what we did was we sat down, decided what technologies we would need. We kind of architected out the solution. We designed it for a very specific platform that we knew that they already had. It was an iPad that we knew would be out there that they could use. And then we started working on the technology. Now, the backend side, no problem that’s us totally.We had no problem right in the service, the data services. But the frontend we started working at a variety of web interfaces rather than writing in a native app. And we decided that we really liked the idea of where Angular 2.0 is going so we decided to go with that. And over the next, about two weeks nearing up to our date we are really going to do the project. We spent all of our lunch breaks just going through, discussing, doing some tutorials and we bought the ng-book 2 which helped a ton. We were able to used that as kind of a guide for how to do the development. This was all in beta, right?

Carlos: Right.

Kirk: This was November last year.

Carlos: And what made you pick Angular 2.0 versus some of the other options? I know there were so many options out there. What was stick out for you for you?

Kirk: Well, starting off, we all have a little bit of background in JavaScript so we knew we would be doing something that was frontend JavaScript, HTML, CSS. There were really only two major frameworks we could see, React and Angular. Angular 1.0, we felt like very mature, very nice but I’ve played in it and I didn’t like it. So I started playing with Angular 2.0 a little bit and I loved the way that it was put together. So with the new stuff it’s all very MVVM, uhm, very Model-View-View-Model put together, so they’re, that’s familiar to me. I do a lot of WPF, same principles. It was relatively straight forward to put together, to code it up, and we could leverage a lot of what we know in C# by using TypeScript so, we love that aspect of it.

Carlos: What are your thoughts on TypeScript? Actually that’s a question I had in my mind I wanted to ask you.

Kirk: I like it! From a, remember I am a C# guy, so if you ask a JavaScript guy you make a totally different answer.

Carlos: Right.

Kirk: But as a C# guy, it feels really comfortable, and so I love what Microsoft is going with it. My hope is that they’re not lying to us. And the lie that I don’t want to hear is what we keep hearing that eventually JavaScript will get where TypeScript is today. That TypeScript is really more of a precursor to where JavaScript will be someday. And I hope that is true because otherwise I’ll be disappointed in all these knowledge I’m investing in TypeScript.

Carlos: So part of your decision making, you know, has to do with making sure that you guys are not starting from scratch every couple of years in terms of decision, on frameworks, sorry. And the decision that you make for a framework that, you know, that you want to make a decision on a framework that will last. So given that JavaScript has such a fast changing landscape, you know, who knows what it might look in 5-10 years from today. At what point do you think we should be striving for some type of stability? Do we even want that? What do you think about that?

Kirk: I’ve been watching a lot of languages grow up. I have come to the conclusion that every language goes through a cycle. JavaScript, this is going to sound harsh. JavaScript has not been a great language for a lot of years. But it was the only thing that was an option on the web and so that has forced people to use it and to develop better and better frameworks to be able to make it so you can use it. However, right now, I’m seeing JavaScript go through an actual development cycle where it is becoming the mature language that it really needs to be. Much like C#, it took awhile for C# to get to the point where it was a really mature language where we weren’t seeing a lot of changes regularly. And I think we will see JavaScript at that point in the next few years. That was actually one of the reason we were excited about Angular 2.0. Not only because we felt like if we got into Angular 2.0 today, we wouldn’t have to learn Angular 1.0 and then Angular 2.0, wait, right Angular 2.0 is going to be here, and it’s going to be around for awhile. But that JavaScript itself will stabilize over the next little while, and we won’t see as much change.

Carlos: You know, kind of following the same line, do you think that, it’s good practice though to, and this is now probably something that is happening to you by probably in some other companies where engineers or more engineers are being forced to learn a new language in a new framework every, I mean not a couple of times a year but maybe every two years, right? Like, oh, Angular is now, like a lot of people don’t like Angular, what Angular 2.0 is doing so they’re mad at Angular so now they’re doing React which we love by the way. I mean we do a lot of work in React but I feel that there’s, you know, I think there’s a tool for every occasion. But what do you think about the, is it good company practice to have people evolve so quickly, uhm so much, just to use the latest and kind of shiniest toy out there?

Kirk: My team, so I’m going to talk about them a little bit. I’ve got a guy in my team who has been working on the same tools for 7 or 8 years. He is amazing at these tools, and by tools I mean the stuff that we develop. Not necessarily the underlying tools that he uses to do development. But he gets a little bored. He’s really good at any one piece that he is asked to work on but after a while he just really want something different. I got another guy who’s been with us for about a year and a half, two years now, that is constantly finding ways of improving the tools we’ve got because he comes from a different background, language-wise. And it’s really fun to see those changes being introduced. I think if you’re a developer you should expect and even desire to kind of change it up a little bit to keep your job fresh. It’s not just an issue of keeping yourself marketable, although that’s an issue, but it can get pretty boring writing the exact same code year after year.

Carlos: Yeah, I can imagine. Especially once, when you have, you don’t have a say to what’s being used. So, and I don’t want you to get me wrong though. I am 100% for evolution of the languages. That’s kind of the, that’s kind of it, right? That’s why we’ve made so much progress. I always think though that we want to make sure that we’re making progress, for progress, not for just saying that we’re making progress. Does that make sense? Like that there has to be real progress being made. Not just some vanity type of metric.

Kirk: Oh yeah, I agree. Uhm, generally what I see as a recommendation, I love to see a variety of things happening in the industry. And so it’s fun to see a new JavaScript framework come out, or a new ORM being produced, or a new design pattern someone has come up with. But that doesn’t mean I’m going to adapt right away. All that bubbling is what produces the best tools and the best ideas, the best thoughts. Eventually though a company has to say, ?Ok, we’re really stable and we’ve got some great stuff we’ve been doing for the last five years. Now we’re seeing this other thing happening. And it is, not only it is really hot, but it’s been hot for a little while and people really like it and it provides us business benefit.? Those are the ones I like. I like to keep myself at least abreast of those, and occasionally throw in a project that incorporates that stuff.

Carlos: So, as far as your Angular 2.0 work. Given that it’s a platform, the framework that you guys picked. Where do you see Angular 2.0 going as far as 1800 Contacts is concerned?

Kirk: Uhm, actually it’s interesting since our project. We just did one small project. I’ve talked to a few of the other teams and there are three other teams now at the company who have implemented at least one project each that are Angular 2.0. Some of those are brand new projects. Some of that is just upgrades and enhancements to existing.

Carlos: Wow, that’s pretty interesting. Even at RC level?

Kirk: Even at RC level. Shocking huh?

Carlos: That’s impressive! Oh, very cool, very cool. That’s a, it’s good to hear that, that you guys are taking this sort of jump in the right direction. It’s a big leap of faith.

Kirk: Yeah, yeah. And I’ll admit part of it is we love to try new things to keep ourselves having fun. And so not every time was it necessary to use Angular 2.0 but it was something that the developers thought, ?Hey, I’ve got the freedom here and it would be a lot of fun to kind of figure this one out. Let’s try it. See what happens.?

Carlos: If you have to do it all over again, what would you guys change in terms of what would you do to make it easier? Or maybe on a technical perspective what things did you do wrong technically that you could have go back now and say, ?If I could start from scratch I would have done this differently.?

Kirk: Oh, the single biggest frustration we had was we tried to implement everything back then in the development environment we weren’t familiar with, which at that time and still is today Visual Studio. And it was okay. But I think I would have rather use some open source tools that are more conducive to Angular 2.0, things that Angular 2.0 is really, that are more supportive of the Angular 2.0 environment right now. Visual Studio is going to get there, I’m pretty sure of that, but it was a little bit of a struggle to use that tool.

Carlos: Well, my friend, I think this has been a very good interview we’ve had. You’ve given us some visibility as to your experience with Angular, with Angular 2.0, how your team is using it, how your, you know, some of the future of the JavaScript, how JavaScript works for you guys. So that’s very awesome. So now, I had last three ask questions that are more geared towards you directly. So, and I think we discussed this once when I kind of prepared you to these questions but what advice would you give your younger, less experience self, in the things that you’ve learned along the way. What would that be?

Kirk: Well, I would probably start off with get to know the tools better before I start using them. Most of the big hiccups that I’ve had in my career had been from diving in too early to a language or a development tool that I just didn’t know and the mistakes that came out of that. Be more aware of the industry best practices. Kind of related to that, took me a while to get on board with unit testing, and boy that would have save me a lot of pain.

Carlos: What would be a book that you would recommend on? I know that you bought our book, ng-book. But what other resources did you, were important for you throughout this process?

Kirk: Really through this process, we use ng-book 2, and we used Perl Site. And between those two we got everything we needed. That’s probably due to the fact that we already had some basic knowledge on areas around all that, JavaScript, CSS.

Carlos: Yeah.

Kirk: That’s about it, that’s all we needed.

Carlos: Alright. And Kirk, how can people find you? Let’s say somebody is curious about applying 1800 Contacts. How can we get in touch if they have any questions and so forth?

Kirk: The best thing to do is go to www.1800Contacts.com/careers. That will get you to any open positions. I’ll even give you my email address for people that are interested in kind of a direct contact to find out what’s going on with me, and my team, and 1800 Contacts, and that is kgraves -at- 1800Contacts.com.

Carlos: My friend, I want to thank you so much for being part of the show, and I look forward to seeing you soon.

Kirk: Thanks a ton. It’s been fun.

Carlos: Thank you!