Things I wish I knew when I started Programming

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
- Hey TechLead here. Now, I've been programming for a long time. I started maybe 600 years ago or so and I've learned a lot of things on my journey. I thought I would cover in this video some of the top tips I have for you, things I wish I knew when I started coding myself. So stay tuned because we're going to be right back after a message from our sponsors. But before we get to that message, I have another message for you. It is about the drink I'm drinking. This is perfect product placement right here for you. One of my favorite drinks, I highly recommend that you go and buy it right now it is known as water. Wow, that just refreshes me so much, so good. Now on to the message from our sponsor. Now this is a sponsor that I felt so good and so strongly about that I really wanted to recommend it to you guys earlier but I couldn't quite do it because I wasn't going to get my kickbacks. I didn't have an affiliate link set up. I have that setup now, check it out. It is audibletrial.com/techlead. You can get a free audio book this way and let me just tell you that I've heard about audio books before in the past, I always ignored it. And then recently I've been trying that out and I realized that it's so much fun and it saves you so much time. I listen to audiobooks on my driving. I think we all know that reading is important, everybody tells you that, but these days in this generation, people are just so busy all the time. And it feels like you have to keep up with everything. You've got to read blogs, social media, you got to keep up with all the news, and then on top of that, you have to do your daily reading. It's just a lot of stuff with audible, which is run by Amazon by the way, you get to listen to audio books on your drive. The app plays in the background as you're driving, saves you a lot of time. Personally, I'd been listening to the "12 Rules of Life" by Jordan Peterson recently, highly recommend that book. It goes very deep into psychology and human history, very fascinating listen, and it's read by the author himself. Anyway, check it out and get your free audiobook at audibletrial.com/techlead. Now let's get into the tips. The first tip I have for you is to not try to learn everything. It's going to take you forever to try to learn everything and things keep changing all the time. So choose what you need to learn and focus on getting results. You're going to be interfacing with dozens of different technologies, maybe MySQL, Linux, different API's, frameworks, all sorts of different things developed by other people that's changing all the time. And at least for me, I find myself often digging into various technologies, trying to figure out exactly how things are working. If I'm using an Apache web server, I'm half tempted to just go read through the entire Apache documentation and figure out exactly how things are working before I actually start using the service. But the key I think is to just start using things and as long as things are working and it's not broken then you're fine. If you don't do this, you're going to find yourself stuck learning tons of random things that half the time you're not necessarily going to need. One example is when I started with iOS development, I launched my first app. I didn't know half of how the language was working. And I'm sure I made tons of different mistakes. The code was probably not optimal, it was not properly written, the structure was probably very messy, no good. But still, I was able to launch my first app and just get things rolling, get things moving forward. And that's the key to understand there is that you're never going to get things completely right. Nothing's ever going to be completely perfect, and that's just how tech is. Even in industry we often have many engineers who know multiple languages, full-stack engineers, and yet, usually engineers were just focused on one certain technology and get to know that particularly well and all the rest, the rest of the ecosystem for other languages are just changing all the time, such that you can never really know a language very well because things are just changing all the time. You may think that you know Java now, but in one or two years, the tooling, the language, the frameworks, the coding practices around that language are going to change entirely differently. There's going to be new technologies that are hot that people are using. So I wouldn't bare on saying that you'll be able to learn Java then Python then Swift, and after that, you'll have three languages in your tool belt. Now you're really going to only have one language, that's the one that you're using at any time. The field moves fast and the only constant is change. And what you will always need is the ability to learn quickly. Now, the second tip I have for you, is that our code is garbage. And that's really the way to look at it. Tech is not magic, don't sit there and all of the technology around you, and just so struck by how cool everything is. You think that looks cool, it's just a front. It's mostly just garbage code, purchased up in a nice UI that looks shiny and neat and simple, but in reality it's nothing good. And as long as you keep this in mind, you won't be intimidated. You'll be able to go in there and start coding things and know that your code does not have to be perfect because nobody else's code is perfect. It's just whatever works. Just do whatever gets results. If you saw the article from my last video, it's reported that Google rewrites their entire code base every few years because it's just such garbage quality. Now, I'm not 100% sure if this is actually the case, but what I do know is that Tech engineers also don't stay at companies all that long. The track record isn't that great, people stay at companies say two to four years, and then they move on. So when I go into a company, my co-workers have been working there like two years or so, maybe even less. And so that's the amount of experience that most people have. Nobody really knows anything more than, say two years of information. Maybe senior engineers know a little bit more than that if they've been hanging around the company longer but everyone is sort of a beginner, no one really knows what they're doing. People are just winging it, and it's funny that you may have a certain technology that looks really good and solid at one year, but then the next year, people find out that they need to upgrade to the latest version of something, the requirements change, everything has to be real time now, and then the whole entire tech stack becomes complete garbage because it doesn't fit the current feature requirements that all the users are demanding. People often look back at code that say two years old and they'll say it's pretty ancient legacy code, no one knows how it works, it's pretty much writing code. So my recommendation is when you sit down to create a project instead of imagine yourself that you're going to be creating a masterpiece project, and everything's going to be stable and optimized and scalable and high performance, and then you'll be able to show this code to all sorts of people, push out to your GitHub, show to everyone and everyone's going to say that this is a masterpiece of code. It's going to be better if you say to yourself, you're just going to create a prototype. You're going to create a prototype of a product and just get things out there and see how it works. And if the project really works, then after that you're going to invest time into making the code more structured, more solid, make it more scalable and everything like that, cleaning things up. But for now, it's just going to be prototype code, anything goes as long as it works, it's okay. And that's really going to get you set up and get you on your way so that you'll feel free to make mistakes as you go, you don't have to get things perfect. The fact is no one has anything perfect and software is mostly duct tape and strings. There's always a better way to code something, so don't let perfection stop you. My third tip for you is to focus on the project and not the technology. The technology should enable you to do something new, something innovative, but it's going to be the project that everybody is looking at. Now, what do I mean by this? Well, no one's going to care if you spend all your time learning Python version 2.7. And then you never use it to do anything, when you spent all your time learning how to write Swift, but you never launched in that never did anything with it. And on your resume it just says that you know Swift. It's going to be much more impactful and much more impressive if you can say to yourself and potential future employers that you launched a website or an app, and it's still available, people can download it or access the site and see what it is, and it looks great, looks cool, is functional, and maybe even broaden some users, maybe broaden in some side income, you won't remember that software is a tool. It's like a laundry machine or a dryer or vacuum machine, right? It's not something to be super passionate and attach yourself to only saying, while you're going to be a Ruby on Rails developer and you love of him. That's like saying that you just love the Hoover vacuum cleaner and you just love that tool. These are simply tools and for that reason, concretely I might recommend learning say JavaScript and web development, because these languages can actually get you to launch projects that are visible for other people, though it can be highly visible and highly useful. If the only thing you know is say Python, then the only output that you can create is going to be like a terminal output. It's going to be text on the command line. So even though Python is a very popular language for beginners I would say that to really make Python useful for you, you actually need to combine that with a web framework like say Flask or Django. Problem is at that point, you have two things you gotta learn the language itself and then this framework. With JavaScript for example, you can already start putting together entire websites, add to that little bit of PHP, and you've got an entire website running with the full-stack backend services. If you want to do it in Python, that's fine, that's great. Personally for me, I wish I got into web development, these high impact technologies a little bit sooner. Speaking of languages, I just wanted to highlight that I think JavaScript is an excellent language for beginners. Simply because it's one of the only languages through which you can create UI very easily. Python is not that easy to create user interfaces, it's going to be much funner for a beginner to start actually being able to create the instead of useful like, create a tic-tac-toe game, create a hangman game like Tetris or something like that. You can do all of this with JavaScript, and standard HTML UI elements or HTML5 canvas. You can get colors, games, interactive pages. And overall JavaScript is a language that is very similar to say Python so you can easily transition to Python. And JavaScript is probably a decent language for getting your first job, just a beginner position. There's a lot of people almost everybody is looking for JavaScript developers. Other excellent beginner languages might be swift, Java, Kotlin, Python. And my last tip is to just not be afraid to learn. Most people around you you'll find, they can't learn anymore. They're very scared to do it, they don't want to do it, they don't put in the time. It's a very basic thing and as you get into it, you find that it doesn't take that long, like it might take you just two weeks or so to pick up a language and then you always be able to say that you have some knowledge about this language, you can use it, you can work in it. I think tech is one of those fields where the mental barrier to trying to learn a language is far higher than the actual reality of it. I personally have put off learning iOS development, for like a whole year, I just kept stalling on that. When I actually sat down and got into it. It took me just one month and I had already finished launching my first app and I was already making some side income off of that. You'll find over time that many languages are very similar. They have similar constructs, they all have like a for loop, while loop, if else statements, switch statements. As long as you have these basic items you can do a lot in in the language that you get into. More than anything, software is about your willingness to sit down and learn something. That will do for me. If you have any tips on what you wish you knew when you started programming, please post them below in the comments. I'm sure people would love to hear that. If you liked the video, give the like and subscribe, and I'll see you next time.
Info
Channel: TechLead
Views: 1,298,323
Rating: undefined out of 5
Keywords: programming, software engineer, coding, tech, developer, techlead, computer science, engineer, technology, amazon, google, apple, googler, swe, software, facebook, cs, fb, software engineering, software engineer life, software engineer intern
Id: GAgegNHVXxE
Channel Id: undefined
Length: 11min 12sec (672 seconds)
Published: Tue Jan 22 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.