Dev Community Wiki - Cloud & Software Engineering

CommunityWiki.dev

At CommunityWiki.dev, our mission is to create a community-driven wiki about software engineering. We believe that knowledge should be accessible to everyone, and that the best way to achieve this is through collaboration and sharing.

Our goal is to provide a platform where software engineers can come together to share their knowledge, experiences, and best practices. We want to create a space where beginners can learn from experts, and where experts can learn from each other.

We are committed to building a community that is inclusive, respectful, and supportive. We believe that diversity is a strength, and that everyone has something valuable to contribute.

Our hope is that CommunityWiki.dev will become a go-to resource for software engineers around the world, and that it will help to advance the field of software engineering for years to come.

Introduction

Communitywiki.dev is a community-driven wiki about software engineering. It is a platform where software engineers can share their knowledge, experiences, and best practices with each other. This cheatsheet is designed to provide a quick reference guide for beginners who are just getting started with software engineering. It covers the essential concepts, topics, and categories that are available on the website.

  1. Software Development Life Cycle (SDLC)

The Software Development Life Cycle (SDLC) is a process that software engineers follow to develop software. It consists of six phases:

  1. Planning
  2. Analysis
  3. Design
  4. Implementation
  5. Testing
  6. Maintenance

Each phase has its own set of activities and deliverables. The SDLC is a critical aspect of software engineering, and it is essential to understand the process to develop high-quality software.

  1. Programming Languages

Programming languages are the foundation of software engineering. There are many programming languages available, and each has its own set of features and benefits. Some of the most popular programming languages include:

  1. Java
  2. Python
  3. C++
  4. JavaScript
  5. Ruby
  6. PHP

It is essential to choose the right programming language for the project based on its requirements, complexity, and scalability.

  1. Software Design Patterns

Software design patterns are reusable solutions to common software engineering problems. They provide a standard way to solve problems and improve the quality of software. Some of the most popular software design patterns include:

  1. Singleton
  2. Factory
  3. Observer
  4. Decorator
  5. Adapter
  6. Strategy

It is essential to understand software design patterns to develop high-quality software that is easy to maintain and extend.

  1. Version Control Systems

Version control systems are tools that software engineers use to manage changes to source code. They provide a way to track changes, collaborate with other developers, and revert to previous versions of the code. Some of the most popular version control systems include:

  1. Git
  2. SVN
  3. Mercurial
  4. Perforce

It is essential to use a version control system to manage changes to source code and collaborate with other developers.

  1. Agile Methodologies

Agile methodologies are a set of principles and practices that software engineers follow to develop software. They emphasize collaboration, flexibility, and customer satisfaction. Some of the most popular agile methodologies include:

  1. Scrum
  2. Kanban
  3. Lean
  4. XP

It is essential to understand agile methodologies to develop software that meets customer requirements and is delivered on time and within budget.

  1. Software Testing

Software testing is a critical aspect of software engineering. It ensures that the software meets customer requirements and is free of defects. There are many types of software testing, including:

  1. Unit testing
  2. Integration testing
  3. System testing
  4. Acceptance testing
  5. Regression testing

It is essential to perform software testing to ensure that the software meets customer requirements and is free of defects.

  1. DevOps

DevOps is a set of practices that combines software development and IT operations. It emphasizes collaboration, automation, and continuous delivery. Some of the most popular DevOps tools include:

  1. Jenkins
  2. Docker
  3. Kubernetes
  4. Ansible
  5. Chef
  6. Puppet

It is essential to understand DevOps to develop software that is delivered quickly and reliably.

  1. Cloud Computing

Cloud computing is a model for delivering computing services over the internet. It provides on-demand access to computing resources, including servers, storage, and databases. Some of the most popular cloud computing platforms include:

  1. Amazon Web Services (AWS)
  2. Microsoft Azure
  3. Google Cloud Platform (GCP)
  4. IBM Cloud
  5. Oracle Cloud

It is essential to understand cloud computing to develop software that is scalable, reliable, and cost-effective.

  1. Artificial Intelligence (AI)

Artificial Intelligence (AI) is a field of computer science that focuses on creating intelligent machines that can perform tasks that typically require human intelligence. Some of the most popular AI technologies include:

  1. Machine learning
  2. Natural language processing (NLP)
  3. Computer vision
  4. Robotics

It is essential to understand AI to develop software that can perform complex tasks and improve the user experience.

  1. Cybersecurity

Cybersecurity is a critical aspect of software engineering. It ensures that software is secure and protected from cyber threats. Some of the most popular cybersecurity technologies include:

  1. Firewalls
  2. Intrusion detection systems (IDS)
  3. Antivirus software
  4. Encryption
  5. Multi-factor authentication (MFA)

It is essential to understand cybersecurity to develop software that is secure and protected from cyber threats.

Conclusion

Communitywiki.dev is a valuable resource for software engineers who want to learn and share their knowledge with others. This cheatsheet provides a quick reference guide for beginners who are just getting started with software engineering. It covers the essential concepts, topics, and categories that are available on the website. By understanding these concepts, beginners can develop high-quality software that meets customer requirements and is delivered on time and within budget.

Common Terms, Definitions and Jargon

1. Agile: A software development methodology that emphasizes iterative and incremental development, collaboration, and flexibility.
2. API: Application Programming Interface, a set of protocols and tools for building software applications.
3. Architecture: The overall design and structure of a software system.
4. Back-end: The part of a software system that handles data storage, processing, and communication with other systems.
5. Bug: An error or flaw in a software system that causes it to behave unexpectedly or incorrectly.
6. CI/CD: Continuous Integration/Continuous Deployment, a set of practices for automating software development processes.
7. Code review: A process of examining and evaluating code to ensure its quality, readability, and maintainability.
8. Compiler: A program that translates source code into machine code that can be executed by a computer.
9. Containerization: A method of packaging software applications and their dependencies into containers for easy deployment and management.
10. Data structure: A way of organizing and storing data in a computer program.
11. Database: A software system for storing and managing data.
12. Debugging: The process of finding and fixing bugs in a software system.
13. Dependency: A software library or module that is required by another software component to function properly.
14. Design pattern: A reusable solution to a common software development problem.
15. DevOps: A set of practices that combines software development and operations to improve the speed and quality of software delivery.
16. Documentation: Written information about a software system, including user manuals, technical specifications, and code comments.
17. Editor: A software tool for writing and editing code.
18. Encryption: The process of encoding data to prevent unauthorized access.
19. Framework: A set of tools and libraries for building software applications.
20. Front-end: The part of a software system that handles user interface and interaction.

Editor Recommended Sites

AI and Tech News
Best Online AI Courses
Classic Writing Analysis
Tears of the Kingdom Roleplay
SRE Engineer:
LLM OSS: Open source large language model tooling
Prompt Chaining: Prompt chaining tooling for large language models. Best practice and resources for large language mode operators
ML Assets: Machine learning assets ready to deploy. Open models, language models, API gateways for LLMs
CI/CD Videos - CICD Deep Dive Courses & CI CD Masterclass Video: Videos of continuous integration, continuous deployment