Build a Product Become A Developer

In this talk, we will explore how focusing on building impactful products can better prepare you for job interviews. We will explore how to find the inspiration to build, scope out our work, choose a tech stack, and ultimately develop our MVP while thinking of how to apply our learnings to our next job interview.

Transcript

Rahat Chowdhury: [0:01] Welcome, everyone, to my talk, Build a Product, Become a Developer. My name is Rahat. Thank you for tuning in to this talk.

[0:08] Today, we're going to be talking a little bit about how building a product, of course, can help you to become a better developer, help you to get that first job, having your first job.

[0:17] It's a great mindset to have for whenever you're job hunting, whenever you're trying to progress in your career. I like to call it a product-oriented mindset. That's what we're going to be talking about today.

[0:28] Before we get into that, a little bit about me. Again, my name is Rahat. I'm a founder of multiple stuff. I'm a founder at a mental health startup called Whimser. I'm also building two micro SaaSes called Harkin and Hartup. I am also a front-end engineer to company called SimpleHealth.

[0:44] A couple places you can find me on the web, in www.rahatcodes.com. You can follow me at Twitter @rahatcodes as well as get updates on my startup at whimser.io.

[0:56] Now, you might have seen some variations of these quotes if you're an online person, learning about Web development, trying to get into just coding in general. Some cool people on Twitter might have said something like, "Keep building. The more projects you build, the more you'll learn." This is absolutely true.

[1:19] Building projects, building different things are the best ways to actually apply different things you've learned and help you discover some of those little things that you may have missed while you were learning different things and help you discover even more things to learn, because now you're applying some of those things like a real world situation.

[1:40] Tutorials are cool, but will only get you so far. Another very important, and very true statement, tutorials gloss over the frustration, the actual looking up of the different information that is available and the different methods that somebody may have gone through before ultimately showing you a method that works.

[2:07] Actually building something helps us go through some of that frustration and hair-pulling nonsense that goes into actually building something. That's where we get the most value out of building and learning.

[2:24] This last code, build products and add value to your users, this was set by me as well as several other cooler people in the world. I want folks to look at building, not as just building projects but building products.

[2:42] This is something I heard a while back when I was speaking to Jerome Hardaway from Vets Who Code. It's something that stuck with me, resonated with me a lot. It's something I realized that I've been doing throughout my career without realizing I was doing it. We're going to be talking all about building products, having a product-oriented mindset.

[3:06] First, before we dive into building a product, you might be thinking, "OK, but how do I even come up with an idea? I want to build a project. I want to build a product. I don't even know what to build. I don't know how to even get there."

[3:21] This can be a little bit hard. The main thing we need to look at is, how do we identify problems? What are some problems we can solve with technology? What's your problem? What's something that you're having trouble doing?

[3:38] The first thing that might come to mind is, "I'm having trouble thinking of an idea." Let's build an app that hits like an API that has a whole bunch of ideas and stuff to build and serve it into like a website.

[3:51] There is your idea. There is a project, a product, you can build for people who don't know what to build. What are your friends, family, community members having a problem with? Is there an area you can add value in with technology?

[4:06] A very simple, maybe not so simple, but it's a silly thing that we're going to be looking into is creating an app that alerts people to grab an umbrella when it's about to rain, because we all know people, and I'm one of those people who always forget to take an umbrella with them when it's about to rain. We're going to look at tackling that problem in a little bit.

[4:34] Other ways to find issues to solve, find things to work on. One thing that I have personally liked doing, joining a hackathon. You can see what problems other people are facing, what problems they're trying to solve for and join in, maybe you could find other inspiration and ideas from those. Also, look at existing products, what is lacking in those products?

[5:01] If you look at something like Google, Google wasn't the first search engine. Things like Ask Jeeves and Yahoo were already in existence. They came in, did nothing new, and now look where they are.

[5:13] You don't have to build something completely brand new, completely disruptive, or whatever. Build something that maybe you're already using, but you wish was slightly different or had more features. Build a miniature version of that and make it the way you want it to be.

