Software engineering treats the approach to developing software as a formal process much like that found in traditional engineering. Software engineers begin by analyzing user needs. They design software, deploy, test it for quality and maintain it. 1
Software development is the process of computer programming, documenting, testing, and bug fixing involved in creating and maintaining applications and frameworks resulting in a software product. Software development is a process of writing and maintaining the source code, but in a broader sense, it includes all that is involved between the conception of the desired software through to the final manifestation of the software, sometimes in a planned and structured process.Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.2
Programming - the act or process of planning or writing a program.3
...the main activity you think of when you think about creating software is probably the activity the researchers refer to as “construction.”4
...construction is mostly coding and debugging but also involves the detailed design, construction planning, unit testing, integration, integration testing, and other activities...5
Construction is also sometimes known as “coding” or “programming.” “Coding” isn’t really the best word because it implies the mechanical translation of a preexisting design into a computer language; construction is not at all mechanical and involves substantial creativity and judgment.6
- Software construction is the central activity in software development; construction is the only activity that’s guaranteed to happen on every project.
- The main activities in construction are detailed design, coding, debugging, integration, and developer testing (unit testing and integration testing).
- Other common terms for construction are “coding” and “programming.”
- The quality of the construction substantially affects the quality of the software.
- In the final analysis, your understanding of how to do construction determines how good a programmer you are...
Agile software development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change7
Manifesto for Agile Software Development8
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Waterfall Model is a sequential design process, used in software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, production/implementation and maintenance.11
- Understanding the pros and cons of the Waterfall Model of software development
- Waterfall vs. Agile: Which is the Right Development Methodology for Your Project?
- Programming Languages
- Computer Science
- Web Technology for Developers
- Secure and Reliable Systems
- RESTful API - Web Services : REST is acronym for REpresentational State Transfer.
- Python REST API : Python Representational state transfer (REST) is a software architectural style that defines a set of constraints to be used for creating Web services.
- Anatomy of a Micro Framework : A microframework is a term used to refer to minimalistic web application frameworks. It is contrasted with full-stack frameworks.
- Micro-Frameworks : A microframework is a term used to refer to minimalistic web application frameworks, PHP, Python.
- 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.
- Agile Modeling : Agile Modeling (AM) is a practice-based methodology for effective modeling and documentation of software-based systems.
- Test Driven Development (TDD) : Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle
- unittest — Unit testing framework : unittest — Unit testing framework
- Peer Code Review : Code Review is an integral process of software development that helps identify bugs and defects before the testing phase.
- PHPStorm - The Lightning-Smart PHP IDE : PHPStorm - The Lightning-Smart PHP IDE
- PyCharm - The Python IDE for Professional Developers : PyCharm - The Python IDE for Professional Developers
- IntelliJ IDEA - The Java IDE for Professional Developers : IntelliJ IDEA The Java IDE for Professional Developers
- Visual Studio Code : Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.
- Atom Editor : A text editor is at the core of a developer's toolbox, but it doesn't usually work alone.
- Procedural which groups instructions into procedures
- Object-Oriented which groups instructions together with the part of the state they operate on
- Functional in which the desired result is declared as the value of a series of function applications
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
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.