Software Engineering Principles
Software Engineering Principles
Your Progress
Learning goals
Practice important skills you'll need to be a successful software developer — testing, debugging, design, documentation, and open source.
Suggested prerequisites
Familiarity with basic programming concepts.
Testing
Testing is essential for making sure your code works and is maintainable into the future. The resources below will help you understand how to effecively test your code.
What is software testing?
What is software testing? Check out this video to learn more about testing as well as what types of tests you should use for different parts of your software development life cycle. (YouTube)
ESTIMATED TIME: UNDER 10 MINSTypes of software tests
Not sure which type of testing you should use for your program? Check out this article to learn about different testing methods available in programming and which one might be the best for you to use! (GeeksforGeeks)
ESTIMATED TIME: 20-30 MINSHow to write unit tests
If you're not familiar with unit testing, check out this video to learn more about unit testing and why you should include tests in your own code. Examples are included as well! (YouTube)
ESTIMATED TIME: 10-20 MINSBasics of unit testing
Testing your code can come in handy! Check out this article to learn about the basics of unit testing, which helps ensure that certain sections of your code behave as intended. (liveBook)
Practice writing unit tests
Interested in getting practice with writing unit tests? Check out this coding question where you'll be given a code snippet and asked to write unit tests to confirm the expected results. (HackerRank)
Debugging
Debugging is a crucial skill for writing code. Often when you first try to run your code, you'll see an error message or you want see the results that you expected. The resources below will help you learn how to effectively find and fix bugs.
How to debug your code
Debugging code can be one of the most frustrating parts of programming, but also the most educational! Check out this video from Codecademy to learn about different strategies you can use to fix common errors in your code. (YouTube)
ESTIMATED TIME: UNDER 10 MINS10 Debugging tips for beginners
Don't worry if you encounter bugs in your code — it's very common! If you're curious about how to better troubleshoot and fix your code, check out this article that discusses 10 debugging tips. (Hartley Brody)
ESTIMATED TIME: 10-20 MINSUsing debugging tools
Curious about how to use available debugging tools in an IDE? This video explains how you can use debugging tools while walking through examples using the Visual Studio IDE. (YouTube)
ESTIMATED TIME: 10-20 MINSHow to debug code errors
Knowing how to debug code can put you at an advantage when it comes to programming. If you're interested in learning how to interpret and debug different types of errors, check out this article. (Airbrake)
ESTIMATED TIME: 20-30 MINS
Open source
Open source software is a critical part of the tech industry and a great way for you to practice collaborating and writing code.
How to contribute to an open source project
Are you interested in writing code for an open source project? This site lists resources you can use to find open source projects to contribute to. It's a great resource for those no open source experience.
ESTIMATED TIME: 20-30 MINSCommand Line tutorial
Are you new to the command line? Learn the basics of the command line interface through this tutorial in which you'll learn to write and execute your first few commands. (Django Girls)
ESTIMATED TIME: 20-30 MINSHow to use the command line
Have you ever opened the terminal window on your machine, but weren't shown what commands to use? Check out this video to learn all about the basics, including the most common commands. (YouTube)
ESTIMATED TIME: 10-20 MINSWhat is version control?
What is version control and when should you use it? This video explains what version control is while walking you through the basics of Git, the most popular version control tool used today. (YouTube)
ESTIMATED TIME: UNDER 10 MINSGit Handbook
Git is a version control tool that software engineers use to collaboratively write code. This article gives a high-level overview of how Git works while explaining what a version control system is. (GitHub)
ESTIMATED TIME: 20-30 MINSGit Branching tutorial
Git can be confusing, but is easier to understand in parts. This interactive tutorial zooms in on Git branching and gives you a step-by-step demonstration of how branching works — visuals included! (LearnGitBranching)
Git cheat sheet
There are many Git commands, sometimes too many to even keep track of! Keep this cheat sheet, which lists and explains different Git commands, on hand for reference when you need a refresher. (GitHub)
ESTIMATED TIME: 10-20 MINSHow to read other people's code
Picking up where someone else left off can be intimidating. This article provides 8 tips on how you can best read others' code when investigating an already existing codebase. (Atomic Object)
ESTIMATED TIME: 10-20 MINSWhat to look for in a code review
Reviewing and approving other people's code is an integral part of software engineering. Check out this article by Google to learn about what you should look for when reviewing code written by others. (GitHub)
ESTIMATED TIME: 10-20 MINS
Design & Documentation
In order to write complex and sustainable code, it's important for you to design it before you write it and to have documentation explaining how it works.
10 Tips for clean code
Writing clean code is critical when it comes to engineering best practices, especially if others will be reading your code! Check out this video to learn 10 tips you can use to make your code cleaner. (YouTube)
ESTIMATED TIME: 10-20 MINSGoogle Style Guides
Different programming languages have different style guides. Check out this page by Google that centralizes the most common style guides in one place so you can always find what you're looking for! (GitHub)
System design
What is system design and how is this concept brought to life in software development? Check out this article to learn more about the system design process and how you can apply it to your workflow. (Medium)
Designing a URL shortening service
Want to better understand system design? Take a look at this article that walks you through designing a URL shortening service and how concepts of system design are used to reach a conclusion. (Educative)
How to write good documentation
Writing clear documentation is just as important as writing clear code. This article outlines 5 tips you can follow to write useful documentation for open source projects. (OpenSource)
ESTIMATED TIME: UNDER 10 MINS