[5:36] The next idea that might pop into your head has come into mine a lot, and it comes to a lot of people that I speak with about this is, "I don't know enough to execute this idea. How do I even go about doing this?"

[5:49] The thing is, you probably do know enough to do it. If you've gone through a few crud tutorials on making a crud app with like React, or Vue or any other front-end framework or working on a back-end node server and creating some type of crud functionality there, you probably know enough to get yourself at least 90 percent of the way.

[6:19] Whatever you don't know, you're going to figure it out. You're going to go in, do some research, look at different solutions that are going to help you. That's the whole point of this.

[6:31] Broaden your horizons a little bit. Learn a few more things beyond that crud functionality. What are those little things that are going to take your product and make it awesome, and usable? That's the whole point of doing this exercise, is finding those things out.

[6:47] A lot of the times when you're on the job, you might not necessarily know how to do every single thing they tell you to do, and have to do a little bit of research. You're going to have to look for some tools. That's all cool. That's all part of the job.

[7:01] Some things to consider before we dive into our idea, the umbrella idea that I mentioned before, four main things that we're going to be talking about as I go through this.

[7:13] First, the client. When we're building on the job, we're building for somebody. We're building for a customer. We're building for an end user. We need to consider what their needs are. Why are they using this? What's the ultimate goal that they have for using your product?

[7:32] That's going to be the driving factor for how you build what you build, and how you deliver on those things that you're building. Then, worry about the tech. Figuring out how we can grab some tech that focuses specifically on our strengths, and lets us showcase those a little bit better.

[7:54] I'll go into what that means a little bit. Also, finding tech that helps you fill in the gaps that you might not necessarily be comfortable with. For me, I'm a front-end developer. Managing back ends is not 100 percent my forte, so I found technology that helps me in that side of things.

[8:14] The product itself. We want to not worry about perfection. We want to build an MVP, release it, iterate on it, get feedback, and add value to what people want.

[8:26] Then, the plan. How are we going to get this out? How are we going to get this to people?

[8:31] Here's the problem that we're going to be trying to solve. My friend's always forgetting to take an umbrella out with them when it's raining. I think it's raining right now. Thankfully, I'm inside. I don't need it today.

[8:45] We're going to call this, Umbrella Alert. This first approach that we're taking is for folks who are more of a back-end focus. Then to note, a lot of these problems can be solved without even creating user interface. Something like this, here's one way you can solve it.

[9:02] First thing, we're considering our client, which is our forgetful friend. Next is the project. Let's create a text alert, letting the friend know that it's raining. Some tech we can use to actually achieve this, Twilio API, some of their serverless functions and OpenWeatherMap API.

[9:22] Both of these have like a free tier/free me Amish tier. These are cool things you can sign up for and play around with. The plan is we're going to use some type of back-end framework to interact with these two API's, could be a Node JS framework, could be whatever you want it to be, it doesn't matter.

[9:40] As long as it's some type of back-end framework that allows you to interact with an API, you have everything you need to create this project.

[9:49] Let's look on the other side, the front-end focus. Again, plan is still your forgetful friend. The project this time is a website to check for your umbrella needs. The tech is going to be HTML, CSS and JavaScript, and then the OpenWeatherMap API. The plan here is we're going to use the front-end tech, hit the API with some POST requests, build a visual version of what I went over with the text.

[10:14] Now, instead of texting, they go on this website and lets them know, "Hey, it is raining in your area, take an umbrella." Either way, we're grabbing the information that they need, and presenting it in a way to them. Just grabbing that information is not necessarily enough, did we solve the problem?

[10:34] If we go back to the original issue, it says that my friend is always forgetting to take an umbrella out with them when it's raining. Are they going to remember to check in app, or text a number to let them know that it's raining? If they're forgetting to check if it's raining, they probably are going to forget to text this number, or check this website or app or whatever it is.

