About us

Breaking

2021/04/20

Software Tools || Use At Work ||


 

Five tools or technologies that you need to know to be an effective software engineer.So I'll start by mentioning that a lot of the tools e are pretty broad, and  there's definitely a lot that you could learn about each of these tools. Now, it's not super important that you know, everything,it just about having kind of a basic,fundamental understanding and being able to understand how that tool works. May behave a conversation with someone about it and just being able to use it with a relative degree of
effectiveness. Now, you'll probably learn a lot of these tools just by watching YouTube videos
or looking at other resources. 
 
  • Proteus is a free Chrome extension that lets you track your time. Proteus makes it easy to find interesting and relevant classes that are taught by the best instructors. You can filter the Proteus library for classes based on skill, difficulty, and category. And if you're the first one to find a great class, then feel free to add it to the library yourself. Proteus lets you set daily learning goals, track your learning progress and provides analytics and insights into your educational journey. Similar to spotify playlist users can packet classes together as a course for other students to follow along and learn an entire curriculum. Proteus also lets you earn hours towards different pro degrees and your topics and fields of interest. Once you've earned a pro degree, you can add it to your LinkedIn profile and show the time you spent mastering that top. But if you're not a Chrome user, then feel free to check out the Proteus web app from Proteus.co. 

 

 Get, Get Hub and version Control Software

 
So the first and in my opinion, the most important tool that you need to know is a version control
software or system, get and get hub. Now why you need to know this, but if you're working in a team of more than one person, you're not just working, chances are you're going to be using, get and get hub or some other kind of version control software and you're going to need to sync your local changes. So the stuff you're actually writing and developing on your computer with, the company code base or the other person's code base, and you're going to need a way to take other people's changes and we'll
update that on your local code base. So it's very important that you have a deep understanding of how
both get and get hub work. Assuming you're using that software and that you can not only perform commands from the command line on your keyboard, but you also can use the user interface on the get
hub website. 
 
Now, the reason I've separated these two things out is because as many people don't know get and get hub are two separate things. Yes, they work very closely together.They're very deeply integrated.
 
  1. But get is kind of the backed actual version control software. It's what's running on your computer. It's what's checking for changes in your repository. It's what's going to do all of, kind of the hard lifting. When you do say like a re-base command, right? That's what gets will actually do. It's kind of more in the back-end. 
  2. Whereas get hub is actually the front end user interface. It's the famous website that we all know about.

So you need to know how to use both of them. You have to know how to use the basic get commands. So how do I commit something? How do I push something up to the remote repository?  How do I pull something down? What does a re-based command do? How do we make a new branch, all of these different things. And then you also have to know how to use the get hub website. So how do I do a code review? Okay. Oh, this is how we approve changes. This is how I merge something into the branch, all of those different things. So we've gone on this long enough that the point is that this is very important and really make sure of all of the tools on the list. You have this down and you have a deep understanding of how get and get hub work. 

Linux Commands

So the second thing on my list here is going to be Linux commands and generally Mac and windows commands as a software engineer. There's a lot of situations where you are not going to be able to use a graphical user interface and you're going to have to be comfortable navigating a file system using adjust the command line.Even if we take an example where you're on windows, we're on Mac. There is again to many situations where even though you might have a graphical user interface, the tool that you're interacting with or using is only available from the command line. Now I'm not saying you have to be an absolute pro and you never use a graphical user interface. You just have to know how to navigate a file system, how to copy a file, move a file, edit a file, do these basic things that are very common and that you'll have to do a lot. If you are ever in the situation where you don't have that graphical user interface or you can't use it for what you're doing now, this will be especially important. 

If you're someone who's working on any kind of web development, if you're going to be interacting with any servers, if you're needing to SSH into say a remote machine, if you're going to be working with a lot of machine learning related stuff, we're really specific pieces of technology or programs especially in Python, there's a lot of stuff that only runs on Linux, right? It just doesn't work on Mac or it doesn't work on windows. So even having the ability to say boot up a virtual machine and get in and just really quickly kind of spin up in Ubuntu box or some kind of Linux box and start working on that is really important. And firsthand at Microsoft, almost all of my coworkers had access to a virtual machine that was running Linux and that never had a graphical user interface on it. It was simply command line and they would use that when they needed to task really specific proprietary pieces of software. And well, if they didn't know how to use Linux, it was going to be a huge pain every time they needed to go in there. When they're looking up, how do I copy a file? How do I edit a file? How do I save something? Just some basic things that you should know. You have a fundamental understanding of how to navigate a file system and perform some basic commands related to permissions on Linux, Mac and Windows. 

Debugging

The third thing is using a debugger or we could call this debugging.But what I mean by this is understanding how to use a debugging tool and understanding how to go about debugging a complex program. Now, this is really important because in a lot of situations especially if you're working for a company you're going to be dealing with files that have you know, tens of thousands of lines where you're going to be dealing with tens of thousands of different files. And it's just not going to be viable to be able to use a print debugging when you're debugging. Sure. You could use that for small things, but you're going to have to know how to use a debugger, which means you have to know how to play Sprake points. 

What stepping over, stepping out of and stepping into does, and kind of just the general process and strategy of how you debug a program. Now it's hard to give you that strategy because of course that's going to be specific to what you're doing, but my point is just that you're going to be working in huge code bases with lots of files, lots of lines, and just tons of stuff going on. So being able to isolate your problem, first of all, is the most important things you have to kind of practice debugging and understand how to use those tools. Now I do actually have a video on my channel that talks about how to use a debugger. It goes to the vs code debugger, which most of you might find useful. So I will link that down below, but I don't think I can talk about this much more. It's just as important to understand how to debug and you should know how to use a professional debugger to be an effective software Engineer.  

IDE

The fourth aspect is IDE capabilities. Now what I suggest via way of means of that is clearly simply the way to installation a coding surroundings for your self and the way to take gain of a number of the cool capabilities which are in IDs. Now, a few capabilities are such things as formatters, debuggers, finding, update refactor, replica line, simply these kind of styles of exceptional matters. This is critical due to the fact you need to be as speedy as viable whilst you're writing code. And if you may use those cool equipment, well, its going to be clearly beneficial now, mainly if you're operating in a big code base, know-how the way to navigate a ton of various documents and cross to mention the definitions, exceptional features or techniques or instructions is clearly critical. So simply having a good know-how of the improvement surroundings that you're the usage of and being capable of take gain of a whole lot of those middle equipment which are worried in those IDs is clearly critical. if you're simply an absolute novice and you're nonetheless getting to know the way to code, that is greater of a advice for human beings that actually need to come to be software program engineers that have already got the fundamentals of coding down. And which are absolutely quality with getting a chunk of resource from the computer.

Networking Basics


Last thing we need to know is networking basics. Now is mean by this is just having a really basic understanding of how computers communicate with each other, how maybe a distributed system
might work, why you may need to use, say a synchronous programming or multiple threads due to the networking operations that you're using. And then of course having an understanding of each TTP protocols and, you know, maybe the difference between something like a get request and a PO post
request or how you could send those kinds of requests or send a  response from code. 
 
Now, of course there may be a set of software engineers that don't actually need to understand this, but I would say in a lot of situations having this knowledge is really good. And it just allows you to understand a lot more about what's happening in a system. If you have kind of that underlying
knowledge and information about how networking actually works. When we are writing programs that deal with any kind of networking related thing, just having that little bit of knowledge will helped
you and made it a lot more clear into why we were writing a specific blocks of code, you know, kind of
based on that understanding.


No comments:

Post a Comment