Software engineering is a branch of computer science that includes the development and building of computer systems software and applications software.

Software Engineering

"We see three critical differences between programming and software engineering: time, scale, and the trade-offs at play. On a software engineering project, engineers need to be more concerned with the passage of time and the eventual need for change. In a software engineering organization, we need to be more concerned about scale and efficiency, both for the software we produce as well as for the organization that is producing it. Finally, as software engineers, we are asked to make more complex decisions with higher-stakes outcomes, often based on imprecise estimates of time and growth." (Software Engineering at Google Lessons Learned from Programming Over Time)

  • Object-Oriented : In computer science, an object can be a variable, a data structure, a function, or a method, and as such, is a value in memory referenced by an identifier.
  • Agile Software Development : Agile software development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
    • Iterative and Incremental Development : Iterative and Incremental development is any combination of both iterative design or iterative method and incremental build model for development.
    • Refactoring : Refactoring consists of improving the internal structure of an existing program's source code, while preserving its external behavior.
    • Agile Modeling : Agile Modeling (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.
    • Extreme Programming (XP) : Extreme Programming (XP) is an agile software development framework that aims to produce higher quality software, and higher quality of life for the development team.
    • Lean Software Development : Lean software development is a translation of lean manufacturing principles and practices to the software development domain.
  • Version Control : Version control, also known as source control, is the practice of tracking and managing changes to software code.
    • Git Version Control : Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
    • Subversion (SVN) Version Control : Subversion is an open-source, centralized version control system.
  • Test Driven Development (TDD) : Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle
  • Peer Code Review : Code Review is an integral process of software development that helps identify bugs and defects before the testing phase.
  • Testing and Quality Assurance : Software Quality Assurance (SQA) is a set of activities for ensuring quality in software engineering processes that ultimately results, or at least gives confidence, in the quality of software product
    • Functional Testing : Functional Testing is a type of software testing whereby the system is tested against the functional requirements/specifications.
    • User Acceptance Testing : Acceptance Testing is a level of software testing where a system is tested for acceptability.
    • Robot Framework : Robot Framework is a generic open-source automation framework for acceptance testing, acceptance test-driven development (ATDD), and robotic process automation (RPA).
    • Cypress : Cypress is the new standard in front-end testing that every developer and QA engineer needs.
  • SQL Database : SQL (Structured Query Language) is a domain-specific language used in programming and designed for managing data held in a relational database management system (RDBMS)
    • MySQL : MySQL Community Edition is the freely downloadable version of the world's most popular open source database.
    • SQLite : SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine.
  • NoSQL Database : A NoSQL database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases.
  • Integrated Development Environment (IDE) : An integrated development environment (IDE) is software for building applications that combines common developer tools into a single graphical user interface (GUI).


Cracking the Coding Interview: 189 Programming Questions and Solutions Cracking the Coding Interview: 189 Programming Questions and Solutions
Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I've coached and interviewed hundreds of software engineers. The result is this book.

The Mythical Man-Month The Mythical Man-Month
Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.

Code Simplicity: The Fundamentals of Software
The book exists to help all programmers understand the process of writing software, on a very fundamental level that can be applied to any programming language or project, from here into eternity. Code Simplicity is also written in such a way that even non-technical managers of software teams can gain an understanding of what the “right way” and the “wrong way” is (and why they are right and wrong) when it comes to software design. The focus of the book is primarily on “software design,” the process of creating a plan for a software project and making technical decisions about the pattern and structure of a system.

Understanding Software: Max Kanat-Alexander on simplicity, coding, and how to suck less as a programmer
In Understanding Software, Max Kanat-Alexander, Technical Lead for Code Health at Google, shows you how to bring simplicity back to computer programming. Max explains to you why programmers suck, and how to suck less as a programmer. There's just too much complex stuff in the world. Complex stuff can't be used, and it breaks too easily. Complexity is stupid. Simplicity is smart.

Software Engineering at Google: Lessons Learned from Programming Over Time
The approach to and understanding of software engineering at Google is unlike any other company. With this book, you'll get a candid and insightful look at how software is constructed and maintained by some of the world's leading practitioners.

Building Maintainable Software
Have you ever felt frustrated working with someone else's code? Difficult-to-maintain source code is a big problem in software development today, leading to costly delays and defects. Be part of the solution. With this practical book, you'll learn 10 easy-to-follow guidelines for delivering Java software that's easy to maintain and adapt. These guidelines have been derived from analyzing hundreds of real-world systems.

Building Software Teams: Ten Best Practices for Effective Software Development
Why does poor software quality continue to plague enterprises of all sizes in all industries? Part of the problem lies with the process, rather than individual developers. This practical guide provides ten best practices to help team leaders create an effective working environment through key adjustments to their process.

Last edited by MichaelAlber .
Page last modified on Tuesday October 26, 2021 22:26:40 PDT.