[11:03] We need a way to actually deliver this to them. What do we need to do in order to ship? Two ways of doing this. For going to front-end approach, we can create a progressive Web app.

[11:16] We can have some type of website that they can go to maybe on their mobile device, and save it to their device and have some type of maybe a notification that goes off whenever it's raining, so they know, "I need to take an umbrella with me before I leave for the day." That solves their problem.

[11:39] If I'm going to a back-end route, I could do something like a cron job. Every day at some point in time, I can check to see if it's raining in their area. If it is, send them a text. That also solves their issue.

[11:53] Now, as to actually solving the issue, and now, it's being able to deliver, it requires us to go beyond the regular functionality we had of hitting an API and getting some information.

[12:06] It's that delivering step that's going to challenge you to figure out how to add value. In the case of the front-end route, I have to learn about what a progressive Web app is. I have to figure out how to let people save it to the device. Then have to figure out how to give them notifications and to do that in some real-time way.

[12:30] Maybe I can go and learn about WebSockets or something else like that. That makes it, so I now have a bunch of focused things that I can go in and learn about that go and add value to whoever it is I'm building for. That's going to give you a great story or experience to talk about at interviews.

[12:55] Now, you're not just talking about things you've learned, or went out to learn because they were cool, you're specifically hunting for information that's going to help you to add value to a client or customer. Doesn't matter who the client or customer is. It doesn't matter if they're your friend, your parents, your neighbor, who cares?

[13:11] No one cares who you're building for. The fact is that you ship something, which is exactly what you'd be doing on the job. If I went the back-end route, now I can talk about how I learned what the heck a cron job is. I can talk about how I used a cron job to check if I sent them a text at a certain amount of time.

[13:32] If you know how I activate the API to make sure to check if it's raining or not. I am not a back-end Dev. Maybe I'm not talking about this in the most correct way. I apologize if you're back end, and I'm talking some nonsense. This is hopefully going to give you a general idea of where you can go to solve the issues.

[13:59] These are two ways to do this. The thing with technology is there so many different ways to solve specific problems. I gave you two ways to solve this, relatively silly but real problem. People forget their umbrellas and they get wet. Happens to me, might have happened to you a few times.

[14:18] We can use technology to solve that. It doesn't have to be anything groundbreaking. It doesn't have to be the next Google or Facebook or whatever. You can solve a small problem. Everybody has problems.

[14:33] One thing that I hope folks take away from that part of the presentation is a process flow. This is how I like to look at the different problems and how I try to figure out how to create applications for them. First off, what's the problem?

[14:52] Our forgetful friend is always getting wet. They forgot their umbrella. What do we need in order to solve that problem? We need to figure out when it rains, so we can alert them to the fact that they need an umbrella.

[15:04] To do that, we looked at those APIs. We looked at maybe a node server that runs a cron job, maybe a website that becomes a progressive Web app. It can maybe even go on down like a mobile application route. There's so many different ways to do this.

[15:19] How do we get what we need? Like I mentioned, we need that information from an API. We can present it in a Web interface or text-based interface or a mobile interface, whatever you want. Then, finally, how do we deliver what we need?

[15:34] That's how we get into the notifications, the cron job, the text alerts, and all of that, so they remember to take their damn umbrella when out when it's raining. Solving that one problem led you potentially to learning a whole bunch of different tech that can be applied to so many other things.

[16:02] You might be asking, "Ryan, this is cool. I'm learning how to build out a product. How does this help me get a job?" That's, that's what we're here for.

[16:14] I briefly mentioned this a little bit earlier. This is all about taking your experience and turning them into stories. We can talk about the process, talk about how you figured out a problem that folks were having, and you looked up different ways to solve it.

[16:28] In my case, I looked at different ways people can get text messages, and how we can use code to send it to them. That led me to the Twilio API. That led me to thinking, "Maybe I can create a node server to interact with Twilio, as well as the Weather API."

