35 Things Every Programmer Should Know

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Don't you just hate that feeling as a programmer when you're supposed to know something? But don't. in today's video, I'm going to go through 35 different programing technologies you an explanation on what they are and why you need them. I have an awesome idea for a startup A to do list application. it can help with productivity. And I found a ton of Python tutorials online. So where do we get started? Less mapped out. First the exciting part. What are the users going to see? HTML is a markup. Language used to structure content and text in your browser. It uses tags to help you structure and organize different elements on your screen. for example, you can have a table tag to create a table or a P tag to create a paragraph. You can even hold a div tag that can hold elements together. Ishmael is very basic, and if you just create each HTML file and put it open on your web browser, it's going to look super ugly. the document object model, also known as the DOM is created when the HTML page is loaded into the web browser. web browser, like Chrome, Firefox and etc. passes through this table and creates this dom it's a tree like structure and memory used for each element, attribute, of text, etc. You'll understand why the browser will need this in a moment. so since your HTML sites are really ugly. Sorry again, you need access to style. It. You can control the fonts, layouts, colors and basically any visual aspect that you want within any HTML file. and since its name is cascading, it prioritizes hierarchy and inheritance within each other element And you can either put this inline or through a whole separate CSV file. JavaScript is a high level interpretive programing language that's used on the web in context of front end. JavaScript helps you manipulate the DOM dynamically. See, I told you I'd come back to it. So if you wanted a button to change color, then you can do that specifically with JavaScript. JavaScript heavily relies on events. So a lot of the code you would write in these scenarios are functions responding to user interaction. great. So we have a to do list application. I'm almost a millionaire. Well, people pay something that they can only use while open in their browser. we would need something to execute code consistently as well as remember who our users are. This brings us to back end technologies. So the difference between a server and a client is huge. A client's computer could be more powerful but is often unreliable. up 24 seven well usually and is able to hold code that can be considered unsafe on the client's computer, like processing credit cards or using API keys. are just computers optimized for heavy workloads and being effort 24 seven Usually you access this with the command line, which speaking of An operating system is needed to be run on these computers, just like how you use Windows Mac or Linux. You use Linux and watching coding with Lewis servers need operating systems in order to run the different programs that is required to have an application like this. But good news Most of the world is run on the open source Linux like 95% of them. you'll often find servers running ubuntu, debian, red hot and more Linux distributions. I probably said some of those wrong. There are a ton of back end programing languages that you can use. It's a bit of a nightmare some popular options would be C, sharp, PHP, Ruby Python, etc. you know what programing languages do and each have their pros and cons. role of these programing languages and more to come soon is okay, so don't be commenting. is to provide the logic around what your application is supposed to do. you have to process a credit card, run some intense process or save something to a database, you would do it with this language. Wait, databases missed that there are a ton of databases to choose from. All basically do the same thing on a really high level, If your users want to store their to do list, you would need a database to be able to store that on desk so that when they log in, they can view that to do check off a task or delete something depending on what database you choose. There's a lot of ways you can structure this. Do things pros and cons of each, but we'll get to that soon. great. I create a front end for the application and a server side application. Wait, how do they interact or talk with each other? now that you have your user interface and your backend code, that works, right? Hopefully, how do we get them to connect with each other and actually do something? Hypertext transfer protocol is an application layer. Protocol to transfer text and other data between a client and a server. a client will call you URL or an IP address with a request method, which can be get post patch, put delete. the server receives this request and then sends back and response back to the client, which can include a status code and the data you requested. So think of it as the client can always reach out to the server. The server can only reply when it gets an FTP request to it. the worst that could well, lots web server softwares like Apache or engine next are use as a proxy or load balancer in your application. rather than it being your users connecting to an IP address with the port to get directly to your app engine acts as a proxy to navigate the request in the right direction so that there is privacy, security and performance benefits. Don't just be raw, log in and FTP So I have this script here called Tasker Pi that I want to run when an ATP request comes in. There's got to be a better way to deal with this, though. some of the most popular software for programmers is back end frameworks expressed for no jazz Django or fast API for Python Ruby on rails for Ruby are all softwares that do a lot of things, but are used primarily as a way to handle ATP requests on a server. user sends a get request further list of notes on the server, you can get those notes from your database and create HTML document that you can then send back to the user. wow. So my website is getting really popular by feeling really outdated. It just feels slow. And I hate how my web page reloads every time. frontend frameworks are some of the most popular things available right now as Twitter about JavaScript frameworks like React View or Stealth lets you build single page applications that are powered by JavaScript in your browser. Once you access the page, JavaScript then builds everything out. These applications allow users to take actions without reloading your page. A much sleeker user experience with better performance. Each framework essentially does the same thing both with different pros and cons. the ecosystem for these are just massive and you really can't go wrong with either. So just get started on Okay, this makes my app feel so much better, but this is a social media to do application. I found another tutorial for that. How can I get proper SEO traffic? social meet. A lot of these frameworks often have a server side rendered version of these frameworks. necessary. Asphalt Astro or Linux are all popular ways to use a JavaScript framework while getting the advantages of maybe a server side rendered application getting hate mail because we don't have a mobile app. Android and iOS both have different ecosystems when it comes to developing on each platform, SWIFT on iOS, which you need to use Xcode for and Android studio with Kotlin. These languages are very similar to C-sharp or Java, so brushing up on some skills might be needed in order to get started with these. most of the SDK are similar in nature, like you're going to be writing similar code to listen for a button press here. However you have small little intricacies with both. And do you really want to learn on another programing like hum? Well, if you want to go one step higher, there's options for that. uses a dart programing language to let you create mobile apps that will then compile into both iOS and Android alternatives. This means that you only need to learn one programing language in order to compatible platforms. But you can go even higher level. you can use something like JavaScript with React Native or some other tool to compile your apps into iOS and Android. I want to ship our application, but it's too heavy and there's a ton of small steps I need to run beforehand. For JavaScript, we use build tools that can remove our news import statements, compress images, HDMI files, tree shake and compile all of our JavaScript in one file as minified for faster loading and adding all of these steps in before you deploy is often considered a build step, which is like a poor man's compiler. I I just raised my series funding. I just hired three software engineers. But my code is a mess and I can never deploy. I need to speed up. version Control. version Control. Options like Git allow developers to version their software in ways that aren't destructive to the main code a visual standpoint, it works like a tree where your main code base can be branched off. creates a clone of your software that can be messed with in whatever way you like. you want to change branches, everything is saved here. This then allows for merging of branches We are using Microsoft Word to code now that you're managing a ton of different softwares. You need an environment in order to do all this. boilerplate you have, the bigger the issues you have. Programing somewhere that helps you focus on creating new features or fixing bugs rather than setting up environments as needed. a lot of programmers get caught up on how they should set up their environment. But just don't use word been using JetBrains Ides since I start coding all the way back in 2013, and I'm very excited that they are sponsoring today's video. As you can tell, there are a ton of things in software development that you have to keep up to date with and manage on your own machine. I mean, we're barely through the list that I'm doing right now on this channel. I'm always working on different projects and need to have a proof of concept. Really quick. So with all these tools from JetBrains Ides, I'm able to quickly prototype and validate my ideas fast with all of their built in features provided. And this goes for most programing languages. It tailors towards a look and feel that you want. So if you're like me and want all the bells and whistles available, like my version Control Database Explorer and built in terminal, you can ball out if you want to, or if you want something super minimal and distraction free, you can easily toggle between that too. I've been using their AI assistant recently to help me with my projects, which is built into many parts of their software. We're already aware of things like code completion in your IDE and context aware chat, but even small things like suggesting a refactor or auto generating a commit messages are surprisingly helpful tools. Now you've seen my other videos where I use JetBrains to build these types of projects. So if you want to build better software faster, then make sure you click the link in the description to check out some of JetBrains Ides that will work for you. Thank you JetBrains Ides for sponsoring this video. I downloaded get. note you downloaded GitHub repositories hosted on places like GitHub is like a Google drive, but users get instead. between get and GitHub is simple get is the software you use to manage your code base. GitHub is like Google Drive, but users get instead of a file structure And these repositories are often the most sacred part of your entire project. ton of access to the app, even through smart toasters, Okay. but we keep having to copy and paste code at different areas. Rest APIs Are simple interfaces used for a client to get information from a server. your application is structured around your database, so rather than returning HTML or text, you can create a structured output to return a standard data type like XML or JSON, this way. Structuring things means you can use a unified way to talk to all of your different clients like desktop apps, mobile apps, web, rather than having to make something brand new every single time. application is getting a ton of users and a lot of the employees are starting to get really slow. Maybe switching programing languages will help. I mean, there's a ton of options you can go with. goes. Concurrency model lets you multitask really easily. Russ Large type system and memory management makes things go really fast and a great developer experience. Community is often great for these as well, but adding a new language adds another level of complexity. So just remember that need to spend two weeks deciding Who told you that? Really? It's working on my machine. Why isn't it working on the production machine? containers lets you build on top of the Docker engine that will consistently create the same environment every single time. If you have go go dependencies and some other Linux dependencies creating a docker image that will run on a Docker container makes it so that no matter what it will always run the same everywhere. So I have a confession to make. My database was just an Excel spreadsheet this entire time. What are my options? relational database plus everything in tables, where the shines is at. These tables often have ways to relate to each other, removing duplication so it can have one entry in the user's table called Lewis and all of my tasks can be in another table called tasks where only the relevant information needs to be stored, creating a relationship between them Relational database relies on structure. sequel, doesn't rely on structure and often are document based. benefits here is that you often can accept a large volume of data like analytics, setting sync and social media posts. rather than choosing between which one I should use, you might use a combination of both, which is more than okay. if your app is handling real time calls, chat, whatever it is, and even a little bit of latency is going to ruin the experience. Ready stores key value pairs in memory rather than on death. So you can get access to values much, much faster. So for scenarios like real time applications, this is necessary as even though going over one second will slow you down, But it's not like your To-Do app has a real time chat app. Of course it does. I can use HTP right. case as an alternative protocol. It used to talk to a server. This starts between a handshake on the client and the server. This handshake is a constant connection that allows for messages to be sent between the server and client. Non stop. So instead of HTTP, once that handshake is making, they can send as much messages as they want to each So how do I connect to a machine that isn't yours? Like we know about VirtualBox or remote desktop. But how do I connect to the command line? SSA, also known as secure Shell, lets you securely connect to your servers command line. This is done through safe keys and into passwords in order to make sure that the connection is secure. Advanced Messaging. Queuing protocol is a application layer protocol focused on queuing, publishing and subscribing reliability and more. As you can tell, we have a ton of different applications on different machines and different computers, AMCU is a protocol used for these technologies to reliably communicate with each other so that when a specific task is triggered, it can be delegated to write So how many users should I have for upgrading my servers? Well, how many users do you have? Like a million and a half. why are you hosted? there. But cloud seems like a mystery. Something you need to understand thoroughly. But a lot of the services are just hosted versions of these items that we've already described. Let's take a look object storage is kind of exactly what it sounds like users are uploading images, files and other things on their to do list. You need an actual place to store those things. And with a regular hard drive, you have to worry about scaling your storage access to that storage, just a complete mess a cloud and just upload it, ignore Okay. How do I get these files to my users all over the world? delivery networks are proxy servers distributed globally so that no matter what, you can serve a file stream or whatever your users want better and So you said I can scale my out by putting up more machines, right? Yeah, that's Well, I have 25 machines running, but only one machine is taking in all the traffic. boy. When you're using many different machines, the scale, the amount of traffic your to do list out can take while you need something to know where to put it. load balancers are machines and software dedicated to finding out where to distribute the traffic. common way determines This is health checks where a cs of the server's up or If it's down, then it redirects it to another place. And this is one of the most key aspects to any deployment. Making sure is up. a create 1 million task feature in our application. Now all of our servers are hung up, meaning people can even use the application. why would anyone need queues and task workers are used to handle big task, but not in a way that is immediately urgent. sometimes a user will want to perform a request, but will know that it's not urgent or needs to happen right away. will put these tasks into a first and first out list for a task Worker performs a task in order. For example, a notification doesn't need to be sent out instantly. It could wait a bit, you know. mistake. This software is a disaster to deploy. now deploying your software is a whole different game. integration is the practice of building and testing your software during development. I got that one from Wikipedia folks. This is often used in a collaborative effort for when you want to find efficient ways to build, optimize and test your code before it even hits areas in your production environment. there's a lot of frameworks that exist that make this much easier anyway. But I hate to say it, you're going to have to test your code continuous delivery is another way that this is achieved. Often used with continuous integration. This makes sure that the code you are releasing is in a state where it can be released anywhere in an environment like production, staging, whatever it is. How many times have you left debug on somewhere? While this system is often used as a way to ensure that the entire process of local development all the way to launching on a server is seamless and easy. cloud, we don't want to be clicking on user interfaces and stuff. We're programmers here. That's not what we're built for. Infrastructure is code less. Developers write either code or markup languages to help them structure how their infrastructures look. So, for example, you would want to deploy a specific version of Redis in your branch. You would put that in the code base so that you can all the environments aligned and predictable. And we're just scratching the surface. We have a ton. What happened to your to do app? I gave up. Why? have AI on our tech stack. Seriously?
Info
Channel: Coding with Lewis
Views: 56,762
Rating: undefined out of 5
Keywords: programmer, programming, software, technology, code, coding, self taught programmer, how do i become a software developer, tech for programmers, learn programming, how to learn programming, how to learn, how to code, how to learn coding, how to learn code python, python, javascript, js, tech, how to program, tech programmers need, best programming tips, best programming language, programming languages, programming 2024, how to program in 2024, how to code in 2024
Id: ODp-yivAUnY
Channel Id: undefined
Length: 18min 1sec (1081 seconds)
Published: Tue Jun 04 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.