Advanced Curriculum For The Software Craftsman
The "Advanced Curriculum For The Software Craftsman" is a comprehensive guide crafted for new developers joining teams at FLYERALARM. This curriculum is not only a valuable resource for internal training but has also been open-sourced to aid other developers in their journey. This project serves as a roadmap for gaining essential skills and knowledge in the software development field.
Basics
The curriculum starts by laying down the foundational knowledge needed to understand the software development landscape. This includes grasping how the web works, understanding HTTP protocol, learning about networking basics, and exploring browser caching mechanisms. It emphasizes the importance of learning data structures, algorithms, and HTTP status codes through various online resources such as Mozilla Developer Network, Wikipedia, and GitHub.
Design and Architecture of Software
Developers will learn about clean code practices, design patterns, and object-oriented design. The curriculum introduces important concepts like domain-driven design, CQRS (Command Query Responsibility Segregation), and APIs. It also delves into software architecture through books and videos that discuss practical examples and theoretical knowledge.
PHP
For developers working with PHP, this section covers best practices like PHP The Right Way, standard recommendations, and logging basics. It provides resources for mastering PHP frameworks and identifying common errors in code. Developers can explore various PHP libraries and resources to advance their PHP expertise.
Kotlin
Kotlin is highlighted as a language gaining popularity. The curriculum offers resources to learn Kotlin effectively, understand its standard functions, and explore frameworks like Ktor for web backend development. Developers are encouraged to watch educational content, such as KotlinConf presentations, to enhance their understanding.
JavaScript & Frontend
Frontend development is essential and the curriculum provides resources for mastering JavaScript. From beginner-friendly guides like "JS for Cats" to more comprehensive books like "Eloquent JavaScript," developers will find everything they need to strengthen their frontend skills. The curriculum also includes CSS resources and encourages exploring platforms like MDN and CSS-Tricks.
Tools
The section on tools introduces developers to essential software development tools such as Git, Composer, and npm. It aims to equip them with the skills to manage dependencies, version control, and software packages effectively. Resources include interactive cheatsheets and unit testing tutorials to emphasize best practices in software development.
Environment
Understanding development environments is vital, and this curriculum sheds light on Unix commands, Docker, Kubernetes, and Ansible. These tools are crucial for managing and deploying applications. Developers can learn effective DevOps strategies and containerization concepts, enhancing their capability to work in complex software environments.
Persistence
Focus on data persistence, with resources dedicated to databases. This includes SQL performance tips and guides to using Redis. The aim is to deepen the developers' understanding of how data is stored, managed, and optimized for application performance.
Monitoring & Alerting
Monitoring tools and alerting systems ensure application reliability and performance. The curriculum introduces developers to tools like Icinga2 and Grafana for system metrics monitoring. These resources empower developers to implement efficient monitoring systems in their projects.
Apache Kafka
Kafka plays a crucial role in managing data streams, and this section provides an overview of Kafka and related technologies. Developers can explore Kafka as a platform for building scalable systems by understanding event-driven architectures and Avro for data serialization.
Processes & Culture
The curriculum acknowledges the importance of agile methodologies and teamwork. It offers insights into the Agile Manifesto, retrospectives, and fostering a collaborative team culture. Books like "The Phoenix Project" guide developers on implementing DevOps and improving workflows.
Information Security
Security is a critical aspect of software development. Developers can explore resources from OWASP and other security tutorials to build secure applications. Vulnerability testing and application security guidelines ensure robust protection for web applications.
Best Practices
This section emphasizes the best practices in coding and software design. From writing clean code to engaging in code refactoring, developers learn to enhance their coding prowess. Encouragement is given to participate in user groups and contribute to open-source projects, fostering a culture of continuous learning and contribution.
In conclusion, the "Advanced Curriculum For The Software Craftsman" is an invaluable resource, guiding developers within FLYERALARM and beyond. Through curated resources and suggested readings, developers can hone their skills and join the ranks of proficient software craftsmen dedicated to excellence in their field.