[16:43] Then talk about the considerations that you took for the tech you used. I used Twilio because I knew that Twilio was fairly popular, very well documented, has a very good amount of support for this specific use case.

[16:59] When someone asked you why you specifically chose one technology, and not maybe another, this is a great reason why I can say I gave Twilio as my choice of technology. There's a lot of documentation, there's a lot of support. It did exactly what I needed it to do.

[17:17] What did you learn? Talk about what you learned. Talk about how maybe you learned about cron jobs or progressive Web apps depending on what route you were taking to solve this issue. Then, explain your process for learning new tech and how he used it to add value to other people's lives.

[17:37] Like I mentioned before, that's what you're doing on the job. You're adding value to some type of end user. What you want to do in that job interview is show people that you know how to solve problems, you know how to add value, and you've gone through this maybe by yourself, maybe with the other folks, and you want to apply this to the team that you would be joining.

[18:03] There are ways to enhance this approach a little bit further. One of the main things is working with other developers. Generally, even if you're a freelancer, you might not always be working by yourself. There will be at least one other point of contact or something, someone to talk to or work out the issue with.

[18:26] One of the main things is finding other developers who are also in the same boat as you or maybe slightly further along in their career as you who might still be willing to work with you, and build something together. There's so many of us who are trying to break into tech. There's so many of us who are trying to improve our technical skills. It's easier to do it with other people.

[18:53] Next is working with non-developers. On the job, you're not just going to be talking to developers or having your headphones on all day and not talking to anyone else. You're going to be probably talking to people in product design, maybe marketing if your job entails that side of things, but there are non-developers who you'd be talking to. So it's important to see if you can work with those people in some cases too.

[19:27] Another thing is join an existing project. Maybe there's some open source projects looking for folks to contribute. Take a look on and get help for ED open issues. See if you can contribute there. Are there any open source tools you're already using? Maybe you can try to contribute there, give back to the tools that you're using.

[19:47] Also bringing back the hackathon thing. Maybe there's people already building something at a hackathon, maybe you can join in and work with them a little bit. This helps you to practice reading other people's code, because a lot of the times different products may be started by other people and you may be picking it up.

[20:07] It's important to figure out how to work with a code base that someone else may have started. These are great ways of doing that.

[20:16] At this point you might be asking. "OK, cool. How do I find others to work with?" There's a few ways. Some places to look, there are some general tech communities like CodeNewbie on Twitter. They have a really awesome chat every Wednesday. Definitely take a look at that. There are people responding on there who are probably in the same type of journey as you are. Befriend them, talk to them.

[20:41] There are tech communities like VirtualCoffeeIO that host meetups and are places you can meet other developers. There's also places like specialized tech communities like BlackTechTwitter, VetsWhoCode, MuslimsInTech.

[20:54] When I was specifically wanting to create a solution for other Muslims, I looked at people who were in sort of MuslimsInTech community or Twitter, and was able to talk to people and figure out how to adjust my idea or work with them as well on that idea.

[21:14] Then look at alumni groups. Might be a little bit easier if you've went to a boot camp or a college. I went to a boot camp. It was pretty easy for me to find people. The specific boot camp I went to also had boot camps, not only for coding, but for data science, for UI/UX, that sort of thing. I was able to go through the alumni network, and network and work with people that way.

[21:42] That might not always be something you have access to me, especially if you're a self-taught developer. However, if you look at popular resources, like freeCodeCamp, there are lots of people who've taken those online resources who do things like meetups in different cities, virtual right now, but they're out there.

[22:02] You can find other people who have gone through that curriculum, and try to figure out if you can work with them.

[22:11] Maybe you've gone through it, and you decide, "I want to do something I'm working by myself, or I'm not able to find someone right now to work with. How do I showcase my strengths when I'm building alone?"

[22:24] There are different types of tech that helps you deliver on the ideas that you have. I mentioned a couple of times before, I'm a front end developer. I dabbled in back-end myself, but it's not my forte. The first set of technology that helps me deliver a lot are things like Supabase, AWS Amplify, MongoDB Realm.

