Transcript for:
Essential Guide to Software Development

let's just let we're just gonna do a quick uh yeah I'll read I'll read here in one second I just want to go over this because it's Nate if you guys don't know who Nate is Nate is a boss okay Nate's boss okay he's my favorite anime character I don't know if you know this but I'm pretty sure oh hey wait a second oh no I just realized that my uh Vim plug-in's broken now there you go Nate all right my favorite anime character Nate I've always appreciated him commonly referred to as N9 you may have heard of him all right how to get into software I end up talking to a lot of people about how to get into software development is it weird that I have a picture of him on my computer is that strange should I be worried about that so I'm creating this guide this guide is by no means comprehensive and is light on specifics this is by Design as the vast majority of learning you will need it to do is self-directed for your career okay this is interesting additionally this guide is much more focused on back-end development though you'll be exposed to both back and front end okay number one install Arch Linux on your main computer all right people we're going for single okay we're going for broke let's see where we're going I'm loving this all right and use it for all computer tasks let's go let's go Nate I picked Arch not because it is the most perfect or the best but because it requires you to see what's going on in your Computing environment okay so this actually is a good argument if you have the time this is a good argument uh this is to see what your computer does at a little lower level and see how a more modular Computing environment works you will learn how to use the command line and likely get some experience writing shell scripts to tailor your personal Computing to your own preferences additionally whether or not you end up sticking with Arch or Linux at all you'll find the arch Wiki to be a useful reference for debugging software products okay interesting I mean this is a this is a tough one take this is a super tough one take like take one hot AF read automate the boring stuff this is a free python book that includes instructions and explanations on how to automate some general tasks using Python programming languages these programmers are let's see these programs are simple but powerful and will be a good starting point to program away some repetitive tasks in your own life and you'll learn the basics of programming and see some of the power of writing your own programs to solve I mean this is just a good philosophy to have right and not only this I feel like there's like a second one I must I'm assuming he hasn't talked a lot about it yet but there's this other concept which is how to write good scripts and one of the best ways to write a good script is to allow for files or standard in to be part of the input and just always having this notion of standard end to standard out or file into standard out or file into file out it's just one of these really beautiful ways like oh whatever the four combinations I think I forgot one file into a standard out uh just knowing how to write scripts well so you can make things more modular it's just really really nice uh Habit to be in honestly some of my favorite things I've been just trying lately is to build more you know buildable uh scripts standard and standard out as a file yeah but sometimes you also pass in a file that's not number one uh let's see your three choices are neovim my choice emacs if you want to learn another programming language and vs code this one is the that is most used in professional circles at the end of the day your work and play as a software development is 90 editing text files and you should be extremely effective at editing text files this should be more personal to you than your computer as as you will find your productivity is directly tied to your abilities in the text editor I 100 agree with this I can do so many things fast because I know my editor really really well this is a very great thing to keep in mind you should at least learn your tools the best you can if you don't know your tools you will always be in this weird spot where you're kind of flailing around a little bit I just think this is great so yeah slide into the authors DMS absolutely and I like that he said you can really like here's three good options he doesn't say Helix you can't really customize Helix as much uh it's a good way to put it create a profile on GitHub and learn the basics of version controlled git 100 this is great okay so actually this advice I thought it was going to be a pure meme right here but it's turned actually really good this is this is really good create let's see uh from here on out you will put all your code and things in your GitHub so potentially employers will see that you are productive git is a difficult program to understand and work with and much of it will not make sense uh use it regularly and and practice and reading up and you'll eventually go to understand enough to use it and collect in a collaborative environment a good resource actually a very good point which is the first time you use Version Control it does seem a little confusing right first time I used it I was a little kind of like what the hell is going on but then once you start using it becomes easy okay learn markdown great advice I use Mario let's see uh use it to write documentation notes and pretty much anything that have been written on yep yep this is useful because it's a common format in software circles that can be rendered in another program more or less uh Yep this will be a main way of writing documentations this is good advice this is good advice this is actually no one ever just says learn markdown absolutely start lurking on Hacker News and lobsters oh gosh not lobsters uh these are places where anyone from let's see from college students to CEOs hang out to discuss Tech topics you'll see Technologies come and go people complaining about things that are objectively good and defending things that are objectively bad along the way you'll read thousands of blog posts about programming and Technologies old and new this is where you will learn the in-group terminology and Concepts that's actually a really cool idea the the there is a whole like you know vernacular to being a software engineer it's true we say things such as atomic right people don't use the term Atomic to mean small okay at least in layman's terms right you know what I'm saying it's just this is unusual write a website from scratch and host on a server somewhere this is actually good advice it really doesn't matter what it's for or how you go about making it as long as you do it from scratch you'll need the basic understanding of how websites are put together and how to put them on a server digitalocean Doppler running at Ubuntu is fantastic for this as well as AWS ec2 Nano instance this will expose you to many Concepts and ideas that are useful in getting your software out to your own compute let's see of your own computer and able to use on others yeah I'm specifically not giving instructions on how to do this to force you to find out there are plenty of posts on the web yeah this is great advice I've always I've said this a bajillion times write a CLI program write a web server like those two things alone are going to teach you just a lot about General software terms read the go book The Go programming language is new uh is a newly common language in corporate business programming in which can get most programming tasks done is one of the best languages for getting a good job in the current year there are plenty of other programming languages that are out there equally good choices but I think it's a good place to go from python I might recommend node as a second language node is actually a runtime JavaScript would be the second language if you really enjoy writing websites and really don't care much for the python stuff I don't have a reference for node like I do for go so you'll be on your own for finding a good book I I mean I do agree with this language if you're trying to get a job right now and you don't want to use JavaScript goes a good alternative you pretty much have go and Java if you really want to get a job from 0 to 60 as fast as possible Right really if you learn if you learn JavaScript Java and go and you knew it and you go and you know it pretty well you can get a job pretty quick honestly a research functional programming and write a program interesting I don't care what program the program does functional programming is a totally different Paradigm from imperative which is um what you've mostly been doing so far many of the concepts we'll carry over from one Paradigm to another and gaining another perspective on programming will will be infinitely useful I fully agree with this I fully agree with this I just never want to write functional programming I just gotta learn okay I'm gonna have to learn one I've never done it but I fully agree with this statement there Lee code do some of these problems like 20 will be enough to see a common ways people write perform a code and we'll expose you to many of the common algorithms that will be included in programming interviews a lot of people overdo them and never uh end up getting practical programming knowledge so you'll want to avoid becoming a career lead coder again just based advice I mean personally I throw in there take the primagen's free course on algorithms and data structures because algorithms and data structures are more useful to in the interview than lead code problems okay additional musings you need to write a program or make a website the number of instructions are above are not enough to get the job you'll need to have some examples of code you've written along with the experience of having written some code coming up with programs or websites to write diff let's see to write is difficult the only way I've been able to reliably do this is examining what happens in my own Computing experience and finding things that annoy me I love this so that's my big motivation is always solving things that annoy me one of my favorite problems to solve is changing my desktop wallpaper with a keyboard command it's not groundbreaking or technically impressive but it's something that makes my Computing experience some small amount more pleasant the more important thing is isn't that you make wild programs that change the world but you get experience writing programs foreign it's good advice this is just good advice not everything has to be groundbreaking this is the thing I hear the most from you guys all right you guys you djans right here this is like the number one thing I hear the most from you uh which is okay should I commit to react or to this and it's like how about neither build something build anything can you complete it try to get completed right try to do something honestly it is amazing just to do something as opposed to just constantly constantly constantly be just striving to do the most greatest thing the most grandiose thing what will you do you'll end up probably getting defeated you'll probably end up not finishing and then you'll have nothing to show for it whereas if you at least do something even if it's small you've had The Full Experience from building something that has only an idea to the point where it's considered completed that's why also I don't change Harpoon Harpoon for me is completed I've done what I want on it and I really don't want to make changes anymore like it is exactly what I want the problem with me is I know but you have the ability to talk about it you got experience from doing it and that is the most important part is getting experience experience is the most important facet of all this none of this has anything to do with uh like I'm now gonna be the greatest website builder no you're going to want to specialize at some point and it won't be in website building it'll probably be something more specific but the best way to learn what you like is just to make [ __ ] just makes anything for a little while it's actually pretty nice I love Harpoon it's my I use it all the time the order of the above list is not strict uh I usually only like Mark one or two files honestly these days uh each one of these steps do not take the same amount of time and they're not meant to over yep awesome despite no means an exhaustive list let's see on yeah we'll keep on going I hope that in researching and completing the tasks above you'll have gained enough knowledge about the other aspects of programming to make yourself well-rounded programmer do not be afraid to go down rabbit holes of learning about things that seem to pull you from the loose loose path I've laid out that's great advice you know let the rabbit hole happen that's where the best learning happens let the rabbit hole have it what's Harpoon uh this is Harpoon so I have two pages in this project and there they are right there and I've bound them to a singular keys so I can just go back and forth when I quit and I open this back up I can go back and forth between those and notice where my cursor's at do you see something about my cursor where's my cursor at same place as it was when I left it harpoon harpoon's really cool I love Harpoon it's my own it's my best plugin I've ever ridden and it only has one thing and I I honestly I've been not allowing changes to go in because I'm very afraid that people are gonna I don't want to change right har based yeah like I like it I don't need I don't want more integration the only thing I want to do is think about like an inventing system for people to write their own plugins uh these are things uh let's see yeah where you find your Niche this is great advice the rabbit hole is where your Niche is niches is is how you get paid well think about that for a second the rabbit hole is where you find your Niche niches is how you get paid well people you don't like here's the deal if all you ever do is just incorporate Tailwind incorporate react go serverless build a small application and that's what you do there is a limit to that pay because that is not necessarily a complicated task it's just not but let's just say you go really far into one of those aspects all right whatever it is and you become a master of that domain you will be able to be hired for that one task because you were the best at it or one of the best at it niching is really important and it doesn't have to be super tight right it doesn't have to be like I am the best you know whatever it is right I've helped write solid.js that you don't have to be that Niche for me my Niche is to look at a problem see what tools could be made and try to guess what is the best tool to make and be able to make a rough draft for that tool in a very small amount of time that is my specialty that's it it's not it's it's not fantastic right that's that's not something that you know it only works at big companies but it's a lot of fun for me and I love doing it you know a really and if you can be super Niche you can get paid a lot honestly I'm really really good at not knowing what to do uh you're the dad I've never really had oh thanks son all right these tasks will not be done instantly I expect someone to have done enough to get an entry level job after about a year or so of doing the things on this list yeah I would say that that's actually not a bad idea uh the uh you may take more uh time or less time that is not a problem yep that is not a problem you can ask me for help if you want to oh come on this song was so good why would you do that I don't care who you are if you found your way to this post and you want some help feel free to reach out to me oh oh you want to be reached out to Nate well let's just go over here and go like this all right hey uh deegence his name is Nate go get him everybody got him honestly this is a great article this is actually probably the best article I've read in a long ass time really this is like one of the best articles I've read in the longest time because it's finally an article that's not like you know the previous article the the the get Atomic commits was like this is the only way to do it if you're not doing it you're denying what is actually best he's not even saying that he's literally just saying hey learn how to use a computer learn how to automate master your text editor make sure you're on the social scene so you can interact with Mar uh you know with with Version Control learn markdown because that's how devs communicate read articles and become good at just the lingo people use get some experience doing a full stack go read some useful books learn a different Paradigm be good enough at least code to solve some problems and guess what you're gonna get hired you're gonna be good enough like this is great advice this is great advice honestly I I'm shocked foreign it does help a lot yeah this is solid advice I'm afraid to look at other blog posts because what happens if I hate Nate afterwards you know what I mean what happens if I hate him afterwards I honestly when it started off with use Arch I literally thought there's no way this is going to be a good article blew me out of the water have you tried yet no I haven't tried the new one