[22:49] These are services that give you a full managed back end, and help you with doing things like setting up a database, implementing authentication inside of your application. I specifically use Supabase and AWS Amplify quite a bit.

[23:03] AWS Amplify specifically has helped me to dive into different AWS services and learn about them as well. Some folks may tell you, "Why are you using these, you're never going to learn. They're like big abstractions over..." Don't listen to that. If you're a front-end developer, it's fine to use abstractions for your back end. That's cool. Don't worry about it.

[23:28] Like I said, with AWS Amplify, after I started using it, I started diving into the different backend services or services that AWS provides. It was my entry point to learning more about that type of thing.

[23:43] Use UI libraries, stuff like Chakra UI, Tailwind, Bootstrap. It's useful for both front-end and back-end developers. Even if you're a front-end developer, you might not necessarily be someone who knows how to design things. If you are, I'm very jealous of you. You want to focus on building clean user interfaces.

[24:06] Maybe you're mainly a JavaScript developer on the front end, or what some people call like the back end of the front end, creating the different components that interact with the back ends and things like that. You don't want to focus on the UI. Using UI libraries is fine. Lots of companies do it.

[24:28] Also, if you're a back-end developer, something like Bootstrap or other libraries like that may help you quickly create something on the front ends, that you can interact with the back end you built. That's cool.

[24:39] Feel absolutely free to use templates and boilerplates. You don't need to always build something from scratch. You don't need to be doing the same crud functionality over and over again. You don't need to implement the same authentication over and over again. As long as you know generally how the underlying tech works, use a boilerplate, use a template.

[25:03] Focus more on the business logic of your application, because that's probably what you're going to be doing on the job. A lot of these, it's almost like when you're going on a job, you're looking at a boilerplate created by several other devs, before you even touched it.

[25:20] This is another good way of touching some code that you may not have written first, but is a way for you to quickly dive in and have certain best practices outlined for you and build up from there. Look at different things like Versal, Amplify and Amplify hosting, to get your stuff out there.

[25:41] DevOps is like a whole other realm that I'm not familiar with. I love these type of technologies, that help me create something and ship it. You don't need to know every part of the stack.

[25:54] I know these job descriptions often tell you that you need to know DevOps, you need to know this, and you need to know front end and back end. No, you don't. It's fine to specialize in something and find different tools that help you fill in the gaps everywhere else, so you can build out that product.

[26:14] You can build something. You can interact with those DevOpsy-type integrations. You can interact with different UI libraries if you are back end. You can interact with maybe a Postgres database that we're using Supabase, and you're a front-end developer.

[26:36] These tools are there to help you gain an entry point into the other technology that you may not be necessarily familiar with, but you need in order to iterate and create your product. That's fine to use them.

[26:47] What if no one uses my product? This is something I hear a lot too as well, whenever I tell someone to try to do something like this. It depends on what your intentions are, and how you want to take it from there.

[27:06] If you want to go the entrepreneurial route, dive into marketing, see if you can get more eyes on your product. Maybe you need to iterate on it, change things around, talk to users, and deliver something based on different user researches that you've done, which is another awesome thing to be able to do, especially if you're trying to apply for a small startup.

[27:32] That shows you're able to wear a couple different hats and figure out what you need to do to get something to be a little bit more successful. At the end of the day, if you're interested in learning and improving your skills, it's OK. You have something else to put on your portfolio.

[27:50] You have more technology and skills to talk about at your next job interview. It's totally cool. Hopefully, all of that helped you in some way.

[28:03] Saying again, if you want to follow me online, I'm mostly on Twitter @rahatcodes. I'm happy to talk about any product ideas you might have, if you want to refine anything, create some type of MVP, think through different technologies that you want to use.

[28:19] Like I said, I build a lot of different things. I've been through a lot of these discussions with myself in my head. Happy to help you out and figure out how we can help you build a product and become a developer. Thank you.