mirror of
https://github.com/kamranahmedse/developer-roadmap.git
synced 2026-03-13 02:01:57 +08:00
Compare commits
59 Commits
fix/defaul
...
feat/featu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed702dc5f3 | ||
|
|
6e1e832d65 | ||
|
|
d7243be4b9 | ||
|
|
f7cc84d71f | ||
|
|
7de31c7555 | ||
|
|
90aa70297c | ||
|
|
e47b9dc1a2 | ||
|
|
85d8b8d1bb | ||
|
|
55831e1a96 | ||
|
|
dcd5df4834 | ||
|
|
8687f38248 | ||
|
|
8835c7a672 | ||
|
|
a0a0da45e7 | ||
|
|
6a8c8415bd | ||
|
|
595d3e4199 | ||
|
|
d327a99dea | ||
|
|
cb8f87fa36 | ||
|
|
b1c2df180d | ||
|
|
ed1a0057d8 | ||
|
|
9ac7f8cdaf | ||
|
|
f74265e7ef | ||
|
|
3c64ef9f29 | ||
|
|
a5d926dde8 | ||
|
|
ceadf60c07 | ||
|
|
4861ecd1e5 | ||
|
|
2d168ac210 | ||
|
|
f6266ee282 | ||
|
|
fcb0d880fb | ||
|
|
b1c4ca2bdf | ||
|
|
65a1ea1335 | ||
|
|
8d08c16e1a | ||
|
|
70caa3af3d | ||
|
|
e1b82514ba | ||
|
|
997d45520d | ||
|
|
fb86d888ac | ||
|
|
7511dcdb04 | ||
|
|
cae48262b6 | ||
|
|
32112fc966 | ||
|
|
ec223dbd89 | ||
|
|
f1158c0df7 | ||
|
|
3df9f2cf89 | ||
|
|
95b8a00c51 | ||
|
|
dc3667d070 | ||
|
|
b648829f76 | ||
|
|
6bc46074e2 | ||
|
|
6446603cba | ||
|
|
6fb4218205 | ||
|
|
bc87982302 | ||
|
|
4c5e95a117 | ||
|
|
d445c026d8 | ||
|
|
e995fdfa6d | ||
|
|
fca41dc969 | ||
|
|
2f0ac303a0 | ||
|
|
fa7a664fa9 | ||
|
|
a9755a57ed | ||
|
|
b07a44470b | ||
|
|
7c311dbdce | ||
|
|
ff13c154a7 | ||
|
|
840648b9b1 |
@@ -3,6 +3,6 @@
|
||||
"enabled": false
|
||||
},
|
||||
"_variables": {
|
||||
"lastUpdateCheck": 1731065649795
|
||||
"lastUpdateCheck": 1732419746256
|
||||
}
|
||||
}
|
||||
BIN
public/pdfs/roadmaps/engineering-manager.pdf
Normal file
BIN
public/pdfs/roadmaps/engineering-manager.pdf
Normal file
Binary file not shown.
@@ -1818,6 +1818,11 @@
|
||||
"url": "https://www.cursor.com/",
|
||||
"type": "website"
|
||||
},
|
||||
{
|
||||
"title": "PearAI - The Open Source, Extendable AI Code Editor",
|
||||
"url": "https://trypear.ai/",
|
||||
"type": "website"
|
||||
},
|
||||
{
|
||||
"title": "Bolt - Prompt, run, edit, and deploy full-stack web apps",
|
||||
"url": "https://bolt.new",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
{
|
||||
"title": "Explore top posts about C#",
|
||||
"url": "https://app.daily.dev/tags/c#?ref=roadmapsh",
|
||||
"url": "https://app.daily.dev/tags/csharp?ref=roadmapsh",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
@@ -1310,7 +1310,12 @@
|
||||
"description": "Unit testing is a software testing method where individual components or units of a program are tested in isolation to ensure they function correctly. This approach focuses on verifying the smallest testable parts of an application, such as functions or methods, by executing them with predefined inputs and comparing the results to expected outcomes. Unit tests are typically automated and written by developers during the coding phase to catch bugs early, facilitate code refactoring, and ensure that each unit of code performs as intended. By isolating and testing each component, unit testing helps improve code reliability and maintainability.\n\nVisit the following resources to learn more:",
|
||||
"links": [
|
||||
{
|
||||
"title": "Unit Testing Tutorial",
|
||||
"title": "Unit testing",
|
||||
"url": "https://en.wikipedia.org/wiki/Unit_testing",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "What is Unit Testing?",
|
||||
"url": "https://www.guru99.com/unit-testing-guide.html",
|
||||
"type": "article"
|
||||
},
|
||||
|
||||
@@ -182,6 +182,11 @@
|
||||
"title": "Explore top posts about Decentralization",
|
||||
"url": "https://app.daily.dev/tags/decentralization?ref=roadmapsh",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "What Is Decentralization in Crypto, Exactly?",
|
||||
"url": "https://youtu.be/5iesIki27zw?si=3tUygdRSAveuxGlr",
|
||||
"type": "video"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1899,11 +1899,6 @@
|
||||
"url": "https://www.coresecurity.com/",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Immunity Canvas",
|
||||
"url": "www.immunitysec.com",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Metasploit for Beginners",
|
||||
"url": "https://www.youtube.com/watch?v=8lR27r8Y_ik",
|
||||
@@ -2215,7 +2210,7 @@
|
||||
},
|
||||
{
|
||||
"title": "Biometrics (fingerprint, facial recognition, etc.)",
|
||||
"url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5428991/",
|
||||
"url": "https://me-en.kaspersky.com/resource-center/definitions/biometrics",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -2654,31 +2654,21 @@
|
||||
},
|
||||
"Yq8kVoRf20aL_o4VZU5--": {
|
||||
"title": "Container Orchestration",
|
||||
"description": "Containers are a construct in which cgroups, namespaces, and chroot are used to fully encapsulate and isolate a process. This encapsulated process, called a container image, shares the kernel of the host with other containers, allowing containers to be significantly smaller and faster than virtual machines, These images are designed for portability, allowing for full local testing of a static image, and easy deployment to a container management platform.\n\nVisit the following resources to learn more:",
|
||||
"description": "Container orchestration is the process of managing and automating the lifecycle of containers, including their deployment, scaling, and networking across multiple hosts. It is a critical technology for running complex containerized applications in production environments.\n\nBy leveraging tools like Kubernetes, Docker Swarm, and Apache Mesos, organizations can ensure high availability, scalability, and reliability for their applications. Container orchestration simplifies operations by automating routine tasks and providing a robust foundation for microservices, cloud-native development, and DevOps practices.\n\nVisit the following resources to learn more:",
|
||||
"links": [
|
||||
{
|
||||
"title": "What are Containers?",
|
||||
"url": "https://cloud.google.com/learn/what-are-containers",
|
||||
"title": "What is Container Orchestration?",
|
||||
"url": "https://www.redhat.com/en/topics/containers/what-is-container-orchestration",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "What is a Container?",
|
||||
"url": "https://www.docker.com/resources/what-container/",
|
||||
"title": "What is Kubernetes?",
|
||||
"url": "https://kubernetes.io/docs/tutorials/kubernetes-basics/",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Articles about Containers - The New Stack",
|
||||
"url": "https://thenewstack.io/category/containers/",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Explore top posts about Containers",
|
||||
"url": "https://app.daily.dev/tags/containers?ref=roadmapsh",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "What are Containers?",
|
||||
"url": "https://www.youtube.com/playlist?list=PLawsLZMfND4nz-WDBZIj8-nbzGFD4S9oz",
|
||||
"title": "Introduction to Kubernetes",
|
||||
"url": "https://www.youtube.com/watch?v=PH-2FfFD2PU",
|
||||
"type": "video"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -990,8 +990,14 @@
|
||||
},
|
||||
"6UR59TigEZ0NaixbaUIqn": {
|
||||
"title": "LinkedIn",
|
||||
"description": "",
|
||||
"links": []
|
||||
"description": "DevRel professionals can effectively leverage LinkedIn by strategically building and engaging with a network relevant to their industry. This can be achieved by sharing insightful content, such as articles, success stories, and technical guides related to developer relations, which showcases their expertise and enhances their visibility. Engaging in LinkedIn Groups and participating in discussions not only helps in staying up-to-date with industry trends but also in establishing themselves as thought leaders in the developer community. Additionally, LinkedIn can be used to promote and expand the reach of community events, webinars, and conferences, thus strengthening community engagement and fostering professional connections that are essential for successful developer relations.",
|
||||
"links": [
|
||||
{
|
||||
"title": "Visit LinkedIn",
|
||||
"url": "https://linkedin.com",
|
||||
"type": "article"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ZMManUnO-9EQqi-xmLt5r": {
|
||||
"title": "Facebook",
|
||||
|
||||
672
public/roadmap-content/engineering-manager.json
Normal file
672
public/roadmap-content/engineering-manager.json
Normal file
@@ -0,0 +1,672 @@
|
||||
{
|
||||
"_hYN0gEi9BL24nptEtXWU": {
|
||||
"title": "What is Engineering Management?",
|
||||
"description": "",
|
||||
"links": []
|
||||
},
|
||||
"oKbeLp4YB8rI1Q3vi0EnG": {
|
||||
"title": "EM vs Tech Lead vs IC",
|
||||
"description": "An Engineering Manager (EM), Technical Lead, and Individual Contributor (IC) play vital roles in tech teams. However, their responsibilities and focus areas differ. The EM prioritizes team management including hiring, team dynamics, facilitating communication, and ensuring deliverables. They often steer clear of day-to-day coding to focus on strategic matters. On the other hand, a Tech Lead leads by example. They are usually hands-on with coding and make key technical decisions. ICs, or team members, are skilled engineers who actively work on the product and are led by the Tech Lead and EM.\n\nThe challenge for an EM here lies in balancing management duties with keeping a technical edge. A good EM acknowledges these differences, collaborates effectively, and ensures smooth operation of the team while fostering an environment conducive to growth and learning.",
|
||||
"links": []
|
||||
},
|
||||
"aSZ2uVCmpAdEPjJt6VKG4": {
|
||||
"title": "People",
|
||||
"description": "Engineering Managers have a crucial role in managing the people aspect of their teams. They are responsible for building, nurturing, and guiding their teams towards a shared goal. This involves hiring the right talent, fostering collaboration, and promoting a positive environment for brainstorming and innovation. They also address personal and professional conflicts, ensuring a unified and efficient team.\n\nHandling people is no easy task. Challenges come in many forms such as personality clashes, power struggles, or unequal contribution from team members. To address these, the manager must have excellent communication, empathy, and leadership skills. Regular feedback sessions and team building activities can also help.\n\nSuccess in managing people is a delicate balance of technical expertise and interpersonal intelligence. A good Engineering Manager doesn't just guide their team technically, but also emotionally. They celebrate success, address failures, and make everyone feel valued and heard.",
|
||||
"links": []
|
||||
},
|
||||
"p9ecMvHCqjmvxf67di7pY": {
|
||||
"title": "Product",
|
||||
"description": "Engineering managers are pivotal in translating product visions into tangible results. They shoulder the responsibility of aligning the engineering team's efforts with the product roadmap. This involves not just understanding the technical complexity, but also grasping the product's strategic importance.\n\nThey face challenges like prioritizing feature development and resolving resource clashes. Effective handling requires a blend of technical proficiency and keen product sense. They also need to navigate collaborative decision-making, ensuring that engineering perspectives are well represented in product discussions.\n\nAccuracy in estimating timelines for product features is paramount. An engineering manager therefore needs to excel in project management, accurately gauging task complexity and foreseeing potential roadblocks. This is crucial to align engineering activities with overall product timelines and objectives.",
|
||||
"links": []
|
||||
},
|
||||
"iZFn0FaRdrGv_-_8zii_-": {
|
||||
"title": "Process",
|
||||
"description": "Engineering management is a crucial role in tech companies, overseeing the processes that power engineering teams. An Engineering Manager has to ensure that all processes, be it software development lifecycles, testing protocols, or deployment procedures, are efficient, effective, and correctly implemented.\n\nA key responsibility they hold is identifying and managing any bottlenecks or hindrances slowing down productivity. This may involve constant monitoring, discussion with team members, and careful analysis of workflow data. The Engineering Manager's role also involves process optimization that can include introducing new tools, methodologies, or even reshaping teams for better performance.\n\nSuccess in this aspect requires exceptional problem-solving skills and the ability to innovate and adapt. Persistence and excellent communication skills are also required as effective process management often involves persuading and influencing others about the value of proposed changes.",
|
||||
"links": []
|
||||
},
|
||||
"FtWNnOE3zObmjS-Og26M3": {
|
||||
"title": "Architectural Decision-Making",
|
||||
"description": "Architectural decision-making is a crucial responsibility for an Engineering Manager. These decisions can shape the future capabilities and operation of an engineering team. A manager should be capable of balancing current requirements with long-term goals. This involves choosing the right technologies, frameworks and design patterns.\n\nThey face challenges, like managing risks and ensuring scalability. To address these challenges, they use data and consult their teams before making any major decisions to mitigate risk. The decision-making process includes stakeholder consultations, careful analysis of options, and potential risk assessments.\n\nEffective architectural decision-making requires both technical and leadership skills. The ability to analyse data, understand technical constraints, and make informed decisions are important. The manager also needs good communication skills to explain their decisions to their teams and stakeholders. These skills help in managing the technical strategy of the team effectively.",
|
||||
"links": []
|
||||
},
|
||||
"pduPcv2QPpVmVvDdK4CPi": {
|
||||
"title": "System Monitoring & Performance",
|
||||
"description": "An Engineering Manager has a vital role to play in system monitoring & performance. They're responsible for setting up the right tools and processes that allow ongoing scrutiny of systems to ensure optimal performance. This includes laying out clear KPIs for system uptime, responsiveness, and other critical metrics.\n\nChallenges can include capturing the right data and making sense of it to preempt problems. They may use data visualization and other analytic tools to simplify this task. It's also up to them to champion the importance of this aspect to their team and encourage their active participation.\n\nTo succeed, an Engineering Manager needs a solid understanding of relevant technologies and the ability to make data-driven decisions. Balancing proactive and reactive approaches is key, as is nurturing a culture that values maximum system effectiveness.",
|
||||
"links": []
|
||||
},
|
||||
"EyoVFmqOJbH1sAPHLISFt": {
|
||||
"title": "Scaling Infrastructure",
|
||||
"description": "An Engineering Manager is vital to scaling infrastructure because they typically lead the design, development, and execution of such operations. As a part of their role, they might identify current bottlenecks, forecast future growth, and plan accordingly so the infrastructure can support the increased load.\n\nThe process often involves challenges such as predicting growth accurately, balancing costs with potential needs, and efficiently implementing changes. To overcome them, effective communication, thorough technical knowledge, and good planning skills are needed.\n\nSuccess hinges on the ability to constantly monitor the infrastructure's performance, adjust strategies as needed, and maintain clear communication lines with both the developers who will implement the changes and the stakeholders who will approve the costs.",
|
||||
"links": []
|
||||
},
|
||||
"fBENrXdMhoGYgL_d96tgo": {
|
||||
"title": "Software Engineering Background",
|
||||
"description": "An Engineering Manager with a Software Engineering background is well-equipped to handle technical challenges within the team. They can effectively provide direction and guidance on software development, use their knowledge to troubleshoot problems and offer practical solutions. Their role entails not only supervising the team's work but also assisting in technical aspects.\n\nThe main challenge is to strike a balance between managerial work and active technical contribution. They need to keep their software engineering skills up-to-date to maintain credibility and effectiveness. Prioritizing tasks, constant learning, and effective delegation are crucial aspects in this regard.\n\nA manager in this scenario should be proficient in specific programming languages that their team uses, software design principles, testing methods, and debugging. They should also have a good understanding of different software development methodologies to manage their team optimally.",
|
||||
"links": []
|
||||
},
|
||||
"iX4HPgoiEbc_gze1A01n4": {
|
||||
"title": "System Design and Architecture",
|
||||
"description": "An Engineering Manager leads and oversees the system design and architecture. They're responsible for ensuring that the design aligns with the company's business goals and client needs. Their tasks may include making key technical decisions, reviewing design proposals, architecting scalable systems, and ensuring systems' redundancy and fault tolerance.\n\nTechnical issues are common in system design and architecture. An Engineering Manager handles these by having a deep understanding of the systems and their dependencies. They must effectively communicate these complexities to their team and guide the problem-solving process.\n\nThe manager needs excellent problem-solving and communication skills. They need to understand the trade-off between design complexities, operational costs, and ease-of-use. This helps in creating systems that are efficient, user-friendly, and cost-effective.",
|
||||
"links": []
|
||||
},
|
||||
"EY6Hk5wPd9Y_VA1UROk44": {
|
||||
"title": "Technical Debt and Management",
|
||||
"description": "Engineering Managers play a crucial role in managing technical debt. This involves identifying, prioritizing, and tackling issues. It's the manager's job to strike a balance between improving the existing codebase and delivering new features.\n\nAddressing technical debt demands constant vigilance. Key responsibilities include conducting code reviews, advocating for coding standards, and allocating time for refactoring and updates. They face challenges like pushback from stakeholders and proper risk assessment.\n\nSuccess in this area requires a mix of technical knowhow and leadership skills. An effective Engineering Manager maintains open communication about technical debt among team members and stakeholders. They leverage their actions towards ensuring the team's efforts align with the company's goals.",
|
||||
"links": []
|
||||
},
|
||||
"_2xnTKt5yi__jj_WgcLa7": {
|
||||
"title": "Technical Documentation",
|
||||
"description": "An Engineering Manager takes the lead in establishing a practice for creating and maintaining technical documentation. The manager needs to ensure that protocols are followed and the information is consistently up-to-date. Consistent and clear documentation helps the team by reducing misunderstandings and boosting productivity.\n\nThe challenges for an Engineering Manager in this area include ensuring that everyone understands the importance of accurate documentation. Ensuring that documentation is completed regularly and is up-to-date can also be a difficult task. Tackling these challenges requires persuasion, effective communication skills, and the implementation of efficient systems and tools.\n\nThe essential skills in this case are organization, leadership, technical proficiency, and high attention to detail. Managing documentation effectively lays the foundation for smooth technical operations and allows for the development, training, and growth of the team.",
|
||||
"links": []
|
||||
},
|
||||
"40yK6XzI8lSxdiAXxtF75": {
|
||||
"title": "Code Review Best Practices",
|
||||
"description": "An Engineering Manager has the responsibility to guide their team on code review best practices. They not only need to ensure the team is delivering quality code, but also that the process is efficient and educative. This involves creating a culture where constructive feedback is welcomed, and where discussing and learning about the codebase is a part of the daily routine.\n\nChallenges could include conflicts among team members, varying levels of coding skills, or different understandings of code standards. To tackle these, the manager might need to step in and mediate discussions, offer training, or even set up some basic coding standards.\n\nA successful Engineering Manager in this realm balances technical competency with strong communication and diplomatic skills, fostering a team environment where high quality code is a shared achievement.",
|
||||
"links": []
|
||||
},
|
||||
"ikCJ8Ybu2AD1w5VuPNVAO": {
|
||||
"title": "Technical Roadmapping",
|
||||
"description": "As an Engineering Manager, the creation of technical roadmaps forms a pivotal part of your role. Simply put, it's a strategic document that outlines the steps your team needs to take to achieve technical goals. You're responsible for being a vital connection between company-wide goals and your engineering team.\n\nA key challenge is aligning the roadmap with both business requirements and foundational technology needs. This involves clear communication, close collaboration with other departments, and frequent alignment meetings.\n\nSuccess in this aspect requires strong technical knowledge, project management skills, and diplomacy. You need to communicate the roadmap effectively to the team, manage roadblocks, and resource allocation. Remember, a roadmap is not a fixed path but a guide that may need to be adjusted over time.",
|
||||
"links": []
|
||||
},
|
||||
"H0aav5qKDNiNegJOGP2rx": {
|
||||
"title": "Build vs Buy Evaluation",
|
||||
"description": "An Engineering Manager navigates the \"Build vs Buy\" decision with precision. Their main responsibility is to analyze the benefits and drawbacks of developing in-house versus purchasing premade solutions. They must weigh up factors including cost, time, quality, and alignment with their company's long-term goals.\n\nChallenges arise from needing to balance immediate needs with future scalability. This requires a careful understanding of available resources and potential growth. They mitigate this by keeping up-to-date with market trends and technology advancements that could affect their strategy.\n\nA crucial skill for this area is financial and technical acumen, combined with foresight. Engineering Managers must ask critical questions about the total cost of ownership for both options, whether the company has the capable expertise, and whether the solution is future-proof.",
|
||||
"links": []
|
||||
},
|
||||
"d7zMBhMFgY9MwmKC9CVVh": {
|
||||
"title": "Technical Risk Assessment",
|
||||
"description": "An Engineering Manager plays a pivotal role in technical risk assessment, acting as the gatekeeper to foresee and avoid potential dangers. Their key duties revolve around identifying the technical debt, evaluating its potential impact, and laying out choices to mitigate it. They also participate in disaster recovery planning, ensuring the team is prepared to handle any technical issues that might arise.\n\nThe role also presents certain challenges such as keeping up with fast-changing technology trends and anticipating outdated technologies that could pose a risk. To navigate these roadblocks, their approach often involves consistent learning, problem-solving capabilities, and proactiveness.\n\nTo succeed in technical risk assessment, an Engineering Manager requires a combination of technical expertise and adept risk management. They need to have a thorough understanding of their tech stack, the ability to foresee potential issues, and develop foolproof contingency plans.",
|
||||
"links": []
|
||||
},
|
||||
"gAEmpSMvNyjmTa5q9oZSg": {
|
||||
"title": "CI/CD Implementation",
|
||||
"description": "Working with CI/CD implementation, an Engineering Manager ensures fast and efficient production cycles. Key responsibilities include setting up, administering, and optimizing CI/CD pipelines. They oversee the integration of code changes and automate deployment, enabling a streamlined, error-reduced, and faster delivery of software builds.\n\nChallenges they may face include pipeline failure, software bugs, and collaboration issues among team members. To address them, an Engineering Manager employs advanced debugging, clear communication, and proactive guidance.\n\nSuccess in this area requires not only solid technical skills but also a strategic mindset. It requires the Manager to grasp the team's workflow deeply and coordinate each step right from integration to delivery. This approach guarantees a smooth and effective CI/CD process, which underscores overall team performance and output.",
|
||||
"links": []
|
||||
},
|
||||
"bpJPDbifPwS4ScOoATlEI": {
|
||||
"title": "Development / Release Workflow",
|
||||
"description": "Engineering managers are crucial to structuring Development/Release Workflow within a quality and process framework. With the end goal of managing and improving the software quality, they shape and guide the workflow.\n\nTheir key duties involve creating a seamless process from development to release that can be easily understood and used by all team members. They must balance the need for rigorous testing and quality assurance with delivering on schedule to avoid costly delays.\n\nChallenges include ensuring that all workflow steps are followed and troubleshooting any issues that arise. Success in this role requires a strong understanding of software development, attention to detail, excellent time management skills, and the capability to handle unforeseen obstacles with grace.",
|
||||
"links": []
|
||||
},
|
||||
"C2YsaZ32An_UXV8lB7opm": {
|
||||
"title": "Technical Standards Setting",
|
||||
"description": "Engineering Managers play a crucial role in the setting of technical standards. Their key responsibilities include identifying appropriate industry standards, ensuring the team's technical resources align with these standards, and implementing them consistently across all engineering projects.\n\nA common challenge faced by Engineering Managers is sustaining a balance between maintaining high standards and keeping up with the speed of technology innovations. They can address this by staying abreast with the latest technology trends and adjustments in industry standards.\n\nTo succeed in this aspect, an Engineering Manager needs keen attention to detail, ability to research and comprehend complex technical concepts, and strong leadership skills to guide the team in aligning with these standards. Demonstrating flexibility and open-mindedness to change is also a crucial approach in managing evolving technical standards.",
|
||||
"links": []
|
||||
},
|
||||
"sQCLhk__jvbityuuLlxiW": {
|
||||
"title": "Security Best Practices",
|
||||
"description": "As an Engineering Manager, ensuring security best practices is crucial. This involves creating and maintaining secure software infrastructure, and making sure the team is following proper protocols.\n\nResponsibilities include staying updated on latest security trends and threats, applying suitable security measures, and overseeing code reviews. It's also important for the manager to instill a security-minded culture within the team, ensuring developers are aware and attentive to security considerations.\n\nChallenges can emerge from rapidly evolving threats and compliance issues. To overcome these, the manager often needs the ability to anticipate problems and devise effective solutions. Additionally, having strong leadership skills helps in including security practices as a primary concern in development processes. Regular training and updates about the latest security best practices is also an effective strategy to prepare the team to handle potential threats.",
|
||||
"links": []
|
||||
},
|
||||
"q5SJyM1d8cQzzAcR-kotB": {
|
||||
"title": "Testing Strategies",
|
||||
"description": "Testing strategies form a crucial part of an engineering manager's domain. They are responsible for defining the approach that allows quick detection of flaws and ensures the production of quality software products. Their key responsibilities include selecting the proper testing methods, liaising with the development team to ensure adherence to established protocols, and managing resources for efficient testing.\n\nEvery engineering manager faces the challenge of implementing a robust testing strategy while balancing time and resources. To tackle this, they frequently use automated testing tools, risk-based testing, or integrate testing in continuous deployment models.\n\nTo excel in managing testing strategies, an Engineering Manager not only requires a deep understanding of different testing methodologies and tools but also excellent communication skills to ensure every member of the team understands and follows the selected strategy.",
|
||||
"links": []
|
||||
},
|
||||
"o1xPrfg8iNWQpD12xsbQJ": {
|
||||
"title": "Incident Management",
|
||||
"description": "Being an Engineering Manager entails managing unexpected issues, and a key part of this is incident management. Duties include setting up clear protocols for identifying, responding to, and documenting incidents. They ensure all team members know their individual roles and tasks in these processes. A challenging aspect is tackling critical incidents without disrupting regular workflow.\n\nTo turn these challenges into success, the Manager must show a blend of technical acumen and excellent communication skills. They need to create an environment where all team members feel comfortable bringing up problems early. Being responsive, open, and calm under pressure is imperative.\n\nIncident management is a notable area in the quality and process domain for an Engineering Manager. It is vital to maintain efficiency and make sure that every incident becomes a learning opportunity. It's about building a failure-resilient team able to tackle any unexpected issue.",
|
||||
"links": []
|
||||
},
|
||||
"3na5mBIPl5f6mjEzkgD_C": {
|
||||
"title": "Hiring and Recruitment",
|
||||
"description": "Recruiting the right talent is a vital task for an Engineering Manager. It is their responsibility to understand the skill gaps in their teams and identify potential individuals who can fill those gaps. The challenge here is finding the right balance between technical skills and cultural fit.\n\nTo succeed, the manager must have a clear understanding of the company's needs and the projects ahead. They must also know what qualities to look for in candidates. So, they must work closely with HR and use their technical expertise to create effective job descriptions and conduct interviews.\n\nAddressing these duties effectively would ensure that the engineering team is well-equipped with the necessary skills and maintains a healthy, productive work environment.",
|
||||
"links": []
|
||||
},
|
||||
"tPDmXXjvFI_8-MTo_dEUw": {
|
||||
"title": "Team Structure and Design",
|
||||
"description": "Team structure and design weigh heavily on an Engineering Manager's shoulders. Key responsibilities include determining the necessary roles, defining their right fit, and establishing efficient channels of communication. This foundation is fundamental to improving overall productivity and agile adaptability.\n\nChallenges include aligning team design to project demands while balancing individual talent and skill proficiencies. Managers often resolve these issues by identifying their teams' strengths, driving role clarity, and fostering a culture of open, honest feedback.\n\nSuccess in this area requires robust understanding of software development processes, emotional intelligence for effective interpersonal relationships, and strategic planning skill to design adaptable team structures. By dexterously aligning individual strengths to project needs, managers truly extract the maximum potential from their teams.",
|
||||
"links": []
|
||||
},
|
||||
"eJzYnoB6sArLjXRm51cM4": {
|
||||
"title": "Performance Evaluations",
|
||||
"description": "As an Engineering Manager, handling performance evaluations involves providing regular, constructive feedback to team members. An integral responsibility is to assess how well team members are meeting their deliverable goals and contributing to projects. It's crucial to define clear outcome metrics and keep an ongoing dialogue regarding progress.\n\nThe challenge lies in balancing criticism and recognition. It's essential to maintain a fair and unbiased perspective and communicate feedback constructively. A positive strategy is to couple areas of improvement with individual accomplishments.\n\nSuccess in this domain requires strong communication skills, empathy, and a focus on problem-solving instead of fault-finding. By fostering an open and transparent environment where performance-related discussions are encouraged, Engineering Managers can ensure consistent development and growth within the team.",
|
||||
"links": []
|
||||
},
|
||||
"0ULnfq0ZFJXgoLbKM1gxC": {
|
||||
"title": "Mentoring and Coaching",
|
||||
"description": "An Engineering Manager often plays a pivotal role in mentoring and coaching their team. They are responsible for providing regular feedback, advising on professional and technical development, and goal-setting. This involvement helps to cultivate a culture of continuous learning and growth.\n\nThe challenge for Engineering Managers is to strike the right balance between providing support and empowering team members to find their own solutions. It’s also essential to maintain fairness and consistency in their approach to different individuals. This requires strong communication skills, empathy and a good understanding of each team member’s strengths and weaknesses.\n\nEmbracing a coaching mindset, Engineering Managers can help team members to overcome obstacles, develop new skills, and achieve their full potential. This not only benefits the individuals themselves but also enhances the overall performance and output of the team.",
|
||||
"links": []
|
||||
},
|
||||
"fhFSR_N4ZDTHINEinubHG": {
|
||||
"title": "Career Development Planning",
|
||||
"description": "As an Engineering Manager, supporting your team's career development is critical. This requires aligning individual growth with the organization's goals and the team's skill requirements. It's not just about discussing job roles and future positions, but also about fostering long-term learning and professional growth.\n\nChallenges here include finding a balance between the team's current workload and their development needs. Effective managers will work closely with each team member, understanding their career aspirations and identifying the projects, training, and resources needed for them to reach their goals.\n\nThis requires strong communication skills, empathy, and commitment to the team's development. An effective manager must be able to guide their team and ensure they are growing in their careers while simultaneously meeting the company's goals. This not only fuels employees' motivation and satisfaction but also positively impacts the overall team performance.",
|
||||
"links": []
|
||||
},
|
||||
"bx2SMhR58ud45se5dK7qS": {
|
||||
"title": "Delegation",
|
||||
"description": "An Engineering Manager handles delegation by assigning tasks and responsibilities to team members based on their skill levels, strengths, and project needs. They must constantly balance the need to complete tasks efficiently against the need for team development. They face the challenge of assigning right-sized tasks that promote growth without overwhelming their team.\n\nKey responsibilities in this area include discerning which tasks to delegate and to whom, and then clearly communicating expectations. Good delegation also involves tracking progress, providing support, and stepping in when necessary.\n\nSuccess in delegation requires strong communication skills, trust building, and talent recognition abilities. Also, the Engineering Manager must be risk-tolerant. They need to embrace that mistakes might occur and turn them into learning opportunities.",
|
||||
"links": []
|
||||
},
|
||||
"QA5CR5f0geC_RQc_SOK-N": {
|
||||
"title": "Conflict Resolution",
|
||||
"description": "An Engineering Manager often faces conflicts, be it between team members, different projects, or resources. Effective Conflict Resolution is key to keeping the team harmonious and productive. This involves the ability to assess the situation accurately, allowing for all parties involved to voice their concerns and finding a solution that works for all.\n\nIt’s part of the Engineering Manager's responsibilities to maintain a healthy team dynamic, shielding the team from distractions and helping them work together effectively. A key challenge here is balancing the needs and interests of individuals with the goals of the team and the wider organization.\n\nTo succeed, Engineering Managers need strong communication skills, empathy, and problem-solving ability. An open, positive attitude and focus on win-win solutions can help diffuse tensions and foster cooperation instead of competition.",
|
||||
"links": []
|
||||
},
|
||||
"Az9GgkLFoat2t_sYRUBv5": {
|
||||
"title": "Feedback Delivery",
|
||||
"description": "An Engineering Manager plays a vital role in delivering feedback. Constructive feedback reinforces positive behaviors and corrects any missteps, effectively enhancing team dynamics. This leadership responsibility could include making sure the team is aware of their strengths, areas for improvement, and creating a balanced dialogue that encourages growth.\n\nHowever, the challenge lies in presenting criticism without discouraging creativity and innovation. Engineering Managers can address this by framing feedback in a positive manner, and focusing on specific actions instead of attacking personal traits.\n\nLearning to deliver feedback effectively encompasses a suite of skills like empathy, patience, and communication. Applying these skills enables an Engineering Manager to build a culture that supports learning, continual improvement, and ultimately robust product development.",
|
||||
"links": []
|
||||
},
|
||||
"U_oOnDXkCE387r9olvMZB": {
|
||||
"title": "Team Motivation",
|
||||
"description": "For an Engineering Manager, sparking team motivation is paramount. They take the extra step to understand their team members' motivations, whether it's acquiring new skills or delivering high-quality products, and use this understanding to fuel their passion. Manager's key responsibility here is to set clear objectives, provide feedback, and foster a positive work environment.\n\nChallenges may arise when morale dips or burnout creeps in. Successful managers are quick to tackle these issues head-on, employing strategies like team-building activities or one-on-one talks to invigorate their team once more. They foster an understanding, empathetic, and encouraging environment.\n\nSucceeding in motivating a team requires emotional intelligence and strong communication skills. An ability to inspire others and create a vision that the team can rally behind and work towards is crucial to drive team members to go beyond the call of duty.",
|
||||
"links": []
|
||||
},
|
||||
"7PBmYoSmIgZT21a2Ip3_S": {
|
||||
"title": "Trust / Influence Building",
|
||||
"description": "Building trust and influence is crucial for any Engineering Manager. This involves establishing a solid reputation, delivering on promises and being an active listener to your team's ideas and issues. It's a manager's job to ensure there's an open, honest environment that promotes trust. Balancing delegation and taking charge, especially in difficult situations, is key to building influence.\n\nOne challenge in this area is building trust between team members of varying experiences and skills. Managers must not only show the team they're competent, but also that they value everyone's inputs. They can achieve this by promoting inclusivity and praising team contributions regularly.\n\nBeing patient, communicate clearly, and showing empathy are critical skills that can help an Engineering Manager in trust and influence building. By embodying these traits, managers can build a stronger, united, and more effective engineering team.",
|
||||
"links": []
|
||||
},
|
||||
"b3qoH_LuW-Gz4N8WdGnZs": {
|
||||
"title": "One-on-One Meetings",
|
||||
"description": "Engineering Managers play a vital role in conducting one-on-one meetings with their subordinates. Their key responsibilities in these meetings involve understanding the concerns of their team members, giving valuable feedback, and setting up individual growth paths. They also talk about career development and address performance issues.\n\nOne-on-one meetings present challenges, like how to provide negative feedback without demoralizing the employee. Here, the managers have to use diplomacy, constructive criticism, and emotional intelligence. They need to appreciate the good and seek ways to improve the not-so-good.\n\nSucceeding in one-on-one meetings requires active listening skills, empathy, solution-oriented mindset, and the ability to communicate effectively. They need to be approachable, offering a safe space for the employees to voice their issues or apprehensions. Thus, they nurture a positive work environment and foster professional growth.",
|
||||
"links": []
|
||||
},
|
||||
"e0ZuiCoS8sJ0XB1lNiz7_": {
|
||||
"title": "Team Meetings",
|
||||
"description": "An Engineering Manager's role in team meetings is, above all, to guide and inspire the team. They must set the agenda and ensure that all key points are discussed to move projects forward. Clear communication is crucial, as is the ability to listen to the team's feedback and ideas. An open and inclusive environment can help encourage freely sharing thoughts and solutions.\n\nOne of the challenges faced as an Engineering Manager concerns ensuring that everyone's voice is heard, and no time is wasted. They address this challenge with efficient time management and inclusive discussion habits. For instance, the use of meeting timers and round-robin discussion techniques can help.\n\nTo succeed in this aspect, managers need strong organizational and interpersonal skills. They should also have the ability to value different perspectives, fostering a culture of respect and open-mindedness.",
|
||||
"links": []
|
||||
},
|
||||
"gqKEgKjEu5sOf5Gl-HS-j": {
|
||||
"title": "Status Reporting",
|
||||
"description": "Engineering Managers have a key role in status reporting. This involves constantly monitoring projects, addressing bottlenecks, and updating upper management and stakeholders. They ensure that everyone stays informed about project timelines, resource allocation, and development progress.\n\nThe main challenge facing Engineering Managers is to deliver bad news diplomatically. This might involve changes in schedule, budget overruns, or technical challenges. Good communication skills are needed to handle such situations effectively.\n\nTo excel in this aspect, an Engineering Manager needs to have a clear overview of all project statuses and be ready to provide accurate, concise updates. They should also be adept at managing expectations and should be proactive in identifying and addressing potential challenges. In a nutshell, efficient status reporting helps in building trust and promoting transparency in an engineering team.",
|
||||
"links": []
|
||||
},
|
||||
"TVqVlJqegLZRSkwNoHbBf": {
|
||||
"title": "Stakeholder Management",
|
||||
"description": "Stakeholder management is a critical part of an Engineering Manager's role. They must be able to clarify project goals, handle issues and create a shared vision among different stakeholders. Key responsibilities include steering meetings, managing expectations and providing regular progress updates.\n\nOne challenge is that each stakeholder may have different interests and priorities. Balancing these opposing views and reaching consensus can be tough. To handle this, Engineering Managers need to be tactical mediators with strong negotiation skills.\n\nThis role requires a mix of technical and soft skills. They need to understand underlying technologies and projects' unique dynamics. Alongside, strong communication skills to relay technical information in a non-technical way is essential. Good stakeholder management enhances trust and fosters a favorable working relationship among teams.",
|
||||
"links": []
|
||||
},
|
||||
"ZyNbSBd8plAZ5lt5OEUYu": {
|
||||
"title": "Cross-functional Collaboration",
|
||||
"description": "",
|
||||
"links": []
|
||||
},
|
||||
"4v5yLKYVcMh0s7SQuf__C": {
|
||||
"title": "Resource Allocation",
|
||||
"description": "An Engineering Manager juggles various responsibilities, one the most critical being effective resource allocation. This includes assigning the right team members to the right tasks, as well as wisely distributing budget and physical resources. While it's challenging to strike a balance between the needs of the project, the team's capabilities, and budgetary constraints, effective managers employ tools and data analysis to make informed decisions.\n\nFor Resource Allocation, skills such as prediction, foresight, and understanding of team dynamics and capabilities are necessary. It’s crucial to understand potential bottlenecks and plan for unforeseen situations.\n\nEngineering Managers often work closely with stakeholders and teams to regularly review and adjust resource allocation, thus ensuring the team remains on track, projects are delivered on time, and resources are used productively. Regular communication and transparent decision-making processes also boost team morale.",
|
||||
"links": []
|
||||
},
|
||||
"7BcToTqL78QmG4qb43X5Q": {
|
||||
"title": "Sprint Planning",
|
||||
"description": "An Engineering Manager plays a pivotal role in sprint planning. They lead the team in defining the project's scope for the next sprint, taking into account the team's capacity and the project's priorities. They ensure team members understand tasks and their importance.\n\nTheir responsibilities include setting realistic objectives, aligning with stakeholders, and securing required resources. They reconcile the business needs and technical feasibility, ensuring high-value features are developed first.\n\nThe challenges in sprint planning often revolve around resource allocation, maintaining quality, and managing risks. Good communication, leadership, and negotiation skills are required to effectively drive sprint planning. The Engineering Manager must be adept at balancing speed, quality, and the team's capabilities while ensuring alignment with the project's overall goals.",
|
||||
"links": []
|
||||
},
|
||||
"-Qc6E3gkUUonfzifYqeJJ": {
|
||||
"title": "Release Management",
|
||||
"description": "Managing a software release is an essential role of an Engineering Manager. One key responsibility here is to establish deadlines and ensure all project components meet these deadlines. This includes tracking progress and addressing potential or actual delays.\n\nChallenges here can include coordinating with multiple teams and managing changing product requirements. To tackle these, an Engineering Manager should use a clear and organized approach. Maintaining open lines of communication with all stakeholders is vital.\n\nApart from strong leadership skills, an Engineering Manager dealing with release management also needs to have a solid understanding of the software development process. This prepares them to make informed decisions and give pertinent advice which are key to a smooth and successful software release.",
|
||||
"links": []
|
||||
},
|
||||
"mgw6M8I9qy1EoJpJV-gy1": {
|
||||
"title": "Risk Management",
|
||||
"description": "As an Engineering Manager, handling risk management is a significant duty. They are responsible for identifying potential risks in every project aspect and implementing proper measures to reduce these risks. They foresee and evaluate technical difficulties, resource constraints, and schedule overruns to safeguard the team's success.\n\nA common challenge for Engineering Managers is balancing risk mitigation and project progress. Effective strategies such as risk ranking and contingency planning help them keep this balance. Proactive communication with the team and stakeholders is also essential to keep everyone informed about any changes or potential issues.\n\nTo succeed in risk management, Engineering Managers need strong analytical skills, foresight, and decisiveness. These skills enable them to anticipate problems before they arise, make quick decisions, and implement effective risk reduction measures. They must also have good collaborative and communication skills to work with their team and stakeholders.",
|
||||
"links": []
|
||||
},
|
||||
"hH-UDVFlgKoMJcI1ssDFv": {
|
||||
"title": "Dependency management",
|
||||
"description": "Dependency management plays a crucial role in an Engineering Manager's life. They need to understand and manage the dependencies between various tasks in a project. This includes determining what needs to be done first, what tasks depend on others, and what can be done in parallel. This is vital to keep projects on schedule and prevent bottlenecks.\n\nEngineering Managers face the challenge of juggling multiple dependencies at once, in a dynamic environment where priorities can shift rapidly. They use project management tools and methodologies, like Agile or Scrum, to visualize dependencies and manage them effectively. Regular communication with the team and other stakeholders also help to clarify dependencies and make adjustments as needed.\n\nTo excel in this field, Engineering Managers need to be highly organized and detail-oriented. They also need strong problem-solving skills to navigate challenges and keep projects moving smoothly.",
|
||||
"links": []
|
||||
},
|
||||
"n9gvPHn4c1U-l6v-W9v6r": {
|
||||
"title": "Agile methodologies",
|
||||
"description": "An Engineering Manager ensures smooth implementation of Agile methodologies within the team. The manager oversees sprint planning, backlog refinement, and retrospectives for consistent development flow. They have the key role in facilitating communication, fostering a high-performing environment, and encouraging adaptive planning.\n\nThe Engineering Manager faces the challenge of maintaining an Agile mindset even when facing pressures to deliver. They have to ensure team members are motivated, engaged, and productive. This can be handled by adopting feedback-friendly culture and regular knowledge-sharing sessions.\n\nSkills required for an Engineering Manager in handling Agile methodologies include strong leadership, excellent communication, and proficiency in risk management. The manager has to balance the opposing needs of flexibility and stability, always keeping customer satisfaction in perspective.",
|
||||
"links": []
|
||||
},
|
||||
"SuT6q5lMMSyVkadlQp7iU": {
|
||||
"title": "Project Tracking",
|
||||
"description": "An Engineering Manager's role includes ensuring that project tracking is effectively performed. They use various project management tools and techniques to monitor progress, check the alignment with set timelines, and identify potential bottlenecks. This is paramount to meeting deadlines and delivering projects on time.\n\nResponsibilities include updating project statuses, handling the reporting of tasks, and keeping all involved parties informed. Specific challenges might be correctly estimating timelines or handling unexpected changes. Managers solve these by continuously evaluating and updating project plans, bringing more precision in tracking.\n\nSuccessful project tracking requires strong analytical skills, effective communication, and keen attention to detail. Regularly reviewing project progression, adopting feedback and making the necessary adjustments are needed for successful project completion.",
|
||||
"links": []
|
||||
},
|
||||
"PXobPGPgCX3_55w4UtxT9": {
|
||||
"title": "Milestone Management",
|
||||
"description": "Engineering Managers play a crucial role in Milestone Management. They are responsible for setting clear, measurable goals that map out the path to project completion. These milestones are pivotal for keeping the team motivated and the project on track. Challenges in this area include ensuring that milestones are ambitious yet attainable and progressive yet feasible.\n\nAn Engineering Manager combats these challenges by utilizing effective communication and strategic planning. They need to communicate the importance of each milestone, how it fits into the big picture, and the consequences of not meeting them.\n\nStrategic planning is another vital approach. It includes breaking down complex tasks into smaller, manageable ones and scheduling them accurately. This requires a balance of technical understanding, project management skills, and team insights.",
|
||||
"links": []
|
||||
},
|
||||
"C-lJJSjT8Cxw_UT3ocFsO": {
|
||||
"title": "Scope Management",
|
||||
"description": "As an Engineering Manager, scope management is crucial because it ensures all work required, and only the work required, is included in the project. Their key role involves defining the scope, focusing on the project requirements, and acknowledging potential scope creep scenarios which may deviate the project from its objectives.\n\nThe challenges faced often include managing the team's expectations and time, while striving to deliver a product that meets client's specs on time & budget. They need to delegate tasks effectively and ensure everyone sticks to the agreed scope.\n\nTo excel in scope management, one requires assertiveness, excellent communication and interpersonal skills and the knack for anticipating potential hurdles. A proficiency in risk management also plays a crucial role in preventing scope creep.",
|
||||
"links": []
|
||||
},
|
||||
"QWO5QFS7kXwfu3aa8IiRt": {
|
||||
"title": "Timeline Estimation",
|
||||
"description": "Timeline estimation is a vital part of an Engineering Manager's role. Typically, they'll leverage their experience, industry knowledge, and sometimes, gut feeling, to envisage a project's duration. They are responsible for considering factors such as workload, complexity, team size, and risks to determine a realistic timeline.\n\nThey often face challenges in ensuring that timelines are accurate and achievable. This can be from uncertain project requirements or unforeseen obstacles. To combat these, a good approach is to use methods like PERT or 'Three-point estimation' which factor in the best, worst and most likely scenarios.\n\nTo thrive in timeline estimation, Engineering Managers need a fine balance of technical depth, data analysis skills, probability knowledge, and communication proficiency. Robust project management tools to visually map progress can also be invaluable.",
|
||||
"links": []
|
||||
},
|
||||
"Wd8FCEaGZBTvsD-k4t0r4": {
|
||||
"title": "KPI Definition",
|
||||
"description": "An Engineering Manager is pivotal in the process of defining key performance indicators (KPIs) for a project. They identify the crucial metrics that reflect success and are aligned with the project goals. To accomplish this, they work closely with their team and other stakeholders, clarifying the key outcomes that matter most.\n\nThe definition of KPIs can be challenging due to the potential range of metrics available. The Engineering Manager must strike a balance between choosing relevant KPIs and avoiding those which may inflate success results artificially. They address this challenge by focusing on KPIs that accurately measure performance and drive improvement.\n\nStrong analytical skills, critical thinking and a firm understanding of their team's capabilities and project goals are crucial for an Engineering Manager to succeed in this aspect. Continuous evaluation and flexibility in adapting the KPIs are also imperative.",
|
||||
"links": []
|
||||
},
|
||||
"idd92ZTBVUzptBl5jRdc3": {
|
||||
"title": "Velocity Tracking",
|
||||
"description": "An Engineering Manager plays a critical role in managing project velocities. They are responsible for understanding team pace and utilizing this data to predict project completion times. This not only assists in setting realistic expectations but also in resource allocation.\n\nA challenge they face is ensuring the team maintains a steady pace without burning out. It's crucial to strike a balance between pushing the team and understanding their fatigue limits. Misinterpreting velocity data can lead to overpressure or sub-optimal delivery times.\n\nTo navigate this, the manager needs to be skilled at interpreting data and managing people. Clear communication with staff about expectations, combined with careful monitoring of pace, helps maintain a healthy velocity. They need to approach the task with a blend of empathy, analytical thinking and strategic planning.",
|
||||
"links": []
|
||||
},
|
||||
"ZWWsuFm_G4kvvl_cv8l_t": {
|
||||
"title": "Quality Metrics",
|
||||
"description": "Quality metrics are a crucial part of an Engineering Manager's role in project management. The responsibility here is two-fold: choosing the right metrics and interpreting them correctly for making data-driven decisions. Metrics like defect density, test pass rate, code review coverage, and more, can provide powerful insights into a project's health.\n\nEngineering Managers might face challenges in selecting relevant metrics that would give a true measure of quality. This problem is solved by aligning the metrics with project goals and periodically re-evaluating them.\n\nBeing successful in this aspect requires an understanding of data analysis and a keen eye for detail. More importantly, an open-minded approach to consider all potential issues is beneficial. After all, quality metrics function best when they not only validate success but also unearth hidden problems.",
|
||||
"links": []
|
||||
},
|
||||
"KPDHk7tl_BnIj_obnq3Kl": {
|
||||
"title": "Team Health Metrics",
|
||||
"description": "Team health metrics are pivotal for an Engineering Manager as they provide insights into team performance, morale, and overall effectiveness. As a manager, it's crucial to regularly track these metrics, like productivity rates, team morale, and code quality, and to address any issues promptly.\n\nManagers face the challenge of balancing the quantitative data with qualitative observations. Not all issues are reflected in numbers, so managers need a holistic view of the team. Measures like team discussions, one-on-one meetings, or anonymous surveys can be beneficial.\n\nEffective managers cultivate an open, honest culture where team members feel comfortable sharing concerns. This requires good interpersonal and communication skills. Top-tier managers are proactive, they don't wait for visible cracks before checking on their team's health. They keep their finger on the pulse, always working towards nurturing a high-performing, harmonious team.",
|
||||
"links": []
|
||||
},
|
||||
"g9WWa50V8ZbhIJgBRx0Nd": {
|
||||
"title": "Project Postmortems",
|
||||
"description": "Project postmortems are a crucial part of an Engineering Manager's role in project management. They allow the manager to evaluate a project after it's completed to understand what went well and what needs improvement. As a leader, the Engineering Manager typically steers this process, encouraging team members to discuss their experiences and draw valuable lessons.\n\nA primary challenge is ensuring that postmortems are constructive, not blame-seeking. They need to encourage transparency amongst the team. This calls for a balanced and diplomatic approach from the manager. By promoting an open environment and focusing on lessons learned rather than individual mistakes, Engineering Managers can turn postmortems into a positive and enriching experience.\n\nDoing successful postmortems requires good communication and analytical skills. The manager must distil complex issues into easy-to-understand takeaways that can guide future projects. The ultimate goal is continuous improvement, and a good postmortem is a stepping stone towards that.",
|
||||
"links": []
|
||||
},
|
||||
"nC5dfGlxbLoXUAp2u-6Gl": {
|
||||
"title": "Product strategy alignment",
|
||||
"description": "For an Engineering Manager, aligning product strategy requires strong tech understanding and the ability to connect it with business needs. They play an essential role in transforming the company's goals into a clearly defined product roadmap and help their team focus on what’s crucial for the product's success.\n\nTheir key responsibilities include engaging in cross-functional collaboration with product teams, understanding customer needs, and ensuring the tech team is building a product that aligns well with the company’s strategy. They also need to ensure ongoing alignment as products evolve and business goals change.\n\nThe major challenge faced in ensuring product strategy alignment includes maintaining a strong connection between engineering and non-engineering teams. To address this, they have to foster open communication, work closely with product managers, and ensure everyone understands the company’s strategic goals.",
|
||||
"links": []
|
||||
},
|
||||
"vhOHvfF_lfQrrOK6sGLTY": {
|
||||
"title": "Business Case Development",
|
||||
"description": "An Engineering Manager often takes on the responsibility of Business Case Development. This means they analyze and present possible outcomes of a project or decision. It's essential for them to understand the business side, not only the technical side.\n\nWhile it can be challenging, a proper business case helps guide investments. The manager must address all crucial aspects: costs, benefits, risks, and timelines. They need to present compelling reasons to take on a project to stakeholders.\n\nTo succeed, they need excellent analytical and communication skills. Understanding how decisions impact their team and business is paramount. They should also be able to clearly explain their findings to both technical and non-technical stakeholders.",
|
||||
"links": []
|
||||
},
|
||||
"XinUWPahOdufmLYcEwMj_": {
|
||||
"title": "ROI analysis",
|
||||
"description": "An Engineering Manager leverages ROI (Return on Investment) analysis to ensure strategic objectives align with financial viability. They analyze projected costs and benefits related to engineering projects. Their key responsibilities include identifying potential risks and calculating the profitability of various alternatives based on expected returns.\n\nConducting an ROI analysis can pose challenges, including acquiring accurate data and quantifying soft benefits. An Engineering Manager may address these by systematic data gathering and using structured frameworks for quantification.\n\nSuccess in ROI analysis requires skills in financial literacy, critical thinking, and data interpretation. A proactive approach, coupled with a comprehensive understanding of the business, allows Engineering Managers to effectively evaluate the economic impact of engineering decisions.",
|
||||
"links": []
|
||||
},
|
||||
"P2gIOt-i0sQEOMBo-XjZO": {
|
||||
"title": "Market awareness",
|
||||
"description": "An Engineering Manager needs to have both technology and market awareness. By understanding the market trends, they can lead the team towards developing products or features that meet client needs and stand out from the competition. This involves close collaboration with the marketing, sales, and product management teams to incorporate market feedback into the engineering process.\n\nThe challenge often lies in balancing market demands with technical feasibility and team capacity. An effective approach is to maintain open communication channels with all stakeholders involved and conduct regular market trend analysis.\n\nTo do this job effectively, an Engineering Manager needs good analytical, communication and decision-making skills. They should also have the ability to grasp new market trends quickly and synthesize this information into actionable insights for their team.",
|
||||
"links": []
|
||||
},
|
||||
"76GjwwEYaEX_kh02OSpdr": {
|
||||
"title": "Competitive Analysis",
|
||||
"description": "An Engineering Manager uses competitive analysis for strategic thinking in various ways. They use it to understand the strengths and weaknesses of their own team and products compared to their competitors. This helps them pinpoint areas for improvement and innovation. Also, it guides them in making decisions about resource allocation, project prioritization, and technology choices.\n\nTheir key responsibility in this area is to ensure the team stays abreast of industry trends. They must create a strong competitive stance in the areas they are lagging. They face challenges when there's limited information about the competition or rapid changes in the market landscape.\n\nTo succeed, Engineering Managers need good analytical and research skills. They should have the ability to use different tools and methods for gathering and analyzing data. They also need strong decision-making ability to interpret findings and create action plans based on them.",
|
||||
"links": []
|
||||
},
|
||||
"oqjr26B27SHSYVQ4IFnA1": {
|
||||
"title": "Budget Planning",
|
||||
"description": "The role of an engineering manager extends beyond engineering tasks to include budget planning. Their duties include creating and overseeing the financial plan for their team. They need to estimate costs and ensure spending stays within set limits.\n\nThis aspect often introduces challenges - it's tricky to balance the optimal resource allocation, project expenses and salary provisions. Yet, successful managers navigate this by being forward-thinking, data-driven and having consistent communication with team members and finance departments.\n\nTo lead in this area, an engineering manager should hone skills in risk management, forecasting, and analysis. They need to understand and predict the financial impact of decisions, providing strategic input that ensures the department runs smoothly and cost-efficiently.",
|
||||
"links": []
|
||||
},
|
||||
"iwwxnSVvCmZ57stXwzk8G": {
|
||||
"title": "Resource forecasting",
|
||||
"description": "Resource forecasting is a practical tool for an Engineering Manager. It involves predicting future resource needs to ensure smooth execution of tasks. A manager's responsibility here is to avoid over-hiring or overspending while ensuring a project progresses efficiently.\n\nForecasting effectively calls for knowledge of project timelines, team strengths and a keen eye on budget constraints. Furthermore, it involves balancing team strengths and task allocation, while being mindful of possible turnovers or leaves.\n\nGood resource forecasting can be challenging as it often involves making educated guesses. However, successful managers can rely on data-driven decisions, invest in forecasting tools, gain insights from past projects, and regularly review plans to manage available resources and keep their engineering teams running smoothly.",
|
||||
"links": []
|
||||
},
|
||||
"rbhZJZtRV1ZZ5QaYW77ry": {
|
||||
"title": "Cost Optimization",
|
||||
"description": "As an Engineering Manager, cost optimization plays a crucial role in financial management. They have to balance budget constraints with project goals, making smart decisions about resource allocation to ensure maximum efficiency. This includes optimizing software licenses, cloud services, hardware, and labor costs. Careful planning and monitoring is necessary to avoid cost overrun.\n\nChallenges in cost optimization can stem from unexpected expenses, like an unforeseen technical problem. Managers can tackle this by proactively identifying risk factors and establishing contingency plans. Regular reviews of expenditure can also help in spotting any anomalies quickly.\n\nTo succeed in this aspect, Engineering Managers need good analytical skills and an understanding of cost structures. They should be capable of making cost-benefit analyses, assessing ROI, and applying these insights in strategic decision-making. It's about spending smart, not just spending less.",
|
||||
"links": []
|
||||
},
|
||||
"Imgt669vbUT_Iec2o4Gvt": {
|
||||
"title": "Vendor Management",
|
||||
"description": "Vendor Management involves negotiating contracts, improving value procurement, and maintaining effective communication. An Engineering Manager plays a key role in this aspect. Their responsibilities include choosing credible vendors, tracking vendor performance and ensuring that their products or services are of high quality.\n\nManaging vendor relationships can be a challenge. However, it's essential in ensuring the organization gets the best possible deal. The Engineering Manager can overcome these challenges with excellent communication, negotiation skills, and an understanding of the market trends.\n\nFor successful vendor management, an Engineering Manager needs skills in communication, analytics and financial planning. By mastering these areas, they can secure the best vendors, foster good relations, and ultimately ensure the successful delivery of projects. This can also result in cost effectiveness and long-term business stability.",
|
||||
"links": []
|
||||
},
|
||||
"KA0y6KdVTjJFeX3frHUNo": {
|
||||
"title": "Company Culture",
|
||||
"description": "An Engineering Manager plays a vital role in shaping and fostering the company culture. It's their task to ensure the culture aligns with the company's values and promotes a positive working environment. Healthy company culture can contribute to higher employee satisfaction, improved productivity, and lower turnover rates.\n\nThe main challenge in this respect is to maintain compatibility between the existing culture and the rapid technological changes. The Engineering Manager should lead by example and reinforce the desired attitudes and behavior.\n\nTo make this effective, strong communication and interpersonal skills are a prerequisite. An Engineering Manager should, therefore, be approachable, transparent, and solicit feedback to continuously improve the work environment and uphold a vibrant company culture.",
|
||||
"links": []
|
||||
},
|
||||
"tt02qGHSn4fPbpboZ1Ni_": {
|
||||
"title": "Change management",
|
||||
"description": "Engineering Managers play a significant role in change management. They are responsible for implementing new processes and technologies while ensuring minimal disruption. One of the challenges they face is managing the human side of change. This involves addressing employee fears and resistance to avoid a drop in productivity.\n\nTo successfully navigate change, Engineering Managers should use their keen understanding of the organization and its dynamics. They need to balance speed of implementation with the need for buy-in from all stakeholders. This takes strong communication skills, empathy, and effective planning.\n\nIn all, change management is vital in an engineering team. It allows them to adapt to new situations, keep up with industry trends, and continually improve their processes and outcomes. The Engineering Manager's skill in this area is key to the team’s success and resilience.",
|
||||
"links": []
|
||||
},
|
||||
"mjMRNhPkeb4lEZXBb8Iot": {
|
||||
"title": "Organization structure",
|
||||
"description": "An Engineering Manager must understand and navigate the organization structure with ease. As a key responsibility, they need to know the roles, responsibilities, and relationships of various teams and individuals within the organization. This awareness can aid in quality cross-functional collaboration and effective decision making.\n\nChallenges may arise when there are changes in organizational structure, causing shifts in roles and responsibilities. Addressing this would involve frequent communication and adapting to the changes quickly.\n\nTo be successful, the Engineering Manager needs excellent communication skills and the ability to foster strong relationships. An understanding of the organization's hierarchy and dynamics is crucial as well, to ensure the smooth flow of operations and project progressions.",
|
||||
"links": []
|
||||
},
|
||||
"Zoz01JcNU69gr95IcWhYM": {
|
||||
"title": "Politics navigation",
|
||||
"description": "Engineering Managers have to skillfully navigate politics in any organization. Their goal here is to understand relationships, power dynamics, and informal networks that govern how things work. Politics navigation is pertinent to minimizing conflicts, maximizing support for initiatives, and achieving team goals smoothly.\n\nIdentifying and managing politics often falls on the shoulders of Engineering Managers. They need to maintain a delicate balance between individual team members' motivations and the overarching objectives of the organization. This requires tact, diplomacy, and effective communication.\n\nThe challenge lies in keeping a neutral stance yet effectively navigating these politics without compromising on the team's morale or the project outcomes. Hence, an Engineering Manager must exhibit strong negotiation skills, strategic thinking, and emotional intelligence to deal with these office politics successfully.",
|
||||
"links": []
|
||||
},
|
||||
"Hb_rZe4k37Rr0enSh7woV": {
|
||||
"title": "Cross-department collaboration",
|
||||
"description": "Cross-department collaboration is crucial for an Engineering Manager. They are responsible for coordinating with teams outside their department to align goals, synchronize work, and facilitate project completion. This requires well-honed communication skills, efficient leadership tactics, and effective collaboration strategies.\n\nChallenges may arise due to departmental silos, different priorities or workflow disparities. To address these issues, the Engineering Manager should promote open dialogue, ensure mutual understanding of shared objectives, and create clear workflows.\n\nTo excel in cross-department collaboration, a holistic understanding of the entire business is needed. The ability to advocate for the needs of the Engineering Team while understanding the requirements of other departments creates a balanced approach that aids in achieving the organizational objectives.",
|
||||
"links": []
|
||||
},
|
||||
"h7gEQNbGiabDA1q1Bk_IB": {
|
||||
"title": "Emotional Intelligence",
|
||||
"description": "Emotional intelligence is crucial for an Engineering Manager. It helps them understand team dynamics, enhances communication, and strengthens relationships. Their main responsibilities include recognizing team members' emotions, gauging their reactions appropriately, and managing their responses effectively.\n\nEngineering Managers often face challenges in dealing with various personalities within a team. By applying emotional intelligence, they can navigate these difficulties, resolve conflicts, and maintain a positive working environment. Their challenge is to balance their own emotions while addressing those of their team.\n\nSuccess in this aspect requires strong listening skills, empathy, and patience. Engineering Managers also need to continuously improve their emotional intelligence through self-reflection and seeking feedback. This helps them foster a team environment where everyone is understood and valued.",
|
||||
"links": []
|
||||
},
|
||||
"ZuZuzwy-Frsn_PFJZVuAQ": {
|
||||
"title": "Defining and Enforcing Values",
|
||||
"description": "An Engineering Manager plays a critical role in defining and enforcing the values of the team they lead. They're responsible for setting the tone for a culture where these values are understood and practiced by all members. They will often work hand-in-hand with HR and leadership to craft a set of values that align with the broader organization's vision and purpose.\n\nEnforcing these values, however, can present a challenge. Managers will have to practice diplomacy and employ good judgment to ensure that the values are not just stated but also integrated into the work life. This could involve training, communication, and in some cases, conflict resolution.\n\nTo succeed in this area, Engineering Managers need strong communication skills, a fair bit of wisdom, and a dedication to consistency. They must be able to articulate the importance of these values and why they matter to the team's work and to the wider business.",
|
||||
"links": []
|
||||
},
|
||||
"8Nro6PTkEkNugYBjQfJ6O": {
|
||||
"title": "Team Traditions and Rituals",
|
||||
"description": "As an Engineering Manager, fostering positive team traditions and rituals is essential for a healthy team culture. They often organize and participate in these traditions to build camaraderie and morale. These can include activities such as daily stand-ups, team lunches, code reviews, or even celebrating personal achievements.\n\nThe manager has to consider the interests and cultures of their team members when creating these traditions. The aim is to create inclusivity, promote collaboration, and ensure everyone feels valued.\n\nDeveloping team rituals can be challenging as not everyone may be receptive to the same practices. The manager has to strike a balance, soliciting feedback, and being flexible to ensure these practices are positively impacting teamwork and productivity. The main skill here is effective communication and management skills.",
|
||||
"links": []
|
||||
},
|
||||
"Vb3A4a-UpGTAEs-dVI66s": {
|
||||
"title": "Recognition programs",
|
||||
"description": "Engineering Managers play a vital role in establishing and executing recognition programs in team culture. They understand the importance of acknowledging their team's contributions and achievements. As such, their main responsibility is designing and implementing effective recognition programs that motivate and inspire the team.\n\nOne challenge they face in this role is ensuring genuine and inclusive recognition. They tackle this by regular feedback sessions, timely appreciation, and personalized recognitions. They also need to balance recognitions between small daily wins and significant achievements.\n\nSuccess in this role requires a keen understanding of the team's work and an empathetic approach. Trust-building and communication skills are also necessary to foster a sense of appreciation within the team. Engineering Managers must create spaces where everyone feels their work is valued.",
|
||||
"links": []
|
||||
},
|
||||
"LE3ykySYFL23KvuwxeBaR": {
|
||||
"title": "Social connections",
|
||||
"description": "Creating and maintaining social connections within a team is a key focus for an Engineering Manager. It's their role to facilitate an environment that encourages bonding, which often involves organizing team-building events or casual gatherings.\n\nThey face challenges like remote work preventing face-to-face interaction, and cultural or personality differences causing disconnect. To address these, they may use digital tools for virtual meetups, or implement diversity and inclusion training.\n\nTheir success in this aspect requires strong interpersonal and listening skills, empathy, and thoughtfulness. It helps to understand team dynamics and individual personalities. The aim is to build a team whose members know, trust, and respect each other, fostering a more collaborative and effective work culture.",
|
||||
"links": []
|
||||
},
|
||||
"6iM0n4faMNhk4mezS9AcG": {
|
||||
"title": "Inclusive environment creation",
|
||||
"description": "Creating an inclusive environment is certainly a challenge for an Engineering Manager. This task involves nurturing a culture where all individuals are respected, appreciated, and valued for their uniqueness. It’s central to breaking down barriers, encouraging innovative thinking and taking advantage of diverse talents.\n\nThe Engineering Manager's responsibilities here include establishing and enforcing, clear guidelines for equality and diversity. They should facilitate open communication, recognise individual contributions, and set the tone for a respectful workspace. To address challenges, they must address biases, promote cultural understanding, and proactively work towards eliminating discrimination.\n\nSuccessful navigation of this aspect requires empathy, strong leadership, and excellent communication skills. The manager must foster an open-minded culture, promoting understanding and acceptance of all team members' diversity.",
|
||||
"links": []
|
||||
},
|
||||
"njqjYPMQK3nGYtqHzUylo": {
|
||||
"title": "Innovation fostering",
|
||||
"description": "Engineering managers play a vital role in fostering innovation in the engineering culture. They set the tone by creating an environment where unique ideas are welcomed, and risk-taking is encouraged. Giving team members the freedom to experiment and learn from failures is crucial in sparking innovation.\n\nKey responsibilities include providing resources, time, and space for creative thinking, and recognizing innovative efforts. Regular brainstorming sessions and workshops can also encourage creativity and innovation.\n\nThe challenges are many, such as balancing between innovation and meeting project deadlines. To address this, setting clear innovation goals and incorporating them into the workflow could help. Other essential skills include excellent communication, empathy, and leadership to motivate and guide their teams towards innovative solutions.",
|
||||
"links": []
|
||||
},
|
||||
"aeD-kBZEr1NHFtAD8yHI_": {
|
||||
"title": "Learning culture development",
|
||||
"description": "As an Engineering Manager, fostering a learning culture in the team is a notable aspect of their role. This involves creating an environment where team members are comfortable asking questions and making mistakes, seeing them as opportunities for learning and growth. The manager facilitates this by promoting continuous learning opportunities like webinars, workshops, and online classes.\n\nOne challenge they might face is resistance to change or learning new skills. To address this, they should demonstrate the value and importance of continuous learning. Show how it leads to improved performance and opens up new opportunities.\n\nTo succeed, an Engineering Manager needs effective communication and leadership skills. They need to set clear expectations, provide positive reinforcement, and offer feedback to guide their team's learning and skill development.",
|
||||
"links": []
|
||||
},
|
||||
"74-7hDXaBVXYo6LJdgac_": {
|
||||
"title": "Knowledge sharing practices",
|
||||
"description": "An Engineering Manager drives knowledge sharing practices within an engineering culture. Ensuring his team is updated with recent tech advances and system upgrades is one of his key responsibilities. Conducting regular workshops, brainstorming sessions, organizing 'Tech-Talks' proves essential in maintaining a consistent knowledge flow.\n\nChallenges often arise in the form of team members being reluctant to share their expert knowledge, fearing it might minimize their value. To overcome this, the engineering manager should promote a supportive environment where every member understands the value of collective growth.\n\nTo succeed, the manager must display great communication skills, active listening, and respect for everyone's ideas and insights. An open and supportive environment encourages everyone to participate actively, leading to a thriving engineering culture.",
|
||||
"links": []
|
||||
},
|
||||
"Cq0OFaWqSRathZO-bxBrP": {
|
||||
"title": "Technical excellence mindset",
|
||||
"description": "An Engineering Manager plays a vital role in promoting a technical excellence mindset. Their key responsibility is to foster an environment where the team constantly challenges the status quo and seeks ways to improve their technical skills and knowledge. This requires creating an atmosphere that values continuous learning, encourages innovation, and rewards creative problem-solving.\n\nThe challenge lies in maintaining this mindset while also meeting project deadlines and business objectives. Striking a balance between fostering technical excellence and delivering quality output on time is crucial. The manager addresses this by breaking down complex technical tasks into achievable goals that also offer learning experiences.\n\nSkills such as leadership, efficient communication, problem-solving, and goal-oriented thinking are needed to succeed in instilling a technical excellence mindset. The manager needs to lead by example, continuously improving their own skills and inspiring their team to do the same.",
|
||||
"links": []
|
||||
},
|
||||
"fYkKo8D35AHd8agr3YrIP": {
|
||||
"title": "Blameless Post-mortems",
|
||||
"description": "An Engineering Manager plays a key role in facilitating blameless post-mortems. They bring teams together after incidents to dissect what went wrong, ensuring the main goal is learning, not pointing fingers.\n\nThe manager is responsible for promoting a no-blame culture. They ensure everyone opens up about their actions without fear or guilt. From this, they derive measures to stop similar incidents from happening. The manager thus carries the mantle of turning unfortunate mishaps into opportunities for team growth.\n\nChallenges include overcoming the often human instinct to assign blame. To succeed, managers need astute conflict resolution, good listening skills, and a keen understanding of the engineering systems in play. The goal is improving systems, based on learnings, not pinpointing individual mistakes.",
|
||||
"links": []
|
||||
},
|
||||
"g9FvFKC715tZL2ZGlPl3N": {
|
||||
"title": "Bias Recognition / Mitigation",
|
||||
"description": "An Engineering Manager shoulders the responsibility of shaping a team culture that empowers everyone equally. Recognizing and mitigating bias is both a pivotal and challenging part of this role. Ensuring that decisions aren't tainted by personal biases averts, for instance, unjust promotions or assignments.\n\nEngineering Managers must remain receptive to feedback, acting upon it to uproot hidden biases. Here, communication skills, especially in conflict resolution, come in handy. A manager may also instigate diverse recruitment practices and training sessions to promote an understanding of bias.\n\nThe challenge lies in continuously maintaining awareness of personal blind spots and subconscious preconceptions. Regular introspection and seeking others' viewpoints can help a manager address this. In essence, it's about urging constructive change while fostering a culture that values fairness and inclusion.",
|
||||
"links": []
|
||||
},
|
||||
"Xaeb67Nqdi0kwvehQUYeJ": {
|
||||
"title": "Emergency protocols",
|
||||
"description": "An Engineering Manager plays a crucial role in creating and enforcing emergency protocols during incident responses. This involves planning and implementing strategies to minimize downtime and maintain system integrity. As a part of their key responsibilities, they are required to ensure the team responds swiftly, efficiently, and calmly in emergency situations. This often involves staff training, simulations, and debriefings.\n\nEngineering Managers often face the challenge of ensuring efficient communication during a crisis. They address this by implementing clear communication channels and protocols. They also work to maintain a balance between rapid response and thorough analysis.\n\nTo succeed in managing emergency protocols, the Engineering Manager needs excellent crisis management skills and a calm demeanor. An efficient approach would involve regular protocol reviews, consistent training and maintaining up-to-date backups for critical system components.",
|
||||
"links": []
|
||||
},
|
||||
"LQ3YfAgJ4UaDgtnN-cMht": {
|
||||
"title": "War Room Management",
|
||||
"description": "Managing a War Room during an incident response requires the Engineering Manager to harness effective cross-functional communication skills. They coordinate with various teams, aligning everyone towards resolving the issue in the fastest possible way. At the same time, they minimize the impact on services and maintain transparency with stakeholders about progress.\n\nA key responsibility of the Engineering Manager is to ensure that each War Room participant has a clear role and understands it. This includes assigning who will detail the incident, who will analyze and fix the issue, and who will communicate with impacted stakeholders.\n\nChallenge in War Room management can arise due to various technical difficulties or miscommunication. These challenges are best tackled by the Engineering Manager through regular reviewing and practicing of War Room procedures and by continuing education on the latest incident handling strategies.",
|
||||
"links": []
|
||||
},
|
||||
"irEwTIubCjORnlH27QpEo": {
|
||||
"title": "Stakeholder Communication",
|
||||
"description": "An Engineering Manager plays a crucial role in incident response, especially when managing stakeholder communication. They are responsible for maintaining open, honest, and constant communication with all relevant parties. Ensuring that stakeholders are up-to-date with the situation, planned actions, and progress reassures them about the situation's management.\n\nThe main challenge lies in providing accurate and timely updates without causing panic. Effective communication can be complicated by rapidly changing circumstances and varying stakeholder interests and needs. The Engineering Manager must balance the need for transparency, the sensitivity of information, and maintaining trust.\n\nTo succeed, the Engineering Manager needs excellent communication skills. It's equally important to understand technical details and translate them into non-technical terms. A calm demeanor and crisis management skills are invaluable when dealing with high-pressure situations. Clear guidelines and practices around stakeholder communication in crisis situations can also be beneficial.",
|
||||
"links": []
|
||||
},
|
||||
"8zyK34SwHry2lrWchw0KZ": {
|
||||
"title": "Post-incident analysis",
|
||||
"description": "After any technical incident, Engineering Managers shoulder the vital task of leading post-incident analysis. This involves in-depth evaluation of what caused the incident, how it was resolved, and ways to prevent recurrence. It’s through this process that teams identify system flaws and address them promptly.\n\nCrafting clear, concise incident reports that capture key insights is one of their key responsibilities. These documents help the team understand the technical bottlenecks and improve the incident response strategy over time.\n\nThe main challenge faced by Engineering Managers during post-incident analysis is ensuring thoroughness while avoiding blame culture. Striking a balance requires sharp analytical skills, solid leadership, and open communication. It's not just about fixing mistakes but learning and growing from them as a team.",
|
||||
"links": []
|
||||
},
|
||||
"2fHcb1dAnf34APCAAlwnR": {
|
||||
"title": "Service Recovery",
|
||||
"description": "Service recovery is a critical responsibility for an Engineering Manager. They lead their teams through restoring and maintaining essential services following any disruption. This could be due to a server failure, software crashes, or unexpected logical errors.\n\nAs this role requires swift and effective actions, Engineering Managers often face challenges in balancing resources, troubleshooting, and maintaining good communication with stakeholders. The ability to stay calm under pressure, effective problem-solving skills, and strong communication are key to succeeding in this area.\n\nTo handle these challenges, they define recovery plans, protocols, and procedures, coordinate with respective teams, manage necessary resources and, most importantly, learn from each incident. Improving over time helps prevent similar future incidents, ensuring the smooth running of the service.",
|
||||
"links": []
|
||||
},
|
||||
"2RwpGPegD2GyiiV6SVbbM": {
|
||||
"title": "Contingency planning",
|
||||
"description": "An Engineering Manager's role in Contingency Planning is essential for effective Risk Mitigation. They have to identify potential issues that could disrupt projects and develop back-up strategies to manage these risks. These could range from resources availability to unplanned absences of team members, among other things.\n\nA significant challenge they might encounter is foreseeing all potential risks, as some may be unpredictable. Hence, their planning should be as flexible as possible. Regularly updating the contingency plan, learning from past mistakes and near misses, and being adaptable are vital to handle these challenges.\n\nTo succeed, Engineering Managers require strong analytical skills to evaluate the potential impact of risks accurately. Also, effective communication skills are necessary for steering the team towards the implemented contingency plan when needed.",
|
||||
"links": []
|
||||
},
|
||||
"KOTzJ8e7mc0wmF46vrj3I": {
|
||||
"title": "Disaster recovery",
|
||||
"description": "An Engineering Manager plays a critical role in disaster recovery planning and execution. They ensure that a robust strategy is in place to minimize the impact of mishaps on the engineering operations, such as hardware failure or data loss.\n\nOne key responsibility is to train the team to handle emergencies, ensure backup systems are operational, and validate the recovery plan regularly. The staggering challenges posed by potential system failure or data breaches demand a preemptive approach and systematic planning.\n\nSucceeding in this aspect requires an understanding of system architecture and good knowledge on backup technologies. Communication skills are also vital to keep the team prepared and coordinated in case of a disaster. Hence, an Engineering Manager must be proactive and strategic in being ready for any disastrous situation.",
|
||||
"links": []
|
||||
},
|
||||
"v6N7BH0B55gX0oNXb55D7": {
|
||||
"title": "Business continuity",
|
||||
"description": "An Engineering Manager plays a fundamental role in establishing and maintaining business continuity. Their key responsibilities include forming strategies to ensure continuous service delivery and minimize downtime during unforeseen circumstances. They are heavily involved in the creation and maintenance of disaster recovery plans, as well as testing their effectiveness.\n\nChallenges faced could be situations like system failures, natural disasters, cyber-attacks etc. Addressing these requires effective risk analysis, strategic decision-making and coordination with other teams. Successful risk mitigation calls for vigilant monitoring of systems and prompt action during contingencies.\n\nThus, apart from strong technical understanding, effective communication, foresight, and quick decision-making abilities are essential skills for an Engineering Manager to ensure business continuity. The ultimate goal is to safeguard the company's technologies and services from substantial operational interruptions.",
|
||||
"links": []
|
||||
},
|
||||
"FNp4-RgPvfC76pJKjX56a": {
|
||||
"title": "Security incident handling",
|
||||
"description": "An Engineering Manager plays a pivotal role in security incident handling. Key responsibilities include establishing protocols for incident response and ensuring the team is well-prepared to manage any security breach. The manager needs to promote a culture of security awareness, regularly updating the team on potential risks and implementing security best practices.\n\nChallenges may include staying up-to-date with emerging threats and utilizing the appropriate technologies to defend against them. Crafting a strong incident response strategy can be complex, but a good manager will use their expertise to overcome these hurdles, adapting their approach as necessary.\n\nKey skills include maintaining a level head under pressure, strong communication to coordinate team responses, and a deep understanding of potential security vulnerabilities. By applying these skills, an Engineering Manager can successfully negotiate the delicate balance between risk, security, and business needs.",
|
||||
"links": []
|
||||
},
|
||||
"kQG_wk66-51dA4Ly9ivjM": {
|
||||
"title": "Production issues management",
|
||||
"description": "An Engineering Manager's role in production issues management is crucial. They are responsible for quick decision making during system down-times or service disruptions. They deploy resources efficiently to resolve issues, sometimes guiding the team in real-time to troubleshoot and fix the problem.\n\nKey challenges include downtime minimization, maintaining system availability, and making trade-offs between quick fixes and long-term solutions. They address these challenges by implementing strong incident management policies and training the team for effective system recovery processes.\n\nSuccess in this aspect requires a mix of technical skills, effective communication, and problem-solving abilities. They also need a solid understanding of the deployed systems and infrastructure to ensure seamless functionality and service availability. It's crucial to learn from each outage to prevent or handle similar occurrences in the future.",
|
||||
"links": []
|
||||
},
|
||||
"mIUx8zAHWyPWPGvxuTK4y": {
|
||||
"title": "Contingency planning",
|
||||
"description": "An Engineering Manager needs to ensure that their team is prepared for any unexpected situations or challenges - that's where contingency planning comes into play. It's the manager's responsibility to guide their team in developing robust plans that address potential risks and uncertainties. This includes identifying possible obstacles, evaluating their impact, and devising strategies to mitigate them.\n\nThe challenges this role faces are manifold, from predicting the unknown to dealing with a resistant team. To navigate these, cultivating an open and flexible team culture is crucial. By fostering a problem-solving mentality, the manager can encourage their team to see contingency planning as a tool, not a burden.\n\nTo successfully play this role, an Engineering Manager needs to have strong risk management and strategic thinking skills. They must be able to balance a long-term view with immediate, tactical decisions. They should also be comfortable leading difficult conversations about potential failures and mishaps.",
|
||||
"links": []
|
||||
},
|
||||
"nnoVA8W70hrNDxN3XQCVL": {
|
||||
"title": "Disaster recovery",
|
||||
"description": "An Engineering Manager plays a critical part in disaster recovery. It is their job to ensure that, if any failure occurs, the team can quickly get systems up and running again. They devise and oversee the implementation of a sturdy disaster recovery plan. This often involves risk assessment, data backups, and establishing rapid recovery processes.\n\nChallenges they may face include dealing with data loss and service disruptions. To face these, an Engineering Manager often relies on a good strategy, clear communication, and effective coordination. They align the team and ensure everyone knows their role in the recovery process.\n\nIt requires strong leadership, risk management, technical knowledge, and problem-solving skills. Regular testing of the recovery plan is also essential to identify loopholes and ensure the effectiveness of the strategies in place.",
|
||||
"links": []
|
||||
},
|
||||
"FwK-B7jRbBXVnuY9JxI1w": {
|
||||
"title": "Business continuity",
|
||||
"description": "An Engineering Manager plays a pivotal role in the domain of business continuity. This involves ensuring that the various aspects of technological and process frameworks are resilient to disruptions. The aim is to sustain core business operations during times of crisis.\n\nKey responsibilities include setting up robust risk management systems, executing incident-response plans, and ensuring data integrity during downtime. It's a challenge to maintain operational resilience without stinting ongoing projects, and managing it involves a delicate balance of resources.\n\nTo achieve this, Engineering Managers must possess excellent problem-solving skills and a clear understanding of business operation needs. Regular risk assessment and sharpening the team's skill set to adapt and respond to uncertainty quickly are essential strategies. Robust infrastructure, policy planning, and good leadership are underlying requirements to render effective business continuity.",
|
||||
"links": []
|
||||
},
|
||||
"QFhhOgwz_bgZgOfKFg5XA": {
|
||||
"title": "Security incident handling",
|
||||
"description": "For an Engineering Manager, handling security incidents within a team involves keen attention to detail and quick actions. Their key responsibilities include coordinating with the security team to manage the issue and ensure minimal disruption to the project. They also facilitate communications, keeping all stakeholders informed about the situation and the steps being taken.\n\nChallenges faced by the Engineering Manager include managing team stress levels during security incidents and ensuring swift return to normal operations post-incident. By skillfully juggling these tasks, the manager can help secure the team's trust and keep the project on track.\n\nTo successfully handle security incidents, an Engineering Manager needs active decision-making skills, a solid understanding of security protocols, and strong team leadership capabilities. The ability to react calmly and decisively under pressure is also essential.",
|
||||
"links": []
|
||||
},
|
||||
"tmY4Ktu6luFg5wKylJW76": {
|
||||
"title": "Production issues management",
|
||||
"description": "As an Engineering Manager, handling production issues is one of the vital responsibilities. This includes timeliness in identifying, troubleshooting, and resolving problems. They may be involved in the actual debugging, but most of their tasks involve coordinating the team and defining procedures for a swift response to any issues.\n\nAddressing these issues can be challenging, particularly if they disrupt essential services or products. The manager needs to communicate effectively with the team and stakeholders, manage expectations, and ensure minimal interruption of services.\n\nTo excel in production issues management, an Engineering Manager needs valuable skills. These include technical knowledge, critical thinking, decision-making, and strong communication skills. Also, experience with certain tools, like monitoring software, could be beneficial to quickly detect and resolve issues.",
|
||||
"links": []
|
||||
},
|
||||
"5MM1ccB1pmQcd3Uyjmbr7": {
|
||||
"title": "Board presentations",
|
||||
"description": "Engineering Managers handle board presentations as a means to communicate company's technical strategies and progress. Main responsibility includes providing a comprehensive yet easy-to-understand technical synopsis to the board members who might not be tech-savvy. It involves striking a balance between technical specifics and high-level overviews.\n\nA common challenge is simplifying the technical language without losing substance. Using clear visualization tools and analogies can help in making complex concepts more digestible. Not being able to communicate effectively may lead to misunderstandings or underestimation of the team's efforts and milestones.\n\nSuccess requires not just technical skills but also a mastery of effective communication. Being ready to answer challenging questions and providing follow-up documents for further reading shows preparedness and understanding of the topics at hand.",
|
||||
"links": []
|
||||
},
|
||||
"CHothgVl8ulFthwS7uKqK": {
|
||||
"title": "Executive summaries",
|
||||
"description": "As an Engineering Manager, producing clear and helpful executive summaries is key. This type of communication gives a quick brief to leadership about the engineering team's progress and challenges. Crucial points should be distilled into easily digestible information, free of technical jargon that might cause confusion.\n\nAddressing this responsibility demands an in-depth understanding of both the projects at hand and the priorities of the executives. The manager must identify and deliver the information most relevant to decision-makers.\n\nChallenges include ensuring clarity without losing important details and keeping the summary concise yet comprehensive. To overcome these, the manager must practice effective summarization and gain feedback from receivers. This way, the manager is constantly refining their communication approach, making sure it meets the audience's needs.",
|
||||
"links": []
|
||||
},
|
||||
"uBrsV_EocAkRWEqJYjoZn": {
|
||||
"title": "Strategic proposals",
|
||||
"description": "An Engineering Manager's role in strategic proposals involves developing and presenting potential strategies to executives. They need to understand the technical aspects of projects or strategies, and relay this information to non-technical audiences persuasively.\n\nThe challenge lies in tailoring technical content for an executive audience. This requires exceptional communication skills and an ability to simplify complex information. A successful Engineering Manager is one who can translate complex engineering concepts into strategic proposals that align with the company's objectives.\n\nKey responsibilities include understanding the company's strategic direction, proactively identifying areas for improvement or innovation, and crafting strategic proposals that clearly communicate benefits, costs, and potential risks. It's a demanding task that necessitates critical thinking, strategic planning, and clear communication skills.",
|
||||
"links": []
|
||||
},
|
||||
"pLUOU2AmAJ9aJAmIlVD7D": {
|
||||
"title": "Budget requests",
|
||||
"description": "As an Engineering Manager, handling budget requests is more than just numbers. It’s about demonstrating the value of engineering efforts in clear business terms to executives. Here, their role is to justify the request by showing how the budget aligns with the team's goals and the company's strategic objectives. They often face the challenge of explaining technical necessities in a business-friendly language.\n\nEngineering Managers need to quantify the team's needs - such as manpower, equipment, or resources - without overstuffing the budget. They should be skilled in translating the cost of these aspects into potential business benefits like improved efficiency or quality.\n\nCrucially, the Engineering Manager should complement the budget request with a risk-assessment to anticipate potential obstacles. This shows foresight and an understanding of the business landscape, something executive teams appreciate.",
|
||||
"links": []
|
||||
},
|
||||
"QssXmeifoI3dtu-eXp8PK": {
|
||||
"title": "Vision alignment",
|
||||
"description": "As an Engineering Manager, aligning vision is a crucial aspect of executive communication. They are responsible for understanding the company's strategic objectives and translating them into engineering goals. This task requires effective communication, ensuring all team members comprehend and work towards this common goal.\n\nThe challenge is to explain complex technical strategies in a clear, engaging way that connects with the broader organization's mission. It involves constant dialogue with the executive team, offering technical expertise in strategic planning, and negotiable skills to balance between ambitious business goals and realistic engineering capacities.\n\nCrafting this bridge between executive vision and engineering execution requires a mix of technical depth, strategic thinking, and excellent interpersonal skills. Managers need to be good listeners, flexible thinkers, and inspiring leaders to ensure the team can perform optimally to bring the vision to life.",
|
||||
"links": []
|
||||
},
|
||||
"QEViLNgG4Uv9Q9PWig0u3": {
|
||||
"title": "Customer feedback integration",
|
||||
"description": "Engineering Managers shoulder a crucial responsibility while integrating customer feedback. This usually means working closely with design and development teams to incorporate customers' inputs into the product. The key to success here is maintaining a keen solicitude for the end-users' experience and needs.\n\nAmidst the technical jargon and coding diagrams, it's all too easy to lose sight of the user. Therefore, good Engineering Managers ensure that the customer's perspective is never lost. They build systems to meticulously collect and analyze customer feedback and then transform it into tangible product improvement plans.\n\nChallenges include aligning customer needs with technical limitations and resources. Effective Engineering Managers prioritise feedback based on its potential impact and feasibility, translate it into technical requirements for their team, and implement it seamlessly without disrupting the user's experience. This process requires a fine balance of technical understanding, project management skills, and an empathetic approach towards customers.",
|
||||
"links": []
|
||||
},
|
||||
"V5s2i-L2tsZFNxMLN_e_U": {
|
||||
"title": "Technical customer support",
|
||||
"description": "Engineering Managers play a vital role in technical customer support. They're responsible for ensuring that their team provides accurate and timely solutions to the customer's technical issues. Their key responsibilities include devising effective strategies for problem-solving, conducting regular team meetings to discuss pressing issues, and maintaining strong communication with other teams to understand system issues or software bugs.\n\nEngineering Managers also often face the challenge of reducing response time, managing customer expectations, and providing quality tech support. To tackle these, they prioritize regular training and upskilling for their team, foster an environment of continuous improvement, and use customer feedback for process enhancements.\n\nSuccess in this aspect requires strong technical acumen, excellent communication skills, and a customer-centric approach. The capability to turn customer feedback into actionable improvements is an invaluable asset in this role.",
|
||||
"links": []
|
||||
},
|
||||
"A-Aa7VdDAYfaMUZD_cWwP": {
|
||||
"title": "Customer success alignment",
|
||||
"description": "An Engineering Manager’s involvement in customer success alignment is crucial. They ensure that the engineering team aligns with the customer’s needs and expectations. Key responsibilities include collaborating with the customer success team, understanding customer requirements, and making sure the engineering team is on the same page.\n\nChallenges arise when there's a disconnect between what customers want and what the engineering team is set to deliver. But addressing them requires clear communication and strong problem-solving skills. Frequent interactions with the customer success team can foster the understanding necessary to prevent these issues.\n\nOverall, succeeding in this area requires excellent interpersonal skills. It's also crucial for Engineering Managers to have good technical understanding to relate customer needs to engineering tasks effectively. This ensures that the end product deepens customer satisfaction and leads to continuous business growth.",
|
||||
"links": []
|
||||
},
|
||||
"2QwMcO27H3ygtLlWVplxr": {
|
||||
"title": "Feature prioritization",
|
||||
"description": "As an Engineering Manager, they play a crucial role in feature prioritization. Their key responsibility is to balance the demands of the customers with the resources of their engineering team. Gleaning insights from customer feedback, market trends, and competitor analysis, they guide the team to focus on what's crucial for the business.\n\nChallenges faced by Engineering Managers in feature prioritization include time and resource constraints. They tackle these issues by adopting smart resourcing practices and clear-cut project management methodologies.\n\nFlourishing in feature prioritization requires excellent decision-making skills and adept stakeholder management. It's about understanding customer needs, foreseeing benefits of potential features, and skilled negotiation with the project team to achieve the best outcome for the company.",
|
||||
"links": []
|
||||
},
|
||||
"tCT2syTMyEHCspDLXxk6R": {
|
||||
"title": "Technical partnerships",
|
||||
"description": "An Engineering Manager plays a vital role in fostering technical partnerships in relation to customer relations. They have the responsibility of coordinating and collaborating with tech-partners to fulfill customer requirements, effectively leveraging their expertise for mutual benefit. They need to maintain a sound understanding of both the partner's capabilities and the customer's needs, bridging them effectively.\n\nThe main challenges include managing expectations and solving conflicts between the needs of the customer and the capabilities of the tech-partner. Engineering Managers address these by maintaining transparency and keeping lines of communication open to ensure a smooth collaboration.\n\nTo succeed, an Engineering Manager needs to have excellent communication and negotiation skills, alongside a strong understanding of technology. Being proactive in foreseeing and managing potential conflicts and issues can also lead to a successful technical partnership.",
|
||||
"links": []
|
||||
},
|
||||
"WYoqfmk5ejB2UOiYXh4Zi": {
|
||||
"title": "Vendor relationships",
|
||||
"description": "Engineering managers play a crucial role in maintaining robust vendor relationships. They are often responsible for choosing the right vendors, managing contracts, and ensuring the quality of services or goods provided.\n\nOne challenge they face is ensuring that the vendors adhere to the agreed service level agreements (SLAs) and standards. They handle this by setting clear expectations, maintaining open communication, and effectively managing vendor performance.\n\nFor success in this area, an engineering manager needs strong negotiation skills, good communication, and an understanding of contract management. A proactive approach to addressing issues and fostering a positive relationship is also beneficial. This ultimately helps the team get high-quality services and meet their goals.",
|
||||
"links": []
|
||||
},
|
||||
"xMN575nnnQJeHe2oJYw17": {
|
||||
"title": "Technology partnerships",
|
||||
"description": "Engineering Managers play a key role in fostering technology partnerships. It's a necessity for them to understand both the technical sides and value propositions of potential partners. They establish and maintain relationships based on mutual technology goals, and ensure that partners align with the overall strategy of their engineering team.\n\nFor partner management, Engineering Managers often need strong negotiation skills and a clear understanding of the business impact. They are responsible for regular partner check-ins and gauging the success of the partnership. A collaborative approach ensures that both parties receive benefits.\n\nThe challenge often lies in managing divergent priorities and expectations. To navigate this, an Engineering Manager needs effective communication and conflict resolution skills. They explore how technology partnerships can advance the team’s objectives, but also remain mindful of the risk and investment involved.",
|
||||
"links": []
|
||||
},
|
||||
"f3P0fF4UzgVQZuMVTVmP1": {
|
||||
"title": "Integration management",
|
||||
"description": "An engineering manager in partner management has a critical role in managing integrations. Their responsibilities include overseeing the development of tools and technologies that facilitate seamless connectivity with partners, ensuring the integration process meets partner requirements and goals.\n\nEngineering managers face challenges like dealing with complex integration scenarios, aligning technological needs, and handling communication between multiple teams. To succeed in this area, they need skills in API management, technical knowledge and the ability to communicate effectively.\n\nAn important approach here is proactive problem solving. An engineering manager will benefit from anticipating possible issues and implementing solutions ahead of time. This will make the integration process smoother and prevent major disruptions.",
|
||||
"links": []
|
||||
},
|
||||
"ukmMMWacekcejEiEKCLzh": {
|
||||
"title": "API strategy",
|
||||
"description": "An Engineering Manager's ability to handle API strategies directly impacts the success of partner management. A key responsibility in this area is defining clear API requirements that align with partner needs and business targets. Meeting these goals can be complex, mainly due to differing partner expectations and changing trends in API development.\n\nOvercoming these challenges requires a deep understanding of the technical use-cases of the API. An Engineering Manager needs adept negotiation skills to balance the technical and business sides of API strategy. They must also ensure interoperability and maintain the company's standards, which is crucial for partner satisfaction and long-term relations.\n\nFinally, frequent communication and receptiveness to feedback allows the Manager to refine the strategy effectively, spotting gaps and staying ahead in the competitive tech market.",
|
||||
"links": []
|
||||
},
|
||||
"Jctp5tPCK_vY35_bh7QFk": {
|
||||
"title": "External collaboration",
|
||||
"description": "The role of an Engineering Manager extends to external collaboration as well. Here, they often serve the role of liaising with external teams, vendors, or partners, aligning goals and ensuring smooth communication flow. The key responsibilities include managing relationships, understanding the partner ecosystem, and negotiating win-win situations.\n\nEngineering Managers face challenges like cultural differences, communication hurdles, or time zone disparities. They address these by building reliability through regular updates, clear agendas, and understanding each other's work culture.\n\nTo succeed, Engineering Managers need good interpersonal skills, a keen eye for future opportunities, and the ability to adapt quickly. An understanding of business and sales, alongside engineering knowledge, can be advantageous too. This role needs balance - drive details when necessary and step back and delegate when appropriate.",
|
||||
"links": []
|
||||
},
|
||||
"TQY4hjo56rDdlbzjs_-nl": {
|
||||
"title": "Competitive Analysis",
|
||||
"description": "An Engineering Manager uses competitive analysis to understand market trends and competitor strategies. This aids in decision-making and strategic planning. Their key responsibilities include identifying key competitors, analyzing their products, sales, and marketing strategies.\n\nChallenges may arise from having incomplete or inaccurate data. In these cases, Engineering Managers have to rely on their judgement and experience. Their analysis should be unbiased and as accurate as possible to influence the right design and development strategies.\n\nSuccessful competitive analysis requires strong analytical skills, keen attention to detail, and the ability to understand complex market dynamics. Managers must stay updated on market trend, technological advancements and be able to distinguish their company's unique selling proposition. This will allow them to plan steps to maintain competitiveness in the market.",
|
||||
"links": []
|
||||
},
|
||||
"QUxpEK8smXRBs2gMdDInB": {
|
||||
"title": "Legacy System Retirement",
|
||||
"description": "Every Engineering Manager knows the value and hurdles of legacy system retirement. They must plan and manage this complex task with a keen understanding of the system's purpose, its interdependencies, and potential risks of its retirement. Key responsibilities include assessing the impact on users, mitigating downtime, and ensuring business continuity.\n\nChallenges often arise from lack of documentation or knowledge about the legacy system. To overcome this, they could organize knowledge-sharing sessions with long-standing team members, assessing external help, or gradual transition methods.\n\nThe successful retirement of a legacy system requires a comprehensive approach, good interpersonal skills for team collaboration, and strong decision-making skills. An Engineering Manager has to balance the system’s business value against the cost and risk of maintaining it.",
|
||||
"links": []
|
||||
},
|
||||
"gHhNi32MSBmqk-oKOy-uj": {
|
||||
"title": "Architecture documentation",
|
||||
"description": "Engineering managers pave the way to secure well-built architecture documents. These texts act as blueprints - they guide software development and offer comprehensive visibility into the system's structure. Therefore, managers ensure that these crucial documents are precise, updated, and accessible to all team members.\n\nHowever, architecture documentation also throws up challenges. The difficulty lies in maintaining the usability and relevance of these documents, particularly as the system evolves over time. Managers tackle these issues by establishing strong documentation policies and encouraging team members to continuously review and revise their work.\n\nAt the core, excellent communication skills and a deep understanding of system architecture are central to succeeding in this area. With these capabilities, engineering managers can effectively translate detailed technical insights into comprehensible visual models and clear descriptions.",
|
||||
"links": []
|
||||
},
|
||||
"Kwy9O1z2hpeE0Sb3qtxEg": {
|
||||
"title": "Process documentation",
|
||||
"description": "An Engineering Manager deeply recognizes the vitality of process documentation to ensure smooth operations within the team. The manager is responsible for leading this area, facilitating a comprehensive and accurate representation of processes, and crafting guidelines that are easy to understand. They guarantee that essential information isn't locked in someone's head and is readily accessible for the team.\n\nChallenges often arise in keeping documents up-to-date and ensuring the team uses them. Engineering Managers respond by fostering a culture where documentation is viewed as a vital part of work, not an afterthought. Regular audits, revisions, and promoting ownership among team members help keep the documentation accurate and relevant.\n\nSuccess in process documentation demands exceptional organizational skills, clear communication, and a keen eye for detail. An approach that values simplicity and clarity reduces the barrier to maintain and use these documents.",
|
||||
"links": []
|
||||
},
|
||||
"dTjp_rEl1ITZjvELqVtfv": {
|
||||
"title": "Decision records",
|
||||
"description": "An Engineering Manager plays a crucial role in preserving decision records. These records serve as valuable historical documents, they encapsulate reasons behind significant decisions made in projects. An Engineering Manager's key responsibilities include ensuring decision records are kept up to date, comprehensible and easily accessible.\n\nChallenges the manager may face can stem from inconsistent documentation or low prioritization of record keeping. To tackle these issues, they must foster a culture that values accuracy and promptness in documentation.\n\nSuccess in this aspect requires a consistent methodology and communication skills. Managers should introduce standard formats for decision records and promote their routine use. They need to guide their teams on the importance of records not just for looking back but for future project strategy as well.",
|
||||
"links": []
|
||||
},
|
||||
"HUQ_-vU2pdBPyF0mBocHz": {
|
||||
"title": "Lessons Learned",
|
||||
"description": "As an Engineering Manager, one key responsibility in the field of knowledge management is the curation of \"Lessons Learned\". This involves reflecting on completed projects, identifying what was done well and what could be improved in the future.\n\nA significant challenge they face is ensuring these lessons are clearly articulated and accessible to all team members, to ensure similar issues don't reoccur. They handle this by creating well-structured documents that provide context, detail the problem encountered, and outline recommended improvements.\n\nTo effectively capture and share lessons learned requires a systematic approach, good communication skills, and a culture that encourages learning. This helps to improve team efficiency and reduce the risk of repeating mistakes, contributing to the overall success of an engineering team.",
|
||||
"links": []
|
||||
},
|
||||
"4-MCXFOkMGcN369OPG-vw": {
|
||||
"title": "Best Practices",
|
||||
"description": "As an Engineering Manager, one key area you interact with is the best practices for documentation. This involves ensuring your team consistently maintains high-quality, easily readable, and efficiently structured documents. Importance is placed on keeping information up-to-date and easily accessible to facilitate quick decision-making and work efficiency.\n\nOne of your responsibilities is to instill an awareness in your team of the lasting impact of good documentation. Encourage them to take time in creating materials that not only help their current project but also aid future understanding.\n\nChallenges may emerge when documentation is seen as secondary to product development. Overcome this by emphasizing the long-term benefits of comprehensive documentation, like saving time on future projects and reducing technical debt. Ensure your team respects the 'write the docs' ideology where coding and documenting go hand-in-hand.",
|
||||
"links": []
|
||||
},
|
||||
"g6K9fxWdRQT5h_u4Y_bkq": {
|
||||
"title": "Mentoring Programs",
|
||||
"description": "An Engineering Manager has a crucial role in facilitating mentoring programs as part of knowledge transfer. Their responsibilities involve choosing the right pairs for mentorship, ensuring mentors have the appropriate skills and knowledge, and evaluating the effectiveness of the program.\n\nOne of the challenges they may encounter is determining how to pair mentors and mentees. They address this through a thorough understanding of each team member's skill level and career goals. Additionally, they balance the workload of mentors to prevent them from feeling overstretched.\n\nSuccessful knowledge transfer through mentoring involves patience, active listening, and constant feedback. By harnessing these skills and encouraging mentors to do the same, an Engineering Manager ensures a conducive environment for learning and professional growth.",
|
||||
"links": []
|
||||
},
|
||||
"7t9jmv3_lRCEG5y5DA8bF": {
|
||||
"title": "Knowledge bases",
|
||||
"description": "An Engineering Manager plays a crucial role in establishing solid knowledge bases for their team. This is a system where team members record, update, and share information about projects, coding practices, or other essential technical insights. The Engineering Manager is responsible for making sure that information is up-to-date, relevant, and easily accessible for everyone on the team.\n\nA key challenge here can be information overload or outdated knowledge. The Manager needs to ensure the team regularly update the databases and that outdated information is removed promptly. This keeps the knowledge bases useful and efficient.\n\nTo succeed in this area, an Engineering Manager should promote open communication and regular updates among team members. Also, being competent in modern documentation tools can significantly assist in maintaining an effective knowledge base.",
|
||||
"links": []
|
||||
},
|
||||
"S8-nwYKlG7YHL2dWwR303": {
|
||||
"title": "Brown Bags",
|
||||
"description": "An Engineering Manager can utilize Brown Bags as a relaxed, voluntary form of knowledge transfer among the team. It's mainly their job to set the agenda and faciliate these informal sessions, leveraging them to encourage team members to share information and learnings.\n\nThey face the challenge of ensuring relevant content is being shared, while maintaining an atmosphere where people are comfortable speaking. They navigate this by fostering a culture of open communication and inclusion within the team, where questions and discussions are encouraged.\n\nSuccess in conducting Brown Bags requires excellent communication skills, the ability to facilitate productive discussions, and the wisdom to ensure that the sessions are worthwhile. This enhances cross pollination of ideas and helps to build an environment of trust and continuous learning.",
|
||||
"links": []
|
||||
},
|
||||
"2LO0iWf-y3l4rA1n_oG1g": {
|
||||
"title": "Tech Talks",
|
||||
"description": "Engineering Managers often utilize Tech Talks as an effective method for knowledge transfer within the team. It's their responsibility to organize these sessions where team members can share ideas, innovations, and discoveries related to their technical work. These discussions can help to improve overall team understanding, promote learning, and foster a culture of open communication.\n\nOne challenge for managers is getting team members to actively participate in Tech Talks. To overcome this, they might offer incentives or make participation part of performance assessments. Also, having clearly defined topics can help keep discussions focused and engaging.\n\nSuccessful Engineering Managers encourage team members to take ownership of Tech Talk sessions. This approach promotes leadership within the team and helps to share knowledge in a more organic and relatable way.",
|
||||
"links": []
|
||||
},
|
||||
"QMAIEkVFHrrP6lUWvd0S8": {
|
||||
"title": "Migration planning",
|
||||
"description": "Migration planning is a key facet of an Engineering Manager's responsibilities. They play a pivotal role in planning, coordinating, and overseeing the technical changes that include systems, databases, or application migration. This process requires them to have a solid understanding of the current technologies and the new systems being adopted, align migration activities with business needs and ensure minimal disruption to services.\n\nSome of the challenges they may encounter include ensuring data integrity, managing downtime, and unforeseen technical issues. Addressing these hurdles requires clear communication, effective risk management, and technology prowess.\n\nSuccess in migration planning hinges on a detailed understanding of the systems involved, robust planning, and leadership skills. It involves meticulous resource allocation, timeline management, and the ability to facilitate smooth collaboration among various teams.",
|
||||
"links": []
|
||||
},
|
||||
"9mNLfntu1TPjcX3RoUeMq": {
|
||||
"title": "Legacy system retirement",
|
||||
"description": "The retirement of legacy systems often falls under an Engineering Manager's purview. One of their main responsibilities is determining when a system becomes obsolete and planning its phase-out. This task demands a delicate balance of technical acumen, project management skills, and sound communication to ensure minimal disruption.\n\nChallenges include preserving vital data and functionalities and dealing with resistance to change. An Engineering Manager must expertly manage these by adopting a systematic and collaborative approach involving all stakeholders. Technical alternatives, cost-benefit analyses, timelines, and risk mitigation must be part of the plan.\n\nSuccessful legacy system retirement necessitates a mix of technical knowledge and soft skills. Understanding the system intricacies and the potential impact of its retirement is essential. Equally important is the ability to communicate effectively, manage change, and lead the team through the transition.",
|
||||
"links": []
|
||||
},
|
||||
"jerPoyfCcwZbNuE_cl1hq": {
|
||||
"title": "Technology adoption",
|
||||
"description": "An Engineering Manager has a vital role during technology adoption as a part of technical change management. They evaluate technologies to determine their suitability for the team's needs. This includes assessing the impact of new technologies on existing systems, workflows, and team skills.\n\nEngineering Managers are responsible for planning the adoption process, communicating changes to the team, and overseeing implementation. This minimizes disruption and ensures a smooth transition to the new technology. They must also organize training sessions to help team members get up to speed with the new technology.\n\nOne of the challenges faced by Engineering Managers during technology adoption is resistance to change. They must manage this tactfully by highlighting the benefits of the new technology, and ensuring everyone's concerns are addressed. Strong communication skills and a patient approach are required for this.",
|
||||
"links": []
|
||||
},
|
||||
"f-52wRfPRrA9iniOMYQB7": {
|
||||
"title": "Tool transitions",
|
||||
"description": "As an Engineering Manager, implementing a tool transition is a major responsibility. It's key to ensure the new tool meets team requirements and aligns with company goals. They need to plan the transition, helping team members understand why the change is happening and what the benefits are.\n\nChallenges during tool transitions include resistance to change, knowledge gaps, and possible disruption to workflows. The Engineering Manager must address these by having clear communication, offering training, and incorporating staff feedback during the transition.\n\nSuccess in tool transition often calls for strong leadership, excellent communication, project management abilities, and a good grasp on the technical aspects of both the legacy and new tools. Managers need to implement the new system smoothly while also maintaining ongoing team productivity.",
|
||||
"links": []
|
||||
},
|
||||
"ev9ZKygqETctLMSt1GAFU": {
|
||||
"title": "Process changes",
|
||||
"description": "An Engineering Manager identifies the need for process changes, and oversees the implementation. They'll usually take the front seat in conducting technical reviews to evaluate current procedures. If there's an operational gap, they'll design and enforce a more efficient process.\n\nAddressing implementation obstacles is another responsibility. This means the manager will handle resistance to change and maintain team morale. They'll often use clear communication to elucidate the reasons for the change, and the benefits it'll bring.\n\nIn order to land this successfully, an Engineering Manager needs good analytical skills to pinpoint the weak areas in the current processes, and excellent leadership and communication skills to facilitate the transition. They should also be flexible, to adapt the plan as the change progresses.",
|
||||
"links": []
|
||||
},
|
||||
"1__zRE1iu1FDX9ynpWSBS": {
|
||||
"title": "Change strategy",
|
||||
"description": "An Engineering Manager plays a vital role in developing and deploying organizational change strategies. They need to clearly define the vision, set realistic objectives, devise a detailed roadmap for change, and regularly update the team. Proper communication is vital to manage any fears or doubts among team members.\n\nIn this regard, skills required vary from strategic thinking to effective communication and empathy. It's not just about the technical aspects but understanding the human side of change. It is essential to identify the potential impacts of the change and prepare teams accordingly.\n\nThe challenge lies in balancing the pace of change and dealing with resistance. Successful managers often tackle this by ensuring inclusivity in strategy development, open dialogues, and continuous support throughout the transition process.",
|
||||
"links": []
|
||||
},
|
||||
"oGmtkOGVgA4huGJqkBEfj": {
|
||||
"title": "Impact assessment",
|
||||
"description": "An Engineering Manager's role in 'Impact Assessment' during 'Organizational Change' involves assessing the potential risks and effects of proposed changes on their team and the larger organization. They need to foresee potential negative impacts and devise strategies to mitigate them to maintain the team's productivity and morale.\n\nEngineering Managers are responsible for communicating these assessments to their teams and addressing any concerns. They must clearly express the necessity of the changes, the benefits, and how it could influence team and individual work. They should also layout planned measures to offset possible negative effects.\n\nDoing successful impact assessments requires analytical skills, logical thinking, and excellent communication. Managers must gather and analyze data, predict possible outcomes, understand their team's strengths and weaknesses, and efficiently communicate the assessment results.",
|
||||
"links": []
|
||||
},
|
||||
"34uOnta7dKOyZL0et_RC8": {
|
||||
"title": "Stakeholder management",
|
||||
"description": "An Engineering Manager plays a critical role in stakeholder management during organizational change. They act as the link between the technical team and all other stakeholders (e.g., customer, management, or other teams). Their main responsibilities include communicating effectively about the impact of the proposed changes on the product delivery, ensuring that the stakeholders are on the same page about it.\n\nThe challenge here is that stakeholders may have different perspectives and respond differently to the change. To handle this, the Engineering Manager needs to have good negotiation skills and the ability to manage conflicts. They must present information in a way that maintains stakeholder buy-in throughout the process.\n\nIn essence, successful stakeholder management requires clear communication, empathy, and understanding of different stakeholder's needs. This ensures a smoother transition with minimal disruptions to the engineering workflow.",
|
||||
"links": []
|
||||
},
|
||||
"Mxi4g_PzT0oYc3NgR0UVg": {
|
||||
"title": "Communication planning",
|
||||
"description": "An Engineering Manager is pivotal in communication planning during organizational changes. His key tasks are to ensure timely and clear communication to prevent confusion and keep the team committed. They keep a balance between providing too much detail that would overwhelm and too little that might result in anxiety and fear.\n\nThe manager can face issues like hesitance from teams to change or rumors spreading due to unclear messages. To mitigate these, he needs to create an effective communication plan, ensuring that it is proactive and on-going, so the team remains informed about the changes.\n\nLastly, having strong leadership and communication skills will enable the Engineering Manager to successfully guide their team through the change. Also, empathy and patience are needed, as change can be stressful and it takes time for people to adjust.",
|
||||
"links": []
|
||||
},
|
||||
"vfp6VmWnhpre_eDORg7ht": {
|
||||
"title": "Resistance management",
|
||||
"description": "In managing resistance during organizational change, an Engineering Manager's role involves identifying employees' concerns and fears. They work to address these issues by demonstrating empathy, opening communications, and providing solid reasons for the change. Addressing resistance may require new skills or adjustments to work styles, making training and support vital parts of the process.\n\nEngineering Managers often face employees' fear of change, decreased morale, or reduced productivity during transitional periods. To navigate these challenges, they develop clear plans, communicate constantly about the change and the benefits it will bring, and involve employees in the change process to generate buy-in.\n\nSuccess in resistance management requires strong emotional intelligence, solid communication skills, and the ability to motivate teams. Industries and situations vary, but maintaining transparency and empathy often result in positive outcomes.",
|
||||
"links": []
|
||||
},
|
||||
"5_CE3p5jMA1uEqFNfp7Kh": {
|
||||
"title": "Reorganizations",
|
||||
"description": "As an Engineering Manager, dealing with reorganizations can be challenging yet vital. They are responsible for planning and executing the restructure while ensuring minimal disruption to the workflow. It's also their duty to communicate these changes to their teams clearly and compassionously, as reorganizations can often lead to anxiety among members.\n\nKey challenges that they might face include resistance to change, possible decrease in productivity, and maintaining team morale. To tackle these hurdles, they must exhibit strong leadership, good communication, and problem-solving skills. They should also understand the unique dynamics of their team members to address their concerns effectively.\n\nBeing equipped with strategic thinking can help an Engineering Manager navigate reorganizations successfully. This involves envisioning the desired end-state, planning the transition phase meticulously, and managing the impact on the teams, empowering smooth transformation.",
|
||||
"links": []
|
||||
},
|
||||
"ph0U4l2alVJ8lUJ96q7co": {
|
||||
"title": "Team mergers",
|
||||
"description": "Engineering Managers play a crucial role in merging teams. Their responsibility is to lead the process smoothly and ensure the newly merged team works effectively. It involves planning and executing the integration process, setting shared goals, and building team unity. They need to focus on promoting open communication, resolving conflicts and managing team dynamics.\n\nMerging teams presents challenges such as blending different cultures, aligning processes, and addressing concerns of team members. Managers tackle these by promoting transparency, facilitating consistent communication, and setting clear expectations.\n\nSucceeding in this aspect requires strong leadership and interpersonal skills. Empathy and good listening skills are vital to understand and address team member concerns. It also requires good planning and organizational skills to manage the process efficiently and ensure the new team is productive.",
|
||||
"links": []
|
||||
},
|
||||
"FayHWdUHHYFFBwnXx37Gk": {
|
||||
"title": "Role transitions",
|
||||
"description": "Role transitions often occur within an Engineering team, and an Engineering Manager has a crucial role managing these changes. They're responsible for making sure transitioning team members are clear about their new duties and have the support they need to fulfill them.\n\nChallenges that arise with role transitions can include resistance to change, confusion, or even a decrease in productivity. Engineering Managers address these challenges through transparent communication, hands-on training, and creating a workspace that supports learning and adaptation.\n\nSuccess in managing role transitions requires a mix of technical understanding, strong communication, and leadership skills. Periodic check-ins and feedback sessions are also useful for ensuring these transitions are effective and beneficial for all involved. This approach not only helps alleviate concerns but also aids in keeping team morale high during times of change.",
|
||||
"links": []
|
||||
},
|
||||
"eIlW4mZKNQfBsTDmZf7ex": {
|
||||
"title": "Responsibility shifts",
|
||||
"description": "Engineering Managers often handle responsibility shifts within the team during change management. It's their duty to analyze what skills are needed, and delegate new duties accordingly. They also ensure all members understand their updated roles, ensuring a smooth transition.\n\nResponsibility shifts often present challenges because they might disrupt established work rhythms. The Engineering Manager should address these concerns head on. This could involve reassuring the team, providing additional training, or even modifying the shift if needed.\n\nSucceeding in this area takes great communication skills and a deep understanding of your team's strengths and weaknesses. It requires being open to feedback and adapting quickly. By doing so, Engineering Managers can turn the potentially tumultuous event of a responsibility shift into a moment of growth for both individuals and the team.",
|
||||
"links": []
|
||||
},
|
||||
"y7YHIz7OI4sNfC_nhfLcu": {
|
||||
"title": "Culture evolution",
|
||||
"description": "Engineering Managers play a crucial role in culture evolution during team changes. Their key responsibilities fall within communication, fostering an environment of transparency, addressing concerns, and leveraging changes to strengthen the team’s values and spirit.\n\nNavigating cultural shifts can be challenging. Engineering Managers often address this by keeping regular check-ins, encouraging open discussions, and instilling trust in their team’s agility to adapt. They act as the ‘change agents,' driving the cultural transition smoothly to avoid unexpected disruptions.\n\nTo succeed in advancing a team’s culture, an Engineering Manager needs strong interpersonal skills and a positive outlook. Striking a balance between maintaining existing positive aspects of culture, while infusing new elements that align with the change, is crucial. This approach helps create a dynamic, evolving, yet stable environment for the team.",
|
||||
"links": []
|
||||
}
|
||||
}
|
||||
@@ -439,6 +439,11 @@
|
||||
"url": "https://redis.io/docs/latest/",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Redis University",
|
||||
"url": "https://university.redis.io/academy",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Explore top posts about Redis",
|
||||
"url": "https://app.daily.dev/tags/redis?ref=roadmapsh",
|
||||
|
||||
@@ -329,6 +329,11 @@
|
||||
"title": "Center of Mass",
|
||||
"url": "https://medium.com/@brazmogu/physics-for-game-dev-a-platformer-physics-cheatsheet-f34b09064558",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Playing With Unreal Engine Physics: Center of Mass",
|
||||
"url": "https://www.youtube.com/watch?v=JVX7TA8GkzE",
|
||||
"type": "video"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -599,7 +599,7 @@
|
||||
"links": [
|
||||
{
|
||||
"title": "git clone",
|
||||
"url": "https://git-scm.com/docs/git-clone/en",
|
||||
"url": "https://git-scm.com/docs/git-clone",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -881,6 +881,11 @@
|
||||
"url": "https://auth0.com/resources/ebooks/jwt-handbook",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Authentication vs Authorization",
|
||||
"url": "https://www.cerbos.dev/blog/authentication-vs-authorization",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "SAML Overview",
|
||||
"url": "https://www.youtube.com/watch?v=i8wFExDSZv0",
|
||||
|
||||
@@ -247,8 +247,24 @@
|
||||
},
|
||||
"s2KJ5kNv9UcnsP0QKIKQ7": {
|
||||
"title": "Create User Personas",
|
||||
"description": "User personas are fictional representations of your target users, created to help you understand their needs, behaviors, and goals. They are essential in UX design as they help your team stay focused on user needs and maintain empathy for the user throughout the design process. Here's a brief overview of how to create user personas:\n\n* **Gather User Data**: Conduct user research through methods such as interviews, surveys, and observations to collect data about your target users. This will provide you with valuable insights and help you identify patterns in user behavior.\n \n* **Identify Key Characteristics**: Analyze the collected data to identify common characteristics, such as demographics, goals, motivations, and pain points. These characteristics will form the foundation of your personas.\n \n* **Create Persona Profiles**: Based on the identified characteristics, create 3-5 distinct user personas. Each persona should have a name, a picture (to help humanize them), and details such as age, occupation, background, and a brief description of their typical day.\n \n* **Define User Goals and Scenarios**: List the primary, secondary, and tertiary goals of each persona, along with realistic scenarios in which they interact with your product or service. This will help you understand how different users approach your product and what they expect from it.\n \n* **Share and Refine**: Share your personas with your team and gather feedback. Make any necessary changes to ensure that the personas accurately represent your target users.\n \n\nRemember, user personas are not static, and should be updated as you gather more user data and insights. Keep them in mind throughout the design process, and always consider their needs and goals when making design decisions.",
|
||||
"links": []
|
||||
"description": "User personas are fictional representations of your target users, created to help you understand their needs, behaviors, and goals. They are essential in UX design as they help your team stay focused on user needs and maintain empathy for the user throughout the design process. Here's a brief overview of how to create user personas:\n\n* **Gather User Data**: Conduct user research through methods such as interviews, surveys, and observations to collect data about your target users. This will provide you with valuable insights and help you identify patterns in user behavior.\n \n* **Identify Key Characteristics**: Analyze the collected data to identify common characteristics, such as demographics, goals, motivations, and pain points. These characteristics will form the foundation of your personas.\n \n* **Create Persona Profiles**: Based on the identified characteristics, create 3-5 distinct user personas. Each persona should have a name, a picture (to help humanize them), and details such as age, occupation, background, and a brief description of their typical day.\n \n* **Define User Goals and Scenarios**: List the primary, secondary, and tertiary goals of each persona, along with realistic scenarios in which they interact with your product or service. This will help you understand how different users approach your product and what they expect from it.\n \n* **Share and Refine**: Share your personas with your team and gather feedback. Make any necessary changes to ensure that the personas accurately represent your target users.\n \n\nRemember, user personas are not static, and should be updated as you gather more user data and insights. Keep them in mind throughout the design process, and always consider their needs and goals when making design decisions.\n\nVisit the following resources to learn more:",
|
||||
"links": [
|
||||
{
|
||||
"title": "Personas – A Simple Introduction",
|
||||
"url": "https://www.interaction-design.org/literature/article/personas-why-and-how-you-should-use-them",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Personas Make Users Memorable for Product Team Members",
|
||||
"url": "https://www.nngroup.com/articles/persona/",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Personas in UX",
|
||||
"url": "https://youtube.com/playlist?list=PLJOFJ3Ok_ids-oEPCltCVtmdDOXiyttpq&si=v7ZaI65bQNTfXKHJ",
|
||||
"type": "video"
|
||||
}
|
||||
]
|
||||
},
|
||||
"SGO9hHju49_py0n0ASGBe": {
|
||||
"title": "Business Model Canvas",
|
||||
@@ -294,8 +310,14 @@
|
||||
},
|
||||
"r6D07cN0Mg4YXsiRSrl1_": {
|
||||
"title": "Conceptual Design",
|
||||
"description": "Conceptual design, often referred to as the \"big idea\" phase, is a fundamental step in the UX design process. It entails creating and defining an overarching concept, vision, or framework for a product or service.\n\nIn this stage, designers focus on gathering information, understanding the problem, and generating ideas that will guide the overall user experience. This includes defining goals, needs, and target users, as well as considering the broader context in which the solution will exist. The output should be a clear and concise direction for future design work and development.\n\nKey components of conceptual design include:\n\n* **Problem Definition**: Identify and describe the core problem or challenge that your design aims to address. This should include insights from user research, business objectives, and a clear design goal.\n \n* **User Personas and Scenarios**: Develop representative user personas, providing demographic and behavioral information to help understand target user needs, motivations, and goals. Scenarios can then be created to illustrate how users might interact with the proposed solution in various contexts.\n \n* **Information Architecture**: Define the high-level structure of the product or service, organizing content and features in a way that is easy for users to understand and navigate. This helps ensure that information is presented clearly and consistently throughout the experience.\n \n* **Sketches and Wireframes**: Create rough sketches or wireframes to visualize key aspects of the user interface and explore various design alternatives. These early prototypes can help identify potential issues and guide future design decisions.\n \n* **Design Principles and Guidelines**: Establish a set of high-level principles and guidelines that will shape the design and serve as a foundation for further development. This may include aesthetic and functional criteria, as well as ensuring accessibility and usability.\n \n* **Iteration**: Continually refine and iterate on the initial concept, using feedback from user testing and stakeholder input to make informed design adjustments. This iterative approach allows for flexibility and adaptability as the project progresses.\n \n\nUltimately, the goal of conceptual design is to create a coherent and engaging vision that meets user needs and aligns with business objectives. By investing time and effort into this foundational stage, designers can lay the groundwork for a successful and enjoyable user experience.",
|
||||
"links": []
|
||||
"description": "Conceptual design, often referred to as the \"big idea\" phase, is a fundamental step in the UX design process. It entails creating and defining an overarching concept, vision, or framework for a product or service.\n\nIn this stage, designers focus on gathering information, understanding the problem, and generating ideas that will guide the overall user experience. This includes defining goals, needs, and target users, as well as considering the broader context in which the solution will exist. The output should be a clear and concise direction for future design work and development.\n\nKey components of conceptual design include:\n\n* **Problem Definition**: Identify and describe the core problem or challenge that your design aims to address. This should include insights from user research, business objectives, and a clear design goal.\n \n* **User Personas and Scenarios**: Develop representative user personas, providing demographic and behavioral information to help understand target user needs, motivations, and goals. Scenarios can then be created to illustrate how users might interact with the proposed solution in various contexts.\n \n* **Information Architecture**: Define the high-level structure of the product or service, organizing content and features in a way that is easy for users to understand and navigate. This helps ensure that information is presented clearly and consistently throughout the experience.\n \n* **Sketches and Wireframes**: Create rough sketches or wireframes to visualize key aspects of the user interface and explore various design alternatives. These early prototypes can help identify potential issues and guide future design decisions.\n \n* **Design Principles and Guidelines**: Establish a set of high-level principles and guidelines that will shape the design and serve as a foundation for further development. This may include aesthetic and functional criteria, as well as ensuring accessibility and usability.\n \n* **Iteration**: Continually refine and iterate on the initial concept, using feedback from user testing and stakeholder input to make informed design adjustments. This iterative approach allows for flexibility and adaptability as the project progresses.\n \n\nUltimately, the goal of conceptual design is to create a coherent and engaging vision that meets user needs and aligns with business objectives. By investing time and effort into this foundational stage, designers can lay the groundwork for a successful and enjoyable user experience.\n\nVisit the following resources to learn more:",
|
||||
"links": [
|
||||
{
|
||||
"title": "How to apply design thinking in UX",
|
||||
"url": "https://medium.com/digital-experience-design/how-to-apply-a-design-thinking-hcd-ux-or-any-creative-process-from-scratch-b8786efbf812",
|
||||
"type": "article"
|
||||
}
|
||||
]
|
||||
},
|
||||
"tkbkpvHlWQeOnReanR8J7": {
|
||||
"title": "User Stories",
|
||||
|
||||
@@ -243,8 +243,44 @@
|
||||
},
|
||||
"f7N4pAp_jBlT8_8owAcbG": {
|
||||
"title": "Performance",
|
||||
"description": "",
|
||||
"links": []
|
||||
"description": "Key areas to improve Vue.js performance include lazy loading components to minimize initial load times, optimizing rendering to prevent unnecessary re-renders, implementing efficient state management using modern libraries like Pinia, reducing the bundle size by code splitting and tree shaking, utilizing virtual scrolling for large lists and tables, continuously monitoring performance to detect potential bottlenecks, and minimizing dependencies to decrease overall load.\n\nLearn more from the following resources:",
|
||||
"links": [
|
||||
{
|
||||
"title": "How to Optimize Performance in Vue.js Applications: Beginner to Advanced Guide",
|
||||
"url": "https://dev.to/delia_code/how-to-optimize-performance-in-vuejs-applications-beginner-to-advanced-guide-53db",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Vue Directives Basics",
|
||||
"url": "https://vuejs.org/guide/best-practices/performance.html",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Pinia Documentation",
|
||||
"url": "https://pinia.vuejs.org/",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Webpack Documentation",
|
||||
"url": "https://webpack.js.org/",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Vue Virtual Scroller",
|
||||
"url": "https://github.com/Akryum/vue-virtual-scroller",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Vue Devtools Documentation",
|
||||
"url": "https://devtools.vuejs.org/",
|
||||
"type": "article"
|
||||
},
|
||||
{
|
||||
"title": "Vue Best Practices",
|
||||
"url": "https://vuejs.org/guide/best-practices/overview.html",
|
||||
"type": "article"
|
||||
}
|
||||
]
|
||||
},
|
||||
"tU4Umtnfu01t9gLlnlK6b": {
|
||||
"title": "Conditional Rendering",
|
||||
|
||||
BIN
public/roadmaps/engineering-manager.png
Normal file
BIN
public/roadmaps/engineering-manager.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
@@ -48,6 +48,7 @@ Here is the list of available roadmaps with more being actively worked upon.
|
||||
- [Data Analyst Roadmap](https://roadmap.sh/data-analyst)
|
||||
- [MLOps Roadmap](https://roadmap.sh/mlops)
|
||||
- [Product Manager Roadmap](https://roadmap.sh/product-manager)
|
||||
- [Engineering Manager Roadmap](https://roadmap.sh/engineering-manager)
|
||||
- [QA Roadmap](https://roadmap.sh/qa)
|
||||
- [Python Roadmap](https://roadmap.sh/python)
|
||||
- [Software Architect Roadmap](https://roadmap.sh/software-architect)
|
||||
|
||||
714
scripts/roadmap-tree-content.js
Normal file
714
scripts/roadmap-tree-content.js
Normal file
@@ -0,0 +1,714 @@
|
||||
import OpenAI from 'openai';
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { dirname } from 'path';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
/**
|
||||
* @typedef {Object} Node
|
||||
* @property {string} id - The unique identifier for the node
|
||||
* @property {string} text - The text content of the node
|
||||
*/
|
||||
|
||||
const roadmapId = 'engineering-manager';
|
||||
|
||||
/** @type {Node[]} */
|
||||
const nodes = [
|
||||
{
|
||||
id: 'oKbeLp4YB8rI1Q3vi0EnG',
|
||||
text: 'Engineering Manager > What is Engineering Management? > EM vs Tech Lead vs IC',
|
||||
},
|
||||
{
|
||||
id: 'aSZ2uVCmpAdEPjJt6VKG4',
|
||||
text: 'Engineering Manager > What is Engineering Management? > People',
|
||||
},
|
||||
{
|
||||
id: 'p9ecMvHCqjmvxf67di7pY',
|
||||
text: 'Engineering Manager > What is Engineering Management? > Product',
|
||||
},
|
||||
{
|
||||
id: 'iZFn0FaRdrGv_-_8zii_-',
|
||||
text: 'Engineering Manager > What is Engineering Management? > Process',
|
||||
},
|
||||
{
|
||||
id: 'fBENrXdMhoGYgL_d96tgo',
|
||||
text: 'Engineering Manager > Software Engineering Background',
|
||||
},
|
||||
{
|
||||
id: 'iX4HPgoiEbc_gze1A01n4',
|
||||
text: 'Engineering Manager > > System Design and Architecture',
|
||||
},
|
||||
{
|
||||
id: 'EY6Hk5wPd9Y_VA1UROk44',
|
||||
text: 'Engineering Manager > Technical Debt and Management',
|
||||
},
|
||||
{
|
||||
id: '40yK6XzI8lSxdiAXxtF75',
|
||||
text: 'Engineering Manager > Code Review Best Practices',
|
||||
},
|
||||
{
|
||||
id: '_2xnTKt5yi__jj_WgcLa7',
|
||||
text: 'Engineering Manager > Technical Documentation',
|
||||
},
|
||||
{
|
||||
id: 'ikCJ8Ybu2AD1w5VuPNVAO',
|
||||
text: 'Engineering Manager > Technical Strategy > Technical Roadmapping',
|
||||
},
|
||||
{
|
||||
id: 'FtWNnOE3zObmjS-Og26M3',
|
||||
text: 'Engineering Manager > Technical Strategy > Architectural Decision-Making',
|
||||
},
|
||||
{
|
||||
id: 'H0aav5qKDNiNegJOGP2rx',
|
||||
text: 'Engineering Manager > Technical Strategy > Build vs Buy Evaluation',
|
||||
},
|
||||
{
|
||||
id: 'd7zMBhMFgY9MwmKC9CVVh',
|
||||
text: 'Engineering Manager > Technical Strategy > Technical Risk Assessment',
|
||||
},
|
||||
{
|
||||
id: 'EyoVFmqOJbH1sAPHLISFt',
|
||||
text: 'Engineering Manager > Technical Strategy > Scaling Infrastructure',
|
||||
},
|
||||
{
|
||||
id: 'QUxpEK8smXRBs2gMdDInB',
|
||||
text: 'Engineering Manager > Technical Strategy > Legacy System Retirement',
|
||||
},
|
||||
{
|
||||
id: 'pduPcv2QPpVmVvDdK4CPi',
|
||||
text: 'Engineering Manager > Quality and Process > System Monitoring & Performance',
|
||||
},
|
||||
{
|
||||
id: 'gAEmpSMvNyjmTa5q9oZSg',
|
||||
text: 'Engineering Manager > Quality and Process > CI/CD Implementation',
|
||||
},
|
||||
{
|
||||
id: 'bpJPDbifPwS4ScOoATlEI',
|
||||
text: 'Engineering Manager > Quality and Process > Development / Release Workflow',
|
||||
},
|
||||
{
|
||||
id: 'q5SJyM1d8cQzzAcR-kotB',
|
||||
text: 'Engineering Manager > Quality and Process > Testing Strategies',
|
||||
},
|
||||
{
|
||||
id: 'C2YsaZ32An_UXV8lB7opm',
|
||||
text: 'Engineering Manager > Quality and Process > Technical Standards Setting',
|
||||
},
|
||||
{
|
||||
id: 'sQCLhk__jvbityuuLlxiW',
|
||||
text: 'Engineering Manager > Quality and Process > Security Best Practices',
|
||||
},
|
||||
{
|
||||
id: 'o1xPrfg8iNWQpD12xsbQJ',
|
||||
text: 'Engineering Manager > Quality and Process > Incident Management',
|
||||
},
|
||||
{
|
||||
id: '3na5mBIPl5f6mjEzkgD_C',
|
||||
text: 'Engineering Manager > People Management > Hiring and Recruitment',
|
||||
},
|
||||
{
|
||||
id: 'tPDmXXjvFI_8-MTo_dEUw',
|
||||
text: 'Engineering Manager > People Management > Team Structure and Design',
|
||||
},
|
||||
{
|
||||
id: 'eJzYnoB6sArLjXRm51cM4',
|
||||
text: 'Engineering Manager > People Management > Performance Evaluations',
|
||||
},
|
||||
{
|
||||
id: 'fhFSR_N4ZDTHINEinubHG',
|
||||
text: 'Engineering Manager > People Management > Career Development Planning',
|
||||
},
|
||||
{
|
||||
id: '0ULnfq0ZFJXgoLbKM1gxC',
|
||||
text: 'Engineering Manager > People Management > Mentoring and Coaching',
|
||||
},
|
||||
{
|
||||
id: 'bx2SMhR58ud45se5dK7qS',
|
||||
text: 'Engineering Manager > People Management > Delegation',
|
||||
},
|
||||
{
|
||||
id: 'QA5CR5f0geC_RQc_SOK-N',
|
||||
text: 'Engineering Manager > Leadership Skills > Conflict Resolution',
|
||||
},
|
||||
{
|
||||
id: 'Az9GgkLFoat2t_sYRUBv5',
|
||||
text: 'Engineering Manager > Leadership Skills > Feedback Delivery',
|
||||
},
|
||||
{
|
||||
id: 'U_oOnDXkCE387r9olvMZB',
|
||||
text: 'Engineering Manager > Leadership Skills > Team Motivation',
|
||||
},
|
||||
{
|
||||
id: '7PBmYoSmIgZT21a2Ip3_S',
|
||||
text: 'Engineering Manager > Leadership Skills > Trust / Influence Building',
|
||||
},
|
||||
{
|
||||
id: 'h7gEQNbGiabDA1q1Bk_IB',
|
||||
text: 'Engineering Manager > Leadership Skills > Emotional Intelligence',
|
||||
},
|
||||
{
|
||||
id: 'b3qoH_LuW-Gz4N8WdGnZs',
|
||||
text: 'Engineering Manager > Communication > One-on-One Meetings',
|
||||
},
|
||||
{
|
||||
id: 'C2EQ8JMyK6b4PvgK5TpXb',
|
||||
text: 'Engineering Manager > Communication',
|
||||
},
|
||||
{
|
||||
id: 'e0ZuiCoS8sJ0XB1lNiz7_',
|
||||
text: 'Engineering Manager > Team Meetings',
|
||||
},
|
||||
{
|
||||
id: 'gqKEgKjEu5sOf5Gl-HS-j',
|
||||
text: 'Engineering Manager > Communication > Status Reporting',
|
||||
},
|
||||
{
|
||||
id: 'TVqVlJqegLZRSkwNoHbBf',
|
||||
text: 'Engineering Manager > Communication > Stakeholder Management',
|
||||
},
|
||||
{
|
||||
id: 'ZuZuzwy-Frsn_PFJZVuAQ',
|
||||
text: 'Engineering Manager > Communication > Cross-functional Collaboration',
|
||||
},
|
||||
{
|
||||
id: 'jt-LF5QbGVs0cwTuHFQF6',
|
||||
text: 'Engineering Manager > Project Management',
|
||||
},
|
||||
{
|
||||
id: '4v5yLKYVcMh0s7SQuf__C',
|
||||
text: 'Engineering Manager > Project Management > Resource Allocation',
|
||||
},
|
||||
{
|
||||
id: '7BcToTqL78QmG4qb43X5Q',
|
||||
text: 'Engineering Manager > Project Management > Sprint Planning',
|
||||
},
|
||||
{
|
||||
id: '-Qc6E3gkUUonfzifYqeJJ',
|
||||
text: 'Engineering Manager > Project Management > Release Management',
|
||||
},
|
||||
{
|
||||
id: 'mgw6M8I9qy1EoJpJV-gy1',
|
||||
text: 'Engineering Manager > Project Management > Risk Management',
|
||||
},
|
||||
{
|
||||
id: 'hH-UDVFlgKoMJcI1ssDFv',
|
||||
text: 'Engineering Manager > Project Management > Dependency management',
|
||||
},
|
||||
{
|
||||
id: 'n9gvPHn4c1U-l6v-W9v6r',
|
||||
text: 'Engineering Manager > Project Management > Agile methodologies',
|
||||
},
|
||||
{
|
||||
id: 'SuT6q5lMMSyVkadlQp7iU',
|
||||
text: 'Engineering Manager > Project Management > Project Tracking',
|
||||
},
|
||||
{
|
||||
id: 'PXobPGPgCX3_55w4UtxT9',
|
||||
text: 'Engineering Manager > Project Management > Milestone Management',
|
||||
},
|
||||
{
|
||||
id: 'C-lJJSjT8Cxw_UT3ocFsO',
|
||||
text: 'Engineering Manager > Project Management > Scope Management',
|
||||
},
|
||||
{
|
||||
id: 'QWO5QFS7kXwfu3aa8IiRt',
|
||||
text: 'Engineering Manager > Project Management > Timeline Estimation',
|
||||
},
|
||||
{
|
||||
id: 'Wd8FCEaGZBTvsD-k4t0r4',
|
||||
text: 'Engineering Manager > Project Management > KPI Definition',
|
||||
},
|
||||
{
|
||||
id: 'idd92ZTBVUzptBl5jRdc3',
|
||||
text: 'Engineering Manager > Project Management > Measurement > Velocity Tracking',
|
||||
},
|
||||
{
|
||||
id: 'ZWWsuFm_G4kvvl_cv8l_t',
|
||||
text: 'Engineering Manager > Project Management > Measurement > Quality Metrics',
|
||||
},
|
||||
{
|
||||
id: 'ZWWsuFm_G4kvvl_cv8l_t',
|
||||
text: 'Engineering Manager > Project Management > Measurement > Quality Metrics',
|
||||
},
|
||||
{
|
||||
id: 'KPDHk7tl_BnIj_obnq3Kl',
|
||||
text: 'Engineering Manager > Project Management > Measurement > Team Health Metrics',
|
||||
},
|
||||
{
|
||||
id: 'g9WWa50V8ZbhIJgBRx0Nd',
|
||||
text: 'Engineering Manager > Project Management > Measurement > Project Postmortems',
|
||||
},
|
||||
{
|
||||
id: 'nC5dfGlxbLoXUAp2u-6Gl',
|
||||
text: 'Engineering Manager > Strategic Thinking > Product strategy alignment',
|
||||
},
|
||||
{
|
||||
id: 'vhOHvfF_lfQrrOK6sGLTY',
|
||||
text: 'Engineering Manager > Strategic Thinking > Business Case Development',
|
||||
},
|
||||
{
|
||||
id: 'XinUWPahOdufmLYcEwMj_',
|
||||
text: 'Engineering Manager > Strategic Thinking > ROI analysis',
|
||||
},
|
||||
{
|
||||
id: 'P2gIOt-i0sQEOMBo-XjZO',
|
||||
text: 'Engineering Manager > > Market awareness',
|
||||
},
|
||||
{
|
||||
id: '76GjwwEYaEX_kh02OSpdr',
|
||||
text: 'Engineering Manager > Strategic Thinking > Competitive Analysis',
|
||||
},
|
||||
{
|
||||
id: 'TQY4hjo56rDdlbzjs_-nl',
|
||||
text: 'Engineering Manager > Strategic Thinking > Competitive Analysis',
|
||||
},
|
||||
{
|
||||
id: 'KA0y6KdVTjJFeX3frHUNo',
|
||||
text: 'Engineering Manager > Organizational Awareness > Company Culture',
|
||||
},
|
||||
{
|
||||
id: 'tt02qGHSn4fPbpboZ1Ni_',
|
||||
text: 'Engineering Manager > Organizational Awareness > Change management',
|
||||
},
|
||||
{
|
||||
id: 'mjMRNhPkeb4lEZXBb8Iot',
|
||||
text: 'Engineering Manager > Organizational Awareness > Organization structure',
|
||||
},
|
||||
{
|
||||
id: 'Zoz01JcNU69gr95IcWhYM',
|
||||
text: 'Engineering Manager > Organizational Awareness > Politics navigation',
|
||||
},
|
||||
{
|
||||
id: 'Hb_rZe4k37Rr0enSh7woV',
|
||||
text: 'Engineering Manager > Organizational Awareness > Cross-department collaboration',
|
||||
},
|
||||
{
|
||||
id: 'oqjr26B27SHSYVQ4IFnA1',
|
||||
text: 'Engineering Manager > Financial Management > Budget Planning',
|
||||
},
|
||||
{
|
||||
id: 'iwwxnSVvCmZ57stXwzk8G',
|
||||
text: 'Engineering Manager > Financial Management > Resource forecasting',
|
||||
},
|
||||
{
|
||||
id: 'rbhZJZtRV1ZZ5QaYW77ry',
|
||||
text: 'Engineering Manager > Financial Management > Cost Optimization',
|
||||
},
|
||||
{
|
||||
id: 'Imgt669vbUT_Iec2o4Gvt',
|
||||
text: 'Engineering Manager > Financial Management > Vendor Management',
|
||||
},
|
||||
{
|
||||
id: 'ZuZuzwy-Frsn_PFJZVuAQ',
|
||||
text: 'Engineering Manager > Team Culture > Defining and Enforcing Values',
|
||||
},
|
||||
{
|
||||
id: '6iM0n4faMNhk4mezS9AcG',
|
||||
text: 'Engineering Manager > Team Culture > Inclusive environment creation',
|
||||
},
|
||||
{
|
||||
id: '8Nro6PTkEkNugYBjQfJ6O',
|
||||
text: 'Engineering Manager > Team Culture > Team Traditions and Rituals',
|
||||
},
|
||||
{
|
||||
id: 'Vb3A4a-UpGTAEs-dVI66s',
|
||||
text: 'Engineering Manager > Team Culture > Recognition programs',
|
||||
},
|
||||
{
|
||||
id: 'LE3ykySYFL23KvuwxeBaR',
|
||||
text: 'Engineering Manager > Team Culture > Social connections',
|
||||
},
|
||||
{
|
||||
id: 'g9FvFKC715tZL2ZGlPl3N',
|
||||
text: 'Engineering Manager > Team Culture > Bias Recognition / Mitigation',
|
||||
},
|
||||
{
|
||||
id: 'njqjYPMQK3nGYtqHzUylo',
|
||||
text: 'Engineering Manager > Engineering Culture > Innovation fostering',
|
||||
},
|
||||
{
|
||||
id: 'aeD-kBZEr1NHFtAD8yHI_',
|
||||
text: 'Engineering Manager > Engineering Culture > Learning culture development',
|
||||
},
|
||||
{
|
||||
id: '74-7hDXaBVXYo6LJdgac_',
|
||||
text: 'Engineering Manager > Engineering Culture > Knowledge sharing practices',
|
||||
},
|
||||
{
|
||||
id: 'Cq0OFaWqSRathZO-bxBrP',
|
||||
text: 'Engineering Manager > Engineering Culture > Technical excellence mindset',
|
||||
},
|
||||
{
|
||||
id: 'fYkKo8D35AHd8agr3YrIP',
|
||||
text: 'Engineering Manager > > Blameless Post-mortems',
|
||||
},
|
||||
{
|
||||
id: 'Xaeb67Nqdi0kwvehQUYeJ',
|
||||
text: 'Engineering Manager > Incident Response > Emergency protocols',
|
||||
},
|
||||
{
|
||||
id: 'LQ3YfAgJ4UaDgtnN-cMht',
|
||||
text: 'Engineering Manager > Incident Response > War Room Management',
|
||||
},
|
||||
{
|
||||
id: 'irEwTIubCjORnlH27QpEo',
|
||||
text: 'Engineering Manager > Incident Response > Stakeholder Communication',
|
||||
},
|
||||
{
|
||||
id: '2fHcb1dAnf34APCAAlwnR',
|
||||
text: 'Engineering Manager > Incident Response > Service Recovery',
|
||||
},
|
||||
{
|
||||
id: '8zyK34SwHry2lrWchw0KZ',
|
||||
text: 'Engineering Manager > Incident Response > Post-incident analysis',
|
||||
},
|
||||
{
|
||||
id: '2RwpGPegD2GyiiV6SVbbM',
|
||||
text: 'Engineering Manager > Risk Mitigation > Contingency planning',
|
||||
},
|
||||
{
|
||||
id: 'KOTzJ8e7mc0wmF46vrj3I',
|
||||
text: 'Engineering Manager > Risk Mitigation > Disaster recovery',
|
||||
},
|
||||
{
|
||||
id: 'v6N7BH0B55gX0oNXb55D7',
|
||||
text: 'Engineering Manager > Risk Mitigation > Business continuity',
|
||||
},
|
||||
{
|
||||
id: 'FNp4-RgPvfC76pJKjX56a',
|
||||
text: 'Engineering Manager > Risk Mitigation > Security incident handling',
|
||||
},
|
||||
{
|
||||
id: 'kQG_wk66-51dA4Ly9ivjM',
|
||||
text: 'Engineering Manager > Risk Mitigation > Production issues management',
|
||||
},
|
||||
{
|
||||
id: 'mIUx8zAHWyPWPGvxuTK4y',
|
||||
text: 'Engineering Manager > Team Support > Contingency planning',
|
||||
},
|
||||
{
|
||||
id: 'nnoVA8W70hrNDxN3XQCVL',
|
||||
text: 'Engineering Manager > Team Support > Disaster recovery',
|
||||
},
|
||||
{
|
||||
id: 'FwK-B7jRbBXVnuY9JxI1w',
|
||||
text: 'Engineering Manager > Team Support > Business continuity',
|
||||
},
|
||||
{
|
||||
id: 'QFhhOgwz_bgZgOfKFg5XA',
|
||||
text: 'Engineering Manager > Team Support > Security incident handling',
|
||||
},
|
||||
{
|
||||
id: 'tmY4Ktu6luFg5wKylJW76',
|
||||
text: 'Engineering Manager > Team Support > Production issues management',
|
||||
},
|
||||
{
|
||||
id: 'WYoqfmk5ejB2UOiYXh4Zi',
|
||||
text: 'Engineering Manager > Partner Management > Vendor relationships',
|
||||
},
|
||||
{
|
||||
id: 'xMN575nnnQJeHe2oJYw17',
|
||||
text: 'Engineering Manager > Partner Management > Technology partnerships',
|
||||
},
|
||||
{
|
||||
id: 'f3P0fF4UzgVQZuMVTVmP1',
|
||||
text: 'Engineering Manager > Partner Management > Integration management',
|
||||
},
|
||||
{
|
||||
id: 'ukmMMWacekcejEiEKCLzh',
|
||||
text: 'Engineering Manager > Partner Management > API strategy',
|
||||
},
|
||||
{
|
||||
id: 'Jctp5tPCK_vY35_bh7QFk',
|
||||
text: 'Engineering Manager > Partner Management > External collaboration',
|
||||
},
|
||||
{
|
||||
id: 'QEViLNgG4Uv9Q9PWig0u3',
|
||||
text: 'Engineering Manager > Customer Relations > Customer feedback integration',
|
||||
},
|
||||
{
|
||||
id: 'V5s2i-L2tsZFNxMLN_e_U',
|
||||
text: 'Engineering Manager > Customer Relations > Technical customer support',
|
||||
},
|
||||
{
|
||||
id: 'A-Aa7VdDAYfaMUZD_cWwP',
|
||||
text: 'Engineering Manager > Customer Relations > Customer success alignment',
|
||||
},
|
||||
{
|
||||
id: '2QwMcO27H3ygtLlWVplxr',
|
||||
text: 'Engineering Manager > Customer Relations > Feature prioritization',
|
||||
},
|
||||
{
|
||||
id: 'tCT2syTMyEHCspDLXxk6R',
|
||||
text: 'Engineering Manager > Customer Relations > Technical partnerships',
|
||||
},
|
||||
{
|
||||
id: '5MM1ccB1pmQcd3Uyjmbr7',
|
||||
text: 'Engineering Manager > Executive Communication > Board presentations',
|
||||
},
|
||||
{
|
||||
id: 'CHothgVl8ulFthwS7uKqK',
|
||||
text: 'Engineering Manager > Executive Communication > Executive summaries',
|
||||
},
|
||||
{
|
||||
id: 'uBrsV_EocAkRWEqJYjoZn',
|
||||
text: 'Engineering Manager > Executive Communication > Strategic proposals',
|
||||
},
|
||||
{
|
||||
id: 'pLUOU2AmAJ9aJAmIlVD7D',
|
||||
text: 'Engineering Manager > Executive Communication > Budget requests',
|
||||
},
|
||||
{
|
||||
id: 'QssXmeifoI3dtu-eXp8PK',
|
||||
text: 'Engineering Manager > Executive Communication > Vision alignment',
|
||||
},
|
||||
{
|
||||
id: 'gHhNi32MSBmqk-oKOy-uj',
|
||||
text: 'Engineering Manager > Knowledge Management > Documentation > Architecture documentation',
|
||||
},
|
||||
{
|
||||
id: 'Kwy9O1z2hpeE0Sb3qtxEg',
|
||||
text: 'Engineering Manager > Knowledge Management > Documentation > Process documentation',
|
||||
},
|
||||
{
|
||||
id: 'dTjp_rEl1ITZjvELqVtfv',
|
||||
text: 'Engineering Manager > Knowledge Management > Documentation > Decision records',
|
||||
},
|
||||
{
|
||||
id: '4-MCXFOkMGcN369OPG-vw',
|
||||
text: 'Engineering Manager > Knowledge Management > Documentation > Best Practices',
|
||||
},
|
||||
{
|
||||
id: '4-MCXFOkMGcN369OPG-vw',
|
||||
text: 'Engineering Manager > Knowledge Management > Documentation > Best Practices',
|
||||
},
|
||||
{
|
||||
id: 'HUQ_-vU2pdBPyF0mBocHz',
|
||||
text: 'Engineering Manager > Knowledge Management > Documentation > Lessons Learned',
|
||||
},
|
||||
{
|
||||
id: 'g6K9fxWdRQT5h_u4Y_bkq',
|
||||
text: 'Engineering Manager > Knowledge Management > Knowledge Transfer > Mentoring Programs',
|
||||
},
|
||||
{
|
||||
id: '7t9jmv3_lRCEG5y5DA8bF',
|
||||
text: 'Engineering Manager > Knowledge Management > Knowledge Transfer > Knowledge bases',
|
||||
},
|
||||
{
|
||||
id: '2LO0iWf-y3l4rA1n_oG1g',
|
||||
text: 'Engineering Manager > Knowledge Management > Knowledge Transfer > Tech Talks',
|
||||
},
|
||||
{
|
||||
id: 'S8-nwYKlG7YHL2dWwR303',
|
||||
text: 'Engineering Manager > Knowledge Management > Knowledge Transfer > Brown Bags',
|
||||
},
|
||||
{
|
||||
id: 'QMAIEkVFHrrP6lUWvd0S8',
|
||||
text: 'Engineering Manager > Change Management > Technical Change > Migration planning',
|
||||
},
|
||||
{
|
||||
id: '9mNLfntu1TPjcX3RoUeMq',
|
||||
text: 'Engineering Manager > Change Management > Technical Change > Legacy system retirement',
|
||||
},
|
||||
{
|
||||
id: 'jerPoyfCcwZbNuE_cl1hq',
|
||||
text: 'Engineering Manager > Change Management > Technical Change > Technology adoption',
|
||||
},
|
||||
{
|
||||
id: 'f-52wRfPRrA9iniOMYQB7',
|
||||
text: 'Engineering Manager > Change Management > Technical Change > Tool transitions',
|
||||
},
|
||||
{
|
||||
id: 'ev9ZKygqETctLMSt1GAFU',
|
||||
text: 'Engineering Manager > Change Management > Technical Change > Process changes',
|
||||
},
|
||||
{
|
||||
id: '1__zRE1iu1FDX9ynpWSBS',
|
||||
text: 'Engineering Manager > Change Management > Organizational Change > Change strategy',
|
||||
},
|
||||
{
|
||||
id: 'oGmtkOGVgA4huGJqkBEfj',
|
||||
text: 'Engineering Manager > Change Management > Organizational Change > Impact assessment',
|
||||
},
|
||||
{
|
||||
id: '34uOnta7dKOyZL0et_RC8',
|
||||
text: 'Engineering Manager > Change Management > Organizational Change > Stakeholder management',
|
||||
},
|
||||
{
|
||||
id: 'Mxi4g_PzT0oYc3NgR0UVg',
|
||||
text: 'Engineering Manager > Change Management > Organizational Change > Communication planning',
|
||||
},
|
||||
{
|
||||
id: 'Mxi4g_PzT0oYc3NgR0UVg',
|
||||
text: 'Engineering Manager > Change Management > Organizational Change > Communication planning',
|
||||
},
|
||||
{
|
||||
id: 'vfp6VmWnhpre_eDORg7ht',
|
||||
text: 'Engineering Manager > Change Management > Organizational Change > Resistance management',
|
||||
},
|
||||
{
|
||||
id: '5_CE3p5jMA1uEqFNfp7Kh',
|
||||
text: 'Engineering Manager > Change Management > > Reorganizations',
|
||||
},
|
||||
{
|
||||
id: 'ph0U4l2alVJ8lUJ96q7co',
|
||||
text: 'Engineering Manager > Change Management > Team Change > Team mergers',
|
||||
},
|
||||
{
|
||||
id: 'FayHWdUHHYFFBwnXx37Gk',
|
||||
text: 'Engineering Manager > Change Management > Team Change > Role transitions',
|
||||
},
|
||||
{
|
||||
id: 'eIlW4mZKNQfBsTDmZf7ex',
|
||||
text: 'Engineering Manager > Change Management > Team Change > Responsibility shifts',
|
||||
},
|
||||
{
|
||||
id: 'y7YHIz7OI4sNfC_nhfLcu',
|
||||
text: 'Engineering Manager > Change Management > Team Change > Culture evolution',
|
||||
},
|
||||
];
|
||||
|
||||
const OPENAI_API_KEY = process.env.OPENAI_API_KEY;
|
||||
|
||||
if (!OPENAI_API_KEY) {
|
||||
console.error('OPENAI_API_KEY is not set');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const openai = new OpenAI({
|
||||
apiKey: OPENAI_API_KEY,
|
||||
});
|
||||
|
||||
const prompt = `
|
||||
You are a helpful assistant that can help me generate content for a roadmap tree.
|
||||
User will give you roadmap topics in the form of "Parent > Child > Leaf". You need
|
||||
to generate content for the last node in the hierarchy in relation to the parents.
|
||||
Remember that you are describing how an Engineering Manager interacts with or handles
|
||||
the given topic, not just explaining the topic itself. You may explain why the given
|
||||
topic is important in an engineering team. Also, I hate it when you say "In the realm of..."
|
||||
or "In the context of..." or "..in the context of..." or "when we talk about..." or something
|
||||
similar.
|
||||
Content should be helpful and engaging for a technical audience.
|
||||
It can include things like (you can include more or less, depending on the topic):
|
||||
- How does an Engineering Manager work with or handle this area?
|
||||
- What are their key responsibilities related to this topic?
|
||||
- What challenges do they face and how do they address them?
|
||||
- What skills and approaches are needed to succeed in this aspect?
|
||||
The content should be a few short textual paragraphs (MAXIMUM 3) that is NO MORE THAN 130 words.
|
||||
IMPORTANT: Use simple and clear English. Avoid complex words and jargon when possible.
|
||||
Write in a way that is easy to understand. Use short sentences and common words.
|
||||
`;
|
||||
|
||||
/**
|
||||
* Generates content for a given node using OpenAI's GPT model
|
||||
* @param {Node} node - The node to generate content for
|
||||
* @returns {Promise<string>} The generated content
|
||||
*/
|
||||
const generateContent = async (node) => {
|
||||
try {
|
||||
const content = await openai.chat.completions.create({
|
||||
model: 'gpt-4',
|
||||
messages: [
|
||||
{ role: 'system', content: prompt },
|
||||
{
|
||||
role: 'user',
|
||||
content: `Node: ${node.text}`,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
return content.choices[0].message.content;
|
||||
} catch (error) {
|
||||
console.error(
|
||||
`Error generating content for node ${node.id}:`,
|
||||
error.message,
|
||||
);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
const roadmapContentDir = path.join(
|
||||
__dirname,
|
||||
`../src/data/roadmaps/${roadmapId}/content`,
|
||||
);
|
||||
const contentFiles = fs.readdirSync(roadmapContentDir);
|
||||
|
||||
/**
|
||||
* Processes a single node by generating content and writing to file
|
||||
* @param {Node} node - The node to process
|
||||
* @param {string} roadmapContentDir - Directory path for content files
|
||||
* @param {string[]} contentFiles - List of existing content files
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
const processNode = async (node, roadmapContentDir, contentFiles) => {
|
||||
try {
|
||||
const nodeId = node.id;
|
||||
const relevantFileName = contentFiles.find((file) =>
|
||||
file.endsWith(`${nodeId}.md`),
|
||||
);
|
||||
|
||||
if (!relevantFileName) {
|
||||
console.warn(`No matching file found for node ${nodeId}`);
|
||||
return;
|
||||
}
|
||||
|
||||
const fileTitle = node.text
|
||||
.replace(/\s+>\s+/g, '>')
|
||||
.split('>')
|
||||
.pop();
|
||||
|
||||
const content = await generateContent(node);
|
||||
const filePath = path.join(roadmapContentDir, relevantFileName);
|
||||
|
||||
await fs.promises.writeFile(filePath, `# ${fileTitle}\n\n${content}`);
|
||||
console.log(`Successfully processed node ${nodeId}`);
|
||||
} catch (error) {
|
||||
console.error(`Failed to process node ${node.id}:`, error.message);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Main function to run the content generation
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
const main = async () => {
|
||||
try {
|
||||
// Process nodes in parallel with concurrency limit
|
||||
const BATCH_SIZE = 20; // Adjust based on API rate limits
|
||||
|
||||
for (let i = 0; i < nodes.length; i += BATCH_SIZE) {
|
||||
const batch = nodes.slice(i, i + BATCH_SIZE);
|
||||
const promises = batch.map((node) =>
|
||||
processNode(node, roadmapContentDir, contentFiles),
|
||||
);
|
||||
|
||||
await Promise.allSettled(promises);
|
||||
|
||||
// Add a small delay between batches to avoid rate limiting
|
||||
if (i + BATCH_SIZE < nodes.length) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
}
|
||||
}
|
||||
|
||||
console.log('Content generation completed');
|
||||
} catch (error) {
|
||||
console.error('Fatal error in main process:', error);
|
||||
process.exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
// Add error handling for uncaught exceptions
|
||||
process.on('uncaughtException', (error) => {
|
||||
console.error('Uncaught Exception:', error);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
process.on('unhandledRejection', (error) => {
|
||||
console.error('Unhandled Rejection:', error);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
main();
|
||||
@@ -23,11 +23,16 @@ export const allowedCustomRoadmapType = ['role', 'skill'] as const;
|
||||
export type AllowedCustomRoadmapType =
|
||||
(typeof allowedCustomRoadmapType)[number];
|
||||
|
||||
export const allowedShowcaseStatus = ['visible', 'hidden'] as const;
|
||||
export const allowedShowcaseStatus = [
|
||||
'submitted',
|
||||
'approved',
|
||||
'rejected',
|
||||
'rejected_with_reason',
|
||||
] as const;
|
||||
export type AllowedShowcaseStatus = (typeof allowedShowcaseStatus)[number];
|
||||
|
||||
export interface RoadmapDocument {
|
||||
_id?: string;
|
||||
_id: string;
|
||||
title: string;
|
||||
description?: string;
|
||||
slug?: string;
|
||||
@@ -51,14 +56,22 @@ export interface RoadmapDocument {
|
||||
edges: any[];
|
||||
|
||||
isDiscoverable?: boolean;
|
||||
showcaseStatus?: AllowedShowcaseStatus;
|
||||
ratings: {
|
||||
average: number;
|
||||
totalCount: number;
|
||||
breakdown: {
|
||||
[key: number]: number;
|
||||
};
|
||||
};
|
||||
|
||||
showcaseStatus?: AllowedShowcaseStatus;
|
||||
showcaseRejectedReason?: string;
|
||||
showcaseRejectedAt?: Date;
|
||||
showcaseSubmittedAt?: Date;
|
||||
showcaseApprovedAt?: Date;
|
||||
|
||||
hasMigratedContent?: boolean;
|
||||
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { getUrlParams } from '../../lib/browser';
|
||||
import { type AppError, type FetchError, httpGet } from '../../lib/http';
|
||||
import { RoadmapHeader } from './RoadmapHeader';
|
||||
import { TopicDetail } from '../TopicDetail/TopicDetail';
|
||||
import type { RoadmapDocument } from './CreateRoadmap/CreateRoadmapModal';
|
||||
import { currentRoadmap } from '../../stores/roadmap';
|
||||
import { RestrictedPage } from './RestrictedPage';
|
||||
import { FlowRoadmapRenderer } from './FlowRoadmapRenderer';
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { queryClient } from '../../stores/query-client';
|
||||
import { httpGet, type FetchError } from '../../lib/query-http';
|
||||
import { useCustomRoadmap } from '../../hooks/use-custom-roadmap';
|
||||
|
||||
export const allowedLinkTypes = [
|
||||
'video',
|
||||
@@ -71,43 +74,24 @@ export function CustomRoadmap(props: CustomRoadmapProps) {
|
||||
|
||||
const [isLoading, setIsLoading] = useState(true);
|
||||
const [roadmap, setRoadmap] = useState<GetRoadmapResponse | null>(null);
|
||||
const [error, setError] = useState<AppError | FetchError | undefined>();
|
||||
|
||||
async function getRoadmap() {
|
||||
setIsLoading(true);
|
||||
const { data, error } = useCustomRoadmap({
|
||||
id,
|
||||
secret,
|
||||
slug,
|
||||
});
|
||||
|
||||
const roadmapUrl = slug
|
||||
? new URL(
|
||||
`${import.meta.env.PUBLIC_API_URL}/v1-get-roadmap-by-slug/${slug}`,
|
||||
)
|
||||
: new URL(`${import.meta.env.PUBLIC_API_URL}/v1-get-roadmap/${id}`);
|
||||
|
||||
if (secret) {
|
||||
roadmapUrl.searchParams.set('secret', secret);
|
||||
}
|
||||
|
||||
const { response, error } = await httpGet<GetRoadmapResponse>(
|
||||
roadmapUrl.toString(),
|
||||
);
|
||||
|
||||
if (error || !response) {
|
||||
setError(error);
|
||||
setIsLoading(false);
|
||||
useEffect(() => {
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
|
||||
document.title = `${response.title} - roadmap.sh`;
|
||||
|
||||
setRoadmap(response);
|
||||
currentRoadmap.set(response);
|
||||
document.title = `${data.title} - roadmap.sh`;
|
||||
setRoadmap(data);
|
||||
currentRoadmap.set(data);
|
||||
setIsLoading(false);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
getRoadmap().finally(() => {
|
||||
hideRoadmapLoader();
|
||||
});
|
||||
}, []);
|
||||
hideRoadmapLoader();
|
||||
}, [data]);
|
||||
|
||||
if (isLoading) {
|
||||
return null;
|
||||
|
||||
@@ -11,6 +11,8 @@ import { RoadmapActionButton } from './RoadmapActionButton';
|
||||
import { ShareRoadmapButton } from '../ShareRoadmapButton.tsx';
|
||||
import { CustomRoadmapAlert } from './CustomRoadmapAlert.tsx';
|
||||
import { CustomRoadmapRatings } from './CustomRoadmapRatings.tsx';
|
||||
import { ShowcaseStatus } from './Showcase/ShowcaseStatus.tsx';
|
||||
import { ShowcaseAlert } from './Showcase/ShowcaseAlert.tsx';
|
||||
|
||||
type RoadmapHeaderProps = {};
|
||||
|
||||
@@ -73,122 +75,132 @@ export function RoadmapHeader(props: RoadmapHeaderProps) {
|
||||
: '/images/default-avatar.png';
|
||||
|
||||
return (
|
||||
<div className="border-b">
|
||||
<div className="container relative py-5 sm:py-12">
|
||||
{!$canManageCurrentRoadmap && <CustomRoadmapAlert />}
|
||||
|
||||
{creator?.name && (
|
||||
<div className="-mb-1 flex items-center gap-1.5 text-sm text-gray-500">
|
||||
<img
|
||||
alt={creator.name}
|
||||
src={avatarUrl}
|
||||
className="h-5 w-5 rounded-full"
|
||||
/>
|
||||
<span>
|
||||
Created by
|
||||
<span className="font-semibold text-gray-900">
|
||||
{creator?.name}
|
||||
</span>
|
||||
{team && (
|
||||
<>
|
||||
from
|
||||
<span className="font-semibold text-gray-900">
|
||||
{team?.name}
|
||||
</span>
|
||||
</>
|
||||
)}
|
||||
</span>
|
||||
</div>
|
||||
<>
|
||||
<div className="relative border-b">
|
||||
{$currentRoadmap && $canManageCurrentRoadmap && (
|
||||
<ShowcaseAlert currentRoadmap={$currentRoadmap} />
|
||||
)}
|
||||
<div className="mb-3 mt-4 sm:mb-4">
|
||||
<h1 className="text-2xl font-bold sm:mb-2 sm:text-4xl">{title}</h1>
|
||||
<p className="mt-0.5 text-sm text-gray-500 sm:text-lg">
|
||||
{description}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-between gap-2 sm:gap-0">
|
||||
<div className="flex justify-stretch gap-1 sm:gap-2">
|
||||
<a
|
||||
href="/community"
|
||||
className="rounded-md bg-gray-500 px-3 py-1.5 text-xs font-medium text-white hover:bg-gray-600 sm:text-sm"
|
||||
aria-label="Back to All Roadmaps"
|
||||
>
|
||||
←
|
||||
<span className="hidden sm:inline"> Discover more</span>
|
||||
</a>
|
||||
<div className="container relative py-5 sm:py-12">
|
||||
{!$canManageCurrentRoadmap && <CustomRoadmapAlert />}
|
||||
|
||||
<ShareRoadmapButton
|
||||
roadmapId={roadmapId!}
|
||||
description={description!}
|
||||
pageUrl={`https://roadmap.sh/r/${roadmapSlug}`}
|
||||
allowEmbed={true}
|
||||
/>
|
||||
{creator?.name && (
|
||||
<div className="-mb-1 flex items-center gap-1.5 text-sm text-gray-500">
|
||||
<img
|
||||
alt={creator.name}
|
||||
src={avatarUrl}
|
||||
className="h-5 w-5 rounded-full"
|
||||
/>
|
||||
<span>
|
||||
Created by
|
||||
<span className="font-semibold text-gray-900">
|
||||
{creator?.name}
|
||||
</span>
|
||||
{team && (
|
||||
<>
|
||||
from
|
||||
<span className="font-semibold text-gray-900">
|
||||
{team?.name}
|
||||
</span>
|
||||
</>
|
||||
)}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
<div className="mb-3 mt-4 sm:mb-4">
|
||||
<h1 className="text-2xl font-bold sm:mb-2 sm:text-4xl">{title}</h1>
|
||||
<p className="mt-0.5 text-sm text-gray-500 sm:text-lg">
|
||||
{description}
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
{$canManageCurrentRoadmap && (
|
||||
<>
|
||||
{isSharing && $currentRoadmap && (
|
||||
<ShareOptionsModal
|
||||
roadmapSlug={$currentRoadmap?.slug}
|
||||
isDiscoverable={$currentRoadmap.isDiscoverable}
|
||||
description={$currentRoadmap?.description}
|
||||
visibility={$currentRoadmap?.visibility}
|
||||
teamId={$currentRoadmap?.teamId}
|
||||
roadmapId={$currentRoadmap?._id!}
|
||||
sharedFriendIds={$currentRoadmap?.sharedFriendIds || []}
|
||||
sharedTeamMemberIds={
|
||||
$currentRoadmap?.sharedTeamMemberIds || []
|
||||
}
|
||||
onClose={() => setIsSharing(false)}
|
||||
onShareSettingsUpdate={(settings) => {
|
||||
currentRoadmap.set({
|
||||
...$currentRoadmap,
|
||||
...settings,
|
||||
});
|
||||
|
||||
<div className="flex justify-between gap-2 sm:gap-0">
|
||||
<div className="flex justify-stretch gap-1 sm:gap-2">
|
||||
<a
|
||||
href="/community"
|
||||
className="rounded-md bg-gray-500 px-3 py-1.5 text-xs font-medium text-white hover:bg-gray-600 sm:text-sm"
|
||||
aria-label="Back to All Roadmaps"
|
||||
>
|
||||
←
|
||||
<span className="hidden sm:inline"> Discover more</span>
|
||||
</a>
|
||||
|
||||
<ShareRoadmapButton
|
||||
roadmapId={roadmapId!}
|
||||
description={description!}
|
||||
pageUrl={`https://roadmap.sh/r/${roadmapSlug}`}
|
||||
allowEmbed={true}
|
||||
/>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
{$canManageCurrentRoadmap && (
|
||||
<>
|
||||
{isSharing && $currentRoadmap && (
|
||||
<ShareOptionsModal
|
||||
roadmapSlug={$currentRoadmap?.slug}
|
||||
isDiscoverable={$currentRoadmap.isDiscoverable}
|
||||
description={$currentRoadmap?.description}
|
||||
visibility={$currentRoadmap?.visibility}
|
||||
teamId={$currentRoadmap?.teamId}
|
||||
roadmapId={$currentRoadmap?._id!}
|
||||
sharedFriendIds={$currentRoadmap?.sharedFriendIds || []}
|
||||
sharedTeamMemberIds={
|
||||
$currentRoadmap?.sharedTeamMemberIds || []
|
||||
}
|
||||
onClose={() => setIsSharing(false)}
|
||||
onShareSettingsUpdate={(settings) => {
|
||||
currentRoadmap.set({
|
||||
...$currentRoadmap,
|
||||
...settings,
|
||||
});
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
|
||||
{$currentRoadmap && (
|
||||
<ShowcaseStatus currentRoadmap={$currentRoadmap} />
|
||||
)}
|
||||
|
||||
<RoadmapActionButton
|
||||
onUpdateSharing={() => setIsSharing(true)}
|
||||
onCustomize={() => {
|
||||
window.location.href = `${
|
||||
import.meta.env.PUBLIC_EDITOR_APP_URL
|
||||
}/${$currentRoadmap?._id}`;
|
||||
}}
|
||||
onDelete={() => {
|
||||
const confirmation = window.confirm(
|
||||
'Are you sure you want to delete this roadmap?',
|
||||
);
|
||||
|
||||
if (!confirmation) {
|
||||
return;
|
||||
}
|
||||
|
||||
deleteResource().finally(() => null);
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
|
||||
<RoadmapActionButton
|
||||
onUpdateSharing={() => setIsSharing(true)}
|
||||
onCustomize={() => {
|
||||
window.location.href = `${
|
||||
import.meta.env.PUBLIC_EDITOR_APP_URL
|
||||
}/${$currentRoadmap?._id}`;
|
||||
}}
|
||||
onDelete={() => {
|
||||
const confirmation = window.confirm(
|
||||
'Are you sure you want to delete this roadmap?',
|
||||
);
|
||||
|
||||
if (!confirmation) {
|
||||
return;
|
||||
}
|
||||
|
||||
deleteResource().finally(() => null);
|
||||
}}
|
||||
{showcaseStatus === 'approved' && (
|
||||
<CustomRoadmapRatings
|
||||
roadmapSlug={roadmapSlug!}
|
||||
ratings={ratings!}
|
||||
canManage={$canManageCurrentRoadmap}
|
||||
unseenRatingCount={unseenRatingCount || 0}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
|
||||
{((ratings?.average || 0) > 0 || showcaseStatus === 'visible') && (
|
||||
<CustomRoadmapRatings
|
||||
roadmapSlug={roadmapSlug!}
|
||||
ratings={ratings!}
|
||||
canManage={$canManageCurrentRoadmap}
|
||||
unseenRatingCount={unseenRatingCount || 0}
|
||||
/>
|
||||
)}
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<RoadmapHint
|
||||
roadmapTitle={title!}
|
||||
hasTNSBanner={false}
|
||||
roadmapId={roadmapId!}
|
||||
/>
|
||||
<RoadmapHint
|
||||
roadmapTitle={title!}
|
||||
hasTNSBanner={false}
|
||||
roadmapId={roadmapId!}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
88
src/components/CustomRoadmap/Showcase/ShowcaseAlert.tsx
Normal file
88
src/components/CustomRoadmap/Showcase/ShowcaseAlert.tsx
Normal file
@@ -0,0 +1,88 @@
|
||||
import {EyeIcon, FlagIcon, FrownIcon, PartyPopper, SmileIcon} from 'lucide-react';
|
||||
import { cn } from '../../../lib/classname';
|
||||
import type { GetRoadmapResponse } from '../CustomRoadmap';
|
||||
import { useState } from 'react';
|
||||
import { SubmitShowcaseWarning } from './SubmitShowcaseWarning';
|
||||
|
||||
type ShowcaseAlertProps = {
|
||||
currentRoadmap: GetRoadmapResponse;
|
||||
};
|
||||
|
||||
export function ShowcaseAlert(props: ShowcaseAlertProps) {
|
||||
const { currentRoadmap } = props;
|
||||
|
||||
const [showRejectedReason, setShowRejectedReason] = useState(false);
|
||||
|
||||
const { showcaseStatus } = currentRoadmap;
|
||||
if (!showcaseStatus) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const showcaseStatusMap = {
|
||||
submitted: {
|
||||
icon: EyeIcon,
|
||||
label:
|
||||
'We are currently reviewing your roadmap, please wait for our response.',
|
||||
className: 'bg-blue-100 text-blue-600 border-blue-200',
|
||||
},
|
||||
approved: {
|
||||
icon: PartyPopper,
|
||||
label: 'Your roadmap is now visible on the community roadmaps page.',
|
||||
className: 'text-green-600 bg-green-100 border-green-300',
|
||||
},
|
||||
rejected: {
|
||||
icon: FrownIcon,
|
||||
label: 'Sorry, we are unable to feature your roadmap at this time.',
|
||||
className: 'text-red-600 bg-red-100 border-red-300',
|
||||
},
|
||||
rejected_with_reason: {
|
||||
icon: FlagIcon,
|
||||
label: (
|
||||
<>
|
||||
Your roadmap could not be featured at this time{' '}
|
||||
<button
|
||||
className="font-medium underline underline-offset-2 hover:text-red-800"
|
||||
onClick={() => {
|
||||
setShowRejectedReason(true);
|
||||
}}
|
||||
>
|
||||
click here to see why
|
||||
</button>
|
||||
</>
|
||||
),
|
||||
className: 'text-red-800 bg-red-200 border-red-200',
|
||||
},
|
||||
};
|
||||
const showcaseStatusDetails = showcaseStatusMap[showcaseStatus];
|
||||
if (!showcaseStatusDetails) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const { icon: Icon, label, className } = showcaseStatusDetails;
|
||||
|
||||
return (
|
||||
<>
|
||||
{showRejectedReason && (
|
||||
<SubmitShowcaseWarning
|
||||
onClose={() => {
|
||||
setShowRejectedReason(false);
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
|
||||
<div
|
||||
className={cn(
|
||||
'z-10 border-b -mb-4',
|
||||
showcaseStatusDetails.className,
|
||||
)}
|
||||
>
|
||||
<div className="container relative flex items-center justify-center py-2 text-sm">
|
||||
<div className={cn('flex items-center gap-2', className)}>
|
||||
<Icon className="h-4 w-4 shrink-0 stroke-[2.5]" />
|
||||
<div>{label}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
42
src/components/CustomRoadmap/Showcase/ShowcaseStatus.tsx
Normal file
42
src/components/CustomRoadmap/Showcase/ShowcaseStatus.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
import { useState } from 'react';
|
||||
import { SubmitShowcaseWarning } from './SubmitShowcaseWarning';
|
||||
import type { GetRoadmapResponse } from '../CustomRoadmap';
|
||||
import { SendIcon } from 'lucide-react';
|
||||
|
||||
type ShowcaseStatusProps = {
|
||||
currentRoadmap: GetRoadmapResponse;
|
||||
};
|
||||
|
||||
export function ShowcaseStatus(props: ShowcaseStatusProps) {
|
||||
const { currentRoadmap } = props;
|
||||
|
||||
const { showcaseStatus } = currentRoadmap;
|
||||
const [showSubmitWarning, setShowSubmitWarning] = useState(false);
|
||||
|
||||
if (!currentRoadmap || showcaseStatus) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
{showSubmitWarning && (
|
||||
<SubmitShowcaseWarning
|
||||
onClose={() => {
|
||||
setShowSubmitWarning(false);
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
|
||||
<button
|
||||
className="inline-flex items-center justify-center rounded-md border border-gray-300 bg-white py-1.5 pl-2 pr-2 text-xs font-medium text-black hover:border-gray-300 hover:bg-gray-300 sm:pl-1.5 sm:pr-3 sm:text-sm"
|
||||
onClick={() => {
|
||||
setShowSubmitWarning(true);
|
||||
}}
|
||||
disabled={!!showcaseStatus}
|
||||
>
|
||||
<SendIcon className="mr-0 h-4 w-4 stroke-[2.5] sm:mr-1.5" />
|
||||
<span className="hidden sm:inline">Apply to be Featured</span>
|
||||
</button>
|
||||
</>
|
||||
);
|
||||
}
|
||||
122
src/components/CustomRoadmap/Showcase/SubmitShowcaseWarning.tsx
Normal file
122
src/components/CustomRoadmap/Showcase/SubmitShowcaseWarning.tsx
Normal file
@@ -0,0 +1,122 @@
|
||||
import { useMutation } from '@tanstack/react-query';
|
||||
import { Modal } from '../../Modal';
|
||||
import { queryClient } from '../../../stores/query-client';
|
||||
import { httpPost } from '../../../lib/query-http';
|
||||
import { useStore } from '@nanostores/react';
|
||||
import { currentRoadmap } from '../../../stores/roadmap';
|
||||
import { useToast } from '../../../hooks/use-toast';
|
||||
import { DateTime } from 'luxon';
|
||||
|
||||
type SubmitShowcaseWarningProps = {
|
||||
onClose: () => void;
|
||||
};
|
||||
|
||||
export function SubmitShowcaseWarning(props: SubmitShowcaseWarningProps) {
|
||||
const { onClose } = props;
|
||||
|
||||
const toast = useToast();
|
||||
const $currentRoadmap = useStore(currentRoadmap);
|
||||
|
||||
const submit = useMutation(
|
||||
{
|
||||
mutationFn: async () => {
|
||||
return httpPost(`/v1-submit-for-showcase/${$currentRoadmap?._id}`, {});
|
||||
},
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ['get-roadmap'],
|
||||
});
|
||||
|
||||
onClose();
|
||||
},
|
||||
onError: (error) => {
|
||||
toast.error(error?.message || 'Something went wrong');
|
||||
},
|
||||
},
|
||||
queryClient,
|
||||
);
|
||||
|
||||
const {
|
||||
showcaseStatus,
|
||||
showcaseRejectedReason,
|
||||
showcaseRejectedAt,
|
||||
updatedAt,
|
||||
} = $currentRoadmap || {};
|
||||
|
||||
return (
|
||||
<Modal onClose={onClose}>
|
||||
<div className="p-4">
|
||||
<h2 className="text-lg font-semibold">
|
||||
{showcaseStatus === 'rejected_with_reason'
|
||||
? 'Rejected with Reason'
|
||||
: 'Feature Your Roadmap'}
|
||||
</h2>
|
||||
<p className="mt-2 text-sm">
|
||||
{showcaseStatus === 'rejected_with_reason' && (
|
||||
<>
|
||||
<span
|
||||
className={
|
||||
'block rounded-md bg-red-100 px-2 py-1.5 text-red-700'
|
||||
}
|
||||
>
|
||||
{showcaseRejectedReason}
|
||||
</span>
|
||||
<span className="block mt-3">
|
||||
Feel free to make changes to your roadmap and resubmit.
|
||||
</span>
|
||||
</>
|
||||
)}
|
||||
{!showcaseStatus && (
|
||||
<>
|
||||
We will review your roadmap and if accepted, we will make it
|
||||
public and show it on the community roadmap listing.{' '}
|
||||
<span className="mt-4 block font-medium">
|
||||
Are you sure to submit?
|
||||
</span>
|
||||
</>
|
||||
)}
|
||||
</p>
|
||||
|
||||
<div className="mt-4 grid grid-cols-2 gap-2">
|
||||
<button
|
||||
className="flex-grow cursor-pointer rounded-lg bg-gray-200 py-2 text-center text-sm hover:bg-gray-300"
|
||||
onClick={onClose}
|
||||
disabled={submit.isPending}
|
||||
>
|
||||
Cancel
|
||||
</button>
|
||||
<button
|
||||
className="w-full rounded-lg bg-gray-900 py-2 text-sm text-white hover:bg-gray-800 disabled:cursor-not-allowed disabled:opacity-60"
|
||||
disabled={submit.isPending}
|
||||
onClick={() => {
|
||||
const updatedAtDate =
|
||||
updatedAt && DateTime.fromJSDate(new Date(updatedAt));
|
||||
const showcaseRejectedAtDate =
|
||||
showcaseRejectedAt &&
|
||||
DateTime.fromJSDate(new Date(showcaseRejectedAt));
|
||||
|
||||
if (
|
||||
showcaseRejectedAtDate &&
|
||||
updatedAtDate &&
|
||||
updatedAtDate < showcaseRejectedAtDate
|
||||
) {
|
||||
toast.error(
|
||||
'You need to make changes to your roadmap before resubmitting.',
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
submit.mutate();
|
||||
}}
|
||||
>
|
||||
{submit.isPending
|
||||
? 'Submitting...'
|
||||
: showcaseStatus === 'rejected_with_reason'
|
||||
? 'Resubmit'
|
||||
: 'Submit'}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</Modal>
|
||||
);
|
||||
}
|
||||
@@ -2,8 +2,8 @@ export function SkeletonRoadmapHeader() {
|
||||
return (
|
||||
<div className="border-b">
|
||||
<div className="container relative py-5 sm:py-12">
|
||||
<div className="flex items-center gap-1.5">
|
||||
<div className="h-4 w-4 animate-pulse rounded-full bg-gray-300" />
|
||||
<div className="-mb-0.5 flex items-center gap-1.5">
|
||||
<div className="h-5 w-5 animate-pulse rounded-full bg-gray-300" />
|
||||
<div className="h-5 w-5/12 animate-pulse rounded-md bg-gray-200" />
|
||||
</div>
|
||||
<div className="mb-3 mt-4 sm:mb-4">
|
||||
@@ -12,7 +12,7 @@ export function SkeletonRoadmapHeader() {
|
||||
</div>
|
||||
|
||||
<div className="flex justify-between gap-2 sm:gap-0">
|
||||
<div className='flex gap-1 sm:gap-2'>
|
||||
<div className="flex gap-1 sm:gap-2">
|
||||
<div className="h-7 w-[35.04px] animate-pulse rounded-md bg-gray-300 sm:h-8 sm:w-32" />
|
||||
<div className="h-7 w-[35.04px] animate-pulse rounded-md bg-gray-300 sm:h-8 sm:w-[85px]" />
|
||||
</div>
|
||||
|
||||
@@ -27,9 +27,7 @@ export function DashboardAiRoadmaps(props: DashboardAiRoadmapsProps) {
|
||||
return (
|
||||
<>
|
||||
<div className="mb-2 mt-6 flex items-center justify-between gap-2">
|
||||
<h2 className="text-xs uppercase text-gray-400">
|
||||
My AI Roadmaps
|
||||
</h2>
|
||||
<h2 className="text-xs uppercase text-gray-400">My AI Roadmaps</h2>
|
||||
|
||||
<a
|
||||
href="/ai/explore"
|
||||
@@ -62,6 +60,7 @@ export function DashboardAiRoadmaps(props: DashboardAiRoadmapsProps) {
|
||||
<>
|
||||
{roadmaps.map((roadmap) => (
|
||||
<a
|
||||
key={roadmap.id}
|
||||
href={`/ai/${roadmap.slug}`}
|
||||
className="relative truncate rounded-md border bg-white p-2.5 text-left text-sm shadow-sm hover:border-gray-400 hover:bg-gray-50"
|
||||
>
|
||||
|
||||
@@ -133,14 +133,6 @@ export function DiscoverRoadmaps(props: DiscoverRoadmapsProps) {
|
||||
<div className="relative">
|
||||
<div className="flex flex-col sm:flex-row items-center gap-1.5">
|
||||
<span className="group relative normal-case">
|
||||
<Tooltip
|
||||
position={'bottom-left'}
|
||||
additionalClass={
|
||||
'translate-y-0.5 bg-yellow-300 font-normal !text-black'
|
||||
}
|
||||
>
|
||||
Ask us to feature it once you're done!
|
||||
</Tooltip>
|
||||
<button
|
||||
className="rounded-md bg-black px-3.5 py-1.5 text-sm font-medium text-white transition-colors hover:bg-black"
|
||||
onClick={() => {
|
||||
@@ -151,14 +143,6 @@ export function DiscoverRoadmaps(props: DiscoverRoadmapsProps) {
|
||||
</button>
|
||||
</span>
|
||||
<span className="group relative normal-case">
|
||||
<Tooltip
|
||||
position={'bottom-left'}
|
||||
additionalClass={
|
||||
'translate-y-0.5 bg-yellow-300 font-normal !text-black'
|
||||
}
|
||||
>
|
||||
Up-to-date and maintained by the official team
|
||||
</Tooltip>
|
||||
<a
|
||||
href="/roadmaps"
|
||||
className="inline-block rounded-md bg-gray-300 px-3.5 py-1.5 text-sm text-black sm:py-1.5 sm:text-sm"
|
||||
|
||||
@@ -105,7 +105,7 @@ export function PayToBypass(props: PayToBypassProps) {
|
||||
id={roadmapCountId}
|
||||
name={roadmapCountId}
|
||||
required
|
||||
className="placeholder-text-gray-400 block w-full rounded-lg border border-gray-300 px-3 py-2 shadow-sm outline-none placeholder:text-sm focus:ring-2 focus:ring-black focus:ring-offset-1"
|
||||
className="placeholder-text-gray-400 block w-full rounded-lg border border-gray-300 px-3 py-2 shadow-sm outline-none placeholder:text-sm focus:ring-2 focus:ring-black focus:ring-offset-1"
|
||||
placeholder="How many roadmaps you will be generating (daily, or monthly)?"
|
||||
/>
|
||||
</div>
|
||||
@@ -117,7 +117,7 @@ export function PayToBypass(props: PayToBypassProps) {
|
||||
id={usageId}
|
||||
name={usageId}
|
||||
required
|
||||
className="placeholder-text-gray-400 block w-full rounded-lg border border-gray-300 px-3 py-2 shadow-sm outline-none placeholder:text-sm focus:ring-2 focus:ring-black focus:ring-offset-1"
|
||||
className="placeholder-text-gray-400 block w-full rounded-lg border border-gray-300 px-3 py-2 shadow-sm outline-none placeholder:text-sm focus:ring-2 focus:ring-black focus:ring-offset-1"
|
||||
placeholder="How will you be using this"
|
||||
/>
|
||||
</div>
|
||||
@@ -131,7 +131,7 @@ export function PayToBypass(props: PayToBypassProps) {
|
||||
<textarea
|
||||
id={feedbackId}
|
||||
name={feedbackId}
|
||||
className="placeholder-text-gray-400 block w-full rounded-lg border border-gray-300 px-3 py-2 shadow-sm outline-none placeholder:text-sm focus:ring-2 focus:ring-black focus:ring-offset-1"
|
||||
className="placeholder-text-gray-400 block w-full rounded-lg border border-gray-300 px-3 py-2 shadow-sm outline-none placeholder:text-sm focus:ring-2 focus:ring-black focus:ring-offset-1"
|
||||
placeholder="Do you have any feedback?"
|
||||
/>
|
||||
</div>
|
||||
@@ -148,7 +148,7 @@ export function PayToBypass(props: PayToBypassProps) {
|
||||
</button>
|
||||
<button
|
||||
type="submit"
|
||||
className="disbaled:opacity-60 w-full rounded-lg bg-gray-900 py-2 text-sm text-white hover:bg-gray-800 disabled:cursor-not-allowed"
|
||||
className="w-full rounded-lg bg-gray-900 py-2 text-sm text-white hover:bg-gray-800 disabled:cursor-not-allowed disabled:opacity-60"
|
||||
onClick={() => {
|
||||
setTimeout(() => {
|
||||
onClose();
|
||||
|
||||
@@ -27,11 +27,11 @@ const discordInfo = await getDiscordInfo();
|
||||
class='mt-5 grid grid-cols-1 justify-between gap-2 divide-x-0 sm:my-11 sm:grid-cols-3 sm:gap-0 sm:divide-x mb-4 sm:mb-0'
|
||||
>
|
||||
<OpenSourceStat text='GitHub Stars' value={starCount} secondaryValue={repoRank} />
|
||||
<OpenSourceStat text='Registered Users' value={'+1M'} secondaryValue="+90k" />
|
||||
<OpenSourceStat text='Registered Users' value={'+1.5M'} secondaryValue="+90k" />
|
||||
<OpenSourceStat
|
||||
text='Discord Members'
|
||||
value={discordInfo.totalFormatted}
|
||||
secondaryValue="+1.5k"
|
||||
secondaryValue="+2k"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -28,6 +28,10 @@ export function StickyTopSponsor(props: StickyTopSponsorProps) {
|
||||
return;
|
||||
}
|
||||
|
||||
// preload the image so that we don't see a flicker
|
||||
const img = new Image();
|
||||
img.src = sponsor.imageUrl;
|
||||
|
||||
// hide the onboarding strip when the sponsor is visible
|
||||
isOnboardingStripHidden.set(true);
|
||||
}, [sponsor]);
|
||||
@@ -48,7 +52,7 @@ export function StickyTopSponsor(props: StickyTopSponsorProps) {
|
||||
return (
|
||||
<a
|
||||
target="_blank"
|
||||
href="https://www.google.com"
|
||||
href={sponsor.url}
|
||||
onClick={onSponsorClick}
|
||||
className={cn(
|
||||
'fixed left-0 right-0 top-0 z-[91] flex min-h-[45px] w-full flex-row items-center justify-center px-14 pb-2 pt-1.5 text-base font-medium text-yellow-950',
|
||||
|
||||
@@ -85,7 +85,7 @@ const relatedQuestionDetails = await getQuestionGroupsByIds(relatedQuestions);
|
||||
href={`/${relatedRoadmap.id}`}
|
||||
class='flex flex-col gap-0.5 rounded-md border bg-white px-3.5 py-2 hover:bg-gray-50 sm:flex-row sm:gap-0'
|
||||
>
|
||||
<span class='inline-block min-w-[170px] font-medium'>
|
||||
<span class='inline-block min-w-[195px] font-medium'>
|
||||
{relatedRoadmap.frontmatter.briefTitle}
|
||||
</span>
|
||||
<span class='text-gray-500'>
|
||||
|
||||
@@ -22,6 +22,7 @@ const groupNames = [
|
||||
'Databases',
|
||||
'Computer Science',
|
||||
'Machine Learning',
|
||||
'Management',
|
||||
'Game Development',
|
||||
'Design',
|
||||
'DevOps',
|
||||
@@ -337,11 +338,6 @@ const groups: GroupType[] = [
|
||||
link: '/technical-writer',
|
||||
type: 'role',
|
||||
},
|
||||
{
|
||||
title: 'Product Manager',
|
||||
link: '/product-manager',
|
||||
type: 'role',
|
||||
},
|
||||
{
|
||||
title: 'DevRel Engineer',
|
||||
link: '/devrel',
|
||||
@@ -379,6 +375,21 @@ const groups: GroupType[] = [
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
group: 'Management',
|
||||
roadmaps: [
|
||||
{
|
||||
title: 'Product Manager',
|
||||
link: '/product-manager',
|
||||
type: 'role',
|
||||
},
|
||||
{
|
||||
title: 'Engineering Manager',
|
||||
link: '/engineering-manager',
|
||||
type: 'role',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
group: 'Game Development',
|
||||
roadmaps: [
|
||||
|
||||
22
src/data/changelogs/ai-roadmaps-depth.md
Normal file
22
src/data/changelogs/ai-roadmaps-depth.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: 'AI Roadmaps Improved, Schedule Learning Time'
|
||||
description: 'AI Roadmaps are now deeper and we have added a new feature to schedule learning time'
|
||||
images:
|
||||
"AI Roadmaps Depth": "https://assets.roadmap.sh/guest/3-level-roadmaps-lotx1.png"
|
||||
"Schedule Learning Time": "https://assets.roadmap.sh/guest/schedule-learning-time.png"
|
||||
"Schedule Learning Time Modal": "https://assets.roadmap.sh/guest/schedule-learning-time-2.png"
|
||||
seo:
|
||||
title: 'AI Roadmaps Improved, Schedule Learning Time'
|
||||
description: ''
|
||||
date: 2024-11-18
|
||||
---
|
||||
|
||||
We have improved our AI roadmaps, added a way to schedule learning time, and made some site wide bug fixes and improvements. Here are the details:
|
||||
|
||||
- [AI generated roadmaps](https://roadmap.sh/ai) are now 3 levels deep giving you more detailed information. We have also improved the quality of the generated roadmaps.
|
||||
- Schedule learning time on your calendar for any roadmap. Just click on the "Schedule Learning Time" button and select the time slot you want to block.
|
||||
- You can now dismiss the sticky roadmap progress indicator at the bottom of any roadmap.
|
||||
- We have added some new Project Ideas to our [Frontend Roadmap](/frontend/projects).
|
||||
- Bug fixes and performance improvements
|
||||
|
||||
We have a new Engineering Manager Roadmap coming this week. Stay tuned!
|
||||
362
src/data/guides/devops-automation-tools.md
Normal file
362
src/data/guides/devops-automation-tools.md
Normal file
@@ -0,0 +1,362 @@
|
||||
---
|
||||
title: '6 Best DevOps Automation Tools: Streamline your workflow'
|
||||
description: 'Explore the best DevOps automation tools designed to optimize CI/CD, reduce manual tasks, and drive efficiency in your development cycle.'
|
||||
authorId: fernando
|
||||
excludedBySlug: '/devops/automation-tools'
|
||||
seo:
|
||||
title: '6 Best DevOps Automation Tools: Streamline your workflow'
|
||||
description: 'Explore the best DevOps automation tools designed to optimize CI/CD, reduce manual tasks, and drive efficiency in your development cycle.'
|
||||
ogImageUrl: 'https://assets.roadmap.sh/guest/best-devops-automation-tools-aoyls.jpg'
|
||||
relatedGuidesTitle: 'Other Guides'
|
||||
relatedGuides:
|
||||
'How to become a DevOps Engineer in 2024': '/devops/how-to-become-devops-engineer'
|
||||
'Is DevOps engineering a good career path in 2024?': '/devops/career-path'
|
||||
'10+ In-Demand DevOps Engineer Skills to Master': '/devops/skills'
|
||||
'DevOps engineer vs Full stack developer: Which is best?': '/devops/vs-full-stack'
|
||||
'11 DevOps Principles and Practices to Master: Pro Advice': '/devops/principles'
|
||||
'What Are the 7 Key Phases of the DevOps Lifecycle?': '/devops/lifecycle'
|
||||
'Why Does DevOps Recommend Shift-Left Testing Principles?': '/devops/shift-left-testing'
|
||||
'What is DevOps Automation? 8 Best Practices & Advice': '/devops/automation'
|
||||
isNew: true
|
||||
type: 'textual'
|
||||
date: 2024-11-26
|
||||
sitemap:
|
||||
priority: 0.7
|
||||
changefreq: 'weekly'
|
||||
tags:
|
||||
- 'guide'
|
||||
- 'textual-guide'
|
||||
- 'guide-sitemap'
|
||||
---
|
||||
|
||||

|
||||
|
||||
[DevOps](https://roadmap.sh/devops) is like the ultimate team-up between development and operations teams, constantly looking to deliver software faster and more reliably. It all boils down to breaking silos, fostering collaboration, and continuously improving the development lifecycle. After all, developers and operations are just two sides of the same coin.
|
||||
|
||||
Now, imagine trying to keep everything running smoothly but doing it manually—sounds like a recipe for chaos, right? [Automation in DevOps](https://roadmap.sh/devops/automation) is crucial because it streamlines workflows and minimizes human intervention.
|
||||
|
||||
In this article, we’ll dive into the **6 best DevOps automation tools** that can help you streamline your workflow and keep your projects on track. Here’s the full list of the tools we’ll be covering:
|
||||
|
||||
1. GitHub Actions
|
||||
2. Jenkins
|
||||
3. Ansible
|
||||
4. Puppet
|
||||
5. Terraform
|
||||
6. AWS CloudFormation
|
||||
|
||||
## Criteria for Selecting the Best DevOps Automation Tools
|
||||
|
||||
Choosing the right DevOps automation tools is crucial for optimizing your workflow and ensuring smooth operations. To help you navigate the vast landscape of available options, let's break down the primary categories of automation tools that you'll encounter in the DevOps ecosystem.
|
||||
|
||||
### Key Features to Consider
|
||||
|
||||
Before diving into the actual DevOps automation tools, it's important to keep in mind the key features that make a DevOps tool stand out.
|
||||
|
||||
While we won't delve into the specifics here, remember to consider aspects like:
|
||||
|
||||
- **Integration capabilities**: how well do these tools work with others in the DevOps ecosystem? Considering we’re reviewing automation-related tools, the more and easier they integrate with other systems, the better they’ll be.
|
||||
- **Scalability**: how much automation can be done through these tools? How easy is it to grow that number? Scalability is a key feature for automation tools, as they’re expected to work unsupervised.
|
||||
- **User-friendliness**: UX is an important aspect of any tool, especially so for mission-critical systems. The easier they are to set up and maintain, the better.
|
||||
- **Community support**: an active community around a tool speaks volumes of the quality of that tool.
|
||||
- **Documentation**: any tool is worthless if it doesn’t have detailed and well-structured documentation.
|
||||
- **Security features**: understanding how easy these tools make it for the operations team to set up a secure environment will dictate how safe they are (in the context of this article).
|
||||
|
||||
### Categories of Automation Tools
|
||||
|
||||
DevOps automation tools can be grouped into several categories, each addressing different aspects of the development process and operations lifecycle. Understanding these categories will help you identify which tools are best suited for your specific needs.
|
||||
|
||||
#### 1. Continuous Integration/Continuous Deployment (CI/CD)
|
||||
|
||||
CI/CD tools are the backbone of modern DevOps practices. They automate the process of integrating code changes, running tests, and deploying applications. By streamlining these steps, CI/CD tools help ensure that code is consistently built, tested, and released with minimal manual intervention.
|
||||
|
||||
#### 2. Configuration Management
|
||||
|
||||
Configuration management tools focus on maintaining consistency across your infrastructure. They automate the setup, deployment, and management of servers and applications, ensuring that environments remain stable and reproducible. This category is essential for managing large-scale deployments and minimizing configuration drift.
|
||||
|
||||
#### 3. Infrastructure as Code (IaC)
|
||||
|
||||
IaC tools are all about infrastructure management and infrastructure automation. This approach enables version control for your infra, reproducibility for your environments, and scalability, making it easier to provision and manage resources across different environments.
|
||||
|
||||
### My Favorite DevOps Automation Tools
|
||||
|
||||
Alright, and before we go into the details of each tool, let me share my personal favorite ones.
|
||||
|
||||
While all the tools we're about to discuss are fantastic in their own right, there are three that have truly won my nerd heart: **GitHub Actions**, **AWS CloudFormation**, and **Ansible**.
|
||||
|
||||
**GitHub Actions** is like that all-in-one Swiss Army knife you didn’t know you needed—but now you can’t live without it. With a perfect **5/5** in Integration Capabilities, Scalability, User-Friendliness, and Community Support, it checks all the boxes effortlessly. I can’t remember how many times I’ve relied on it for setting up quick CI/CD pipelines with just a few clicks.
|
||||
|
||||
**AWS CloudFormation** is my go-to for managing AWS resources. It scores **5/5** in Integration Capabilities, Scalability, and Security Features, making it indispensable for anyone deeply embedded in the AWS ecosystem.
|
||||
|
||||
Finally, **Ansible** takes the cake when it comes to configuration management and automation. With an outstanding **5/5** ratings across Integration Capabilities, Scalability, User-Friendliness, and Community Support, it’s no wonder Ansible is the go-to tool for so many other DevOps in the industry.
|
||||
|
||||
The following table summarizes the data presented throughout this article:
|
||||
|
||||
[](https://assets.roadmap.sh/guest/devops-automation-tools-wns3s.png)
|
||||
|
||||
Let’s now take a closer look at all the tools, and let you decide which ones are your favorite ones.
|
||||
|
||||
## Top 6 DevOps Automation Tools
|
||||
|
||||
Now that we've covered the criteria for selecting the best DevOps automation tools, let's dive into our top picks. Each tool is evaluated based on key features from the previous point: integration capabilities, scalability, user-friendliness, community support, and security features.
|
||||
|
||||
Get comfortable, because it’s going to be a long read.
|
||||
|
||||
### 1. GitHub Actions
|
||||
|
||||

|
||||
|
||||
#### Overview
|
||||
|
||||
**GitHub Actions** is GitHub's native continuous integration & continuous deployment (CI/CD) tool, designed to automate your software workflows directly within your GitHub repositories. No matter where in the SDLC (Software Development Lifecycle) you are, GitHub Actions provides a seamless way to integrate these processes into your workflow.
|
||||
|
||||
#### Integration Capabilities 5/5 ★★★★★
|
||||
|
||||
GitHub Actions shines when it comes to integration. Being part of GitHub, it naturally integrates with your repositories, issues, and pull requests. Plus, with a vast marketplace of pre-built actions, you can easily connect with tools like Slack, Docker, and AWS without breaking a sweat.
|
||||
|
||||
#### Scalability 5/5 ★★★★★
|
||||
|
||||
Whether you're a solo developer or part of a massive enterprise, GitHub Actions scales effortlessly. Its cloud-based runners can handle anything from small projects to large, complex workflows without skipping a beat.
|
||||
|
||||
#### User-Friendliness 4/5 ★★★★☆
|
||||
|
||||
While in theory, setting up GitHub Actions should be as easy as pie, in practice, it takes a while to understand their configuration syntax. The YAML syntax and extensive documentation make it accessible (although not trivially simple) even for those new to CI/CD. Plus, the GitHub interface provides a clear view of your workflows, making management a breeze.
|
||||
|
||||
#### Community Support and Documentation 5/5 ★★★★★
|
||||
|
||||
With GitHub's massive user base, community support is top-notch. You'll find countless tutorials, forums, and GitHub-hosted actions to help you troubleshoot and enhance your workflows. The official documentation is comprehensive and regularly updated.
|
||||
|
||||
#### Security Features 4/5 ★★★★☆
|
||||
|
||||
GitHub Actions offers robust security features, including encrypted secrets, granular permissions, and support for various authentication methods. While it's secure out of the box, always stay updated with best practices to maintain optimal security.
|
||||
|
||||
### 2. Jenkins
|
||||
|
||||
[](https://assets.roadmap.sh/guest/jenkins-3ns0g.png)
|
||||
|
||||
#### Overview
|
||||
|
||||
**Jenkins** is one of the oldest and most popular open-source CI/CD tools in the DevOps landscape. Renowned for its flexibility, Jenkins allows you to automate virtually any part of your development pipeline with its extensive plugin ecosystem.
|
||||
|
||||
#### Integration Capabilities 5/5 ★★★★★
|
||||
|
||||
Jenkins has an impressive array of plugins that enable integration with almost every tool you can think of—from version control systems like Git and SVN to containerization tools like Docker and Kubernetes. If it exists, there's likely a Jenkins plugin for it.
|
||||
|
||||
#### Scalability 4/5 ★★★★☆
|
||||
|
||||
Jenkins can handle large-scale projects with ease, especially when set up in a distributed architecture. However, managing numerous plugins and maintaining performance can require a bit more elbow grease compared to some newer tools.
|
||||
|
||||
#### User-Friendliness 3/5 ★★★☆☆
|
||||
|
||||
Jenkins offers immense flexibility, but this comes at the cost of a steeper learning curve. The user interface is functional but not the most intuitive, and setting up complex pipelines may require a good grasp of Jenkinsfile syntax. In other words, from the UX perspective, Jenkins tends to be geared towards advanced users.
|
||||
|
||||
#### Community Support and Documentation 5/5 ★★★★★
|
||||
|
||||
With decades in the game, Jenkins has a vast and active community. You'll find extensive documentation, countless plugins, and numerous forums and tutorials to help you navigate any challenges.
|
||||
|
||||
#### Security Features 4/5 ★★★★☆
|
||||
|
||||
Jenkins provides essential security features like role-based access control, credentials management, and support for various authentication protocols. Regular updates and a proactive community help keep security tight.
|
||||
|
||||
### 3. Ansible
|
||||
|
||||
[](https://assets.roadmap.sh/guest/ansible-jxqvt.png)
|
||||
|
||||
#### Overview
|
||||
|
||||
**Ansible** is a powerful automation tool focused on configuration management, application deployment, and task automation. It's agentless architecture and simple syntax makes it a favorite among DevOps professionals.
|
||||
|
||||
#### Integration Capabilities 5/5 ★★★★★
|
||||
|
||||
Ansible integrates seamlessly with a wide range of tools and platforms, including cloud providers like AWS, Azure, and Google Cloud, as well as container platforms like Docker and Kubernetes. Its modular design ensures compatibility with most environments.
|
||||
|
||||
#### Scalability 5/5 ★★★★★
|
||||
|
||||
Ansible scales effortlessly from managing a handful of servers to thousands. Its push-based model simplifies scaling, allowing you to manage large infrastructures without the need for additional agents. You could say it was designed to scale.
|
||||
|
||||
#### User-Friendliness 5/5 ★★★★★
|
||||
|
||||
Ansible is known for its simplicity. The YAML-based playbooks are easy to write and understand, making them accessible even for those new to automation. The learning curve is gentle, and the clear documentation supports smooth adoption.
|
||||
|
||||
#### Community Support and Documentation 5/5 ★★★★★
|
||||
|
||||
Ansible has a vibrant community and extensive documentation. From official guides to community-contributed modules and roles, you'll find plenty of resources to help you understand Ansible and troubleshoot any issues.
|
||||
|
||||
#### Security Features 4/5 ★★★★☆
|
||||
|
||||
Ansible includes several security features, such as encrypted secrets with Ansible Vault, SSH-based communication, and support for various authentication methods. While it's secure by default, you can never be 100% sure, especially with tools that handle the lowest level of our infrastructure, so keep an eye out for best practices as well.
|
||||
|
||||
### 4. Puppet
|
||||
|
||||
[](https://assets.roadmap.sh/guest/puppet-cq4m0.png)
|
||||
|
||||
#### Overview
|
||||
|
||||
**Puppet** is a robust configuration management tool designed to automate the provisioning, configuration, and management of infrastructure. It's particularly well-suited for large and complex environments.
|
||||
|
||||
#### Integration Capabilities 4/5 ★★★★☆
|
||||
|
||||
Puppet integrates well with a variety of platforms and tools, including major cloud providers, container platforms, and monitoring tools. Its API and plugin ecosystem extend its compatibility, though it may not be as extensive as some competitors.
|
||||
|
||||
#### Scalability 5/5 ★★★★★
|
||||
|
||||
Puppet excels in scalability, making it ideal for managing really large infrastructures across multiple environments. Its client-server architecture and efficient resource management ensure smooth operations even at scale.
|
||||
|
||||
#### User-Friendliness 4/5 ★★★★☆
|
||||
|
||||
Puppet offers a user-friendly experience with its declarative language and comprehensive toolset. However, mastering Puppet's intricacies can take some time, especially for those new to configuration management. Much like Jenkins in its category, you could say Puppet is the choice for advanced users.
|
||||
|
||||
#### Community Support and Documentation 4/5 ★★★★☆
|
||||
|
||||
Puppet has a strong community and extensive documentation, including modules, tutorials, and forums. While not as large as some other communities, the available resources are highly valuable and well-maintained.
|
||||
|
||||
#### Security Features 4/5 ★★★★☆
|
||||
|
||||
Puppet provides solid security features, including encrypted data handling, role-based access control, and compliance reporting. Regular updates and a focus on security best practices help maintain a secure environment.
|
||||
|
||||
### 5. Terraform
|
||||
|
||||
[](https://assets.roadmap.sh/guest/terraform-lapz6.png)
|
||||
|
||||
#### Overview
|
||||
|
||||
If you’re talking about DevOps automation tools, Terrafor is definitely up there on the list. **Terraform** by HashiCorp is a leading Infrastructure as Code (IaC) tool that enables you to define and provision infrastructure across various cloud providers using a declarative configuration language.
|
||||
|
||||
#### Integration Capabilities 5/5 ★★★★★
|
||||
|
||||
Terraform's extensive provider ecosystem allows it to integrate with almost any cloud service, platform, or tool you can think of. From AWS, Azure, and Google Cloud to Kubernetes, Docker, and even SaaS applications, Terraform is everywhere.
|
||||
|
||||
#### Scalability 5/5 ★★★★★
|
||||
|
||||
Terraform scales beautifully, managing everything from small projects to large, multi-cloud infrastructures. Its modular approach and state management ensure that scaling up doesn't introduce complexity or instability.
|
||||
|
||||
#### User-Friendliness 4/5 ★★★★☆
|
||||
|
||||
Terraform offers a straightforward syntax with HashiCorp Configuration Language (HCL), making it relatively easy to learn and use. While powerful, some advanced features may require a deeper understanding, but overall it's user-friendly.
|
||||
|
||||
#### Community Support and Documentation 5/5 ★★★★★
|
||||
|
||||
Terraform boasts a vibrant community and comprehensive documentation. With countless modules available in the Terraform Registry, along with tutorials and active forums, finding support and resources is a breeze.
|
||||
|
||||
#### Security Features 4/5 ★★★★☆
|
||||
|
||||
Terraform emphasizes security with features like state encryption, integration with secret management tools, and support for various authentication methods. Proper configuration and adherence to best practices ensure a secure infrastructure.
|
||||
|
||||
### 6. AWS CloudFormation
|
||||
|
||||
[](https://assets.roadmap.sh/guest/cloudformation-cd374.png)
|
||||
|
||||
#### Overview
|
||||
|
||||
**AWS CloudFormation** is Amazon Web Services' native IaC tool, allowing you to model and set up your AWS cloud infrastructure using templates written in JSON or YAML. It's a go-to choice for those deeply embedded in the AWS ecosystem.
|
||||
|
||||
#### Integration Capabilities 5/5 ★★★★★
|
||||
|
||||
CloudFormation integrates seamlessly with all AWS services, providing a unified experience for managing your AWS infrastructure. While it's primarily AWS-focused, it can also work with third-party services through custom resources.
|
||||
|
||||
#### Scalability 5/5 ★★★★★
|
||||
|
||||
Designed to handle the full scale of AWS environments, CloudFormation effortlessly manages everything from single instances to complex multi-region architectures. Its stack management ensures that scaling is both efficient and reliable.
|
||||
|
||||
#### User-Friendliness 4/5 ★★★★☆
|
||||
|
||||
CloudFormation offers a powerful way to manage AWS resources, but the complexity of some templates can be daunting. The AWS Management Console provides a user-friendly interface, and tools like the AWS CLI and SDKs enhance usability.
|
||||
|
||||
#### Community Support and Documentation 4/5 ★★★★☆
|
||||
|
||||
AWS provides extensive documentation and a solid support ecosystem for CloudFormation. While the community is strong, it’s more niche compared to multi-cloud tools like Terraform. Nevertheless, AWS forums and third-party resources are quite helpful.
|
||||
|
||||
#### Security Features 5/5 ★★★★★
|
||||
|
||||
Security is a strong suit for CloudFormation, with deep integration with AWS Identity and Access Management (IAM), support for encrypted parameters, and compliance with numerous industry standards. AWS’s robust security infrastructure further enhances CloudFormation's security capabilities.
|
||||
|
||||
## How to Choose the Right DevOps Automation Tool for Your Workflow
|
||||
|
||||
Selecting the perfect DevOps automation tool can feel like a daunting task, especially if your decision will affect many others. Maybe you’re picking the DevOps automation tools for your team or maybe you’re the one deciding for the standards of the company.
|
||||
|
||||
Truth is, when choosing a DevOps automation tool there are some essential factors to consider that have to align with your workflow and organizational needs. If that happens, then you can sleep comfortably at night, knowing you made the best possible choice for your specific context.
|
||||
|
||||
Let’s take a look.
|
||||
|
||||
### Assessing Your Team’s Needs
|
||||
|
||||
Before diving headfirst into the sea of DevOps automation tools, it’s crucial to take a step back and assess what your team truly needs. It might seem obvious, but you’d be surprised how many times a choice is made out of familiarity with a tool rather than by taking into consideration the actual needs of the project.
|
||||
|
||||
Understanding your project requirements and team size will set the foundation for making an informed choice.
|
||||
|
||||
#### 1. Project Requirements
|
||||
|
||||
* **Type of Projects:** Are you working on small, agile projects or large-scale, enterprise-level applications? Different tools excel in different scenarios.
|
||||
* **Development Practices:** Do you follow specific methodologies like Agile, Scrum, or Kanban? Ensure the tool supports your preferred workflow.
|
||||
* **Deployment Frequency:** High-frequency deployments require robust CI/CD tools like GitHub Actions or Jenkins to keep up with the pace.
|
||||
* **Timeline**: Do you have the time to learn a new skill? Is it better to go with something that gets the job done and is familiar to you vs. picking the ideal tool which has a steeper learning curve and will require you to spend some months fiddling around and making educated guesses.
|
||||
|
||||
#### 2. Team Size and Expertise
|
||||
|
||||
* **Skill Level:** If your team is new to DevOps, tools with a gentle learning curve like Ansible or GitHub Actions might be more suitable.
|
||||
* **Resource Availability:** Larger teams might benefit from more comprehensive tools with extensive features, while smaller teams might prefer lightweight solutions to avoid overcomplicating things.
|
||||
* **Collaboration Needs:** Consider how the tool facilitates teamwork. Features like shared dashboards and integrated communication can enhance collaboration.
|
||||
|
||||
### Considering Integration with Existing Tools
|
||||
|
||||
No one likes playing nice with others? Well, in the DevOps world, seamless integration is a must. Ensuring compatibility with your current tech stack can save you a lot of time and headaches down the road.
|
||||
|
||||
#### 1. Compatibility with Existing Tools
|
||||
|
||||
* **Version Control Systems:** Ensure the automation tool integrates smoothly with your version control system, whether it’s GitHub, GitLab, or Bitbucket.
|
||||
* **CI/CD Pipelines:** If you’re already using certain CI/CD tools, check if your new tool can complement or replace them without causing disruptions.
|
||||
* **Containerization and Orchestration:** Tools like Docker and Kubernetes are staples in many DevOps workflows. Make sure your automation tool plays well with these technologies.
|
||||
|
||||
#### 2. APIs and Extensibility
|
||||
|
||||
* **Custom Integrations:** Look for tools that offer robust APIs, allowing you to create custom integrations tailored to your specific needs.
|
||||
* **Plugin Ecosystems:** Tools with extensive plugin libraries (like Jenkins) offer greater flexibility and the ability to extend functionality as needed.
|
||||
|
||||
### Evaluating Scalability and Flexibility
|
||||
|
||||
Your organization might be small now, but you’re playing the long game, and who knows what the future holds\! Choosing DevOps automation tools that can scale and adapt as your company grows is essential for long-term success.
|
||||
|
||||
#### 1. Scalability
|
||||
|
||||
* **Handling Increased Load:** Ensure the tool can manage an increase in projects, users, and deployments without performance degradation.
|
||||
* **Multi-Project Support:** If you plan to expand your project portfolio, choose tools that can handle multiple projects efficiently.
|
||||
|
||||
#### 2. Flexibility
|
||||
|
||||
* **Customization Options:** The ability to customize workflows, scripts, and configurations ensures the tool can adapt to your unique processes. This will make the tool useful in more situations/projects, giving you a higher ROI.
|
||||
* **Support for Multiple Environments:** Tools that support various environments (development, staging, production) offer greater flexibility in managing different stages of your projects.
|
||||
|
||||
### Budget Considerations
|
||||
|
||||
Let’s face it—budget constraints are a reality for most organizations. Balancing the features you need with what you can afford sometimes feels like a balancing act.
|
||||
|
||||
#### 1. Cost vs. Features
|
||||
|
||||
* **Free vs. Paid Plans:** Many DevOps tools offer free tiers with basic features, which can be great for small teams or startups. Evaluate whether the paid features are worth the investment for your needs.
|
||||
* **License Models:** Understand the pricing structure—whether it’s based on the number of users, projects, or usage levels. Choose a model that aligns with your usage patterns.
|
||||
|
||||
#### 2. Total Cost of Ownership (TCO)
|
||||
|
||||
* **Initial Setup Costs:** Consider the time and resources required to implement and configure the tool.
|
||||
* **Maintenance and Support:** Factor in ongoing costs related to updates, support, and potential training for your team.
|
||||
* **Hidden Costs:** Watch out for additional costs like premium plugins, integrations, or storage fees that might not be apparent upfront.
|
||||
|
||||
### Quick Tips for Choosing the Right Tool
|
||||
|
||||
With all of that said, you might still have some doubts about specific areas where multiple DevOps tools seem equivalent to each other, making it really hard to decide one over the other. At this stage, you can use some of the following techniques to help you make the final call:
|
||||
|
||||
1. **List Your Priorities:** Cut through all the fluff and identify which features are non-negotiable and which ones are nice to have. Evaluate if there is only one tool that properly gives you all the must-have ones, and go with that one.
|
||||
2. **Trial and Error:** Take advantage of free trials or demo versions to test how well the tool fits your workflow before committing. Make a POC, test the tool out. In the end, you might find out that the documentation tells one story, and the actual implementation is very different.
|
||||
3. **Seek Feedback:** Involve your team in the decision-making process to ensure the tool meets everyone’s needs and preferences. And if your team hasn’t heard of any of the options, check out online forums, or look for reviews (ideally bad ones) to understand what others have to say about them. In some situations, this is much better and faster than gathering all the information and making an informed decision on your own.
|
||||
4. **Stay Updated:** The DevOps landscape is constantly evolving. Choose tools that are regularly updated and have a strong roadmap for future enhancements.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Throughout this article, we've explored the **6 best DevOps automation tools** that can significantly streamline your workflow. From **GitHub Actions** and **Jenkins** to **Ansible**, **Puppet**, **Terraform**, and **AWS CloudFormation**, each tool offers unique strengths tailored to different aspects of the DevOps lifecycle.
|
||||
|
||||
DevOps automation tools are essential because they **enhance efficiency, help reduce errors** (by taking care of the repetitive tasks instead of us)**, accelerate delivery, improve collaboration, and ensure scalability.**
|
||||
|
||||
In essence, these tools are the backbone of a successful DevOps strategy, enabling teams to deliver high-quality software.
|
||||
|
||||
Adopting many of these **DevOps automation tools** can transform the way your team works, making your processes more efficient, reliable, and scalable.
|
||||
|
||||
If you’re ready to take the next step in your DevOps journey, you should check out our [DevOps Roadmap](https://roadmap.sh/devops) to get started on learning about these powerful automation tools and take your skills to the next level.
|
||||
272
src/data/guides/devops-best-practices.md
Normal file
272
src/data/guides/devops-best-practices.md
Normal file
@@ -0,0 +1,272 @@
|
||||
---
|
||||
title: '14 DevOps Best Practices and Methods You Should Know'
|
||||
description: 'Learn what the essential backend skills you should master to advance in your career.'
|
||||
authorId: william
|
||||
excludedBySlug: '/devops/best-practices'
|
||||
seo:
|
||||
title: '14 DevOps Best Practices and Methods You Should Know'
|
||||
description: 'Learn DevOps best practices for building efficient workflows, from code integration to monitoring, and avoid common DevOps anti-patterns.'
|
||||
ogImageUrl: 'https://assets.roadmap.sh/guest/devops-best-practices-4yhmb.jpg'
|
||||
relatedTitle: "Other Guides"
|
||||
relatedGuides:
|
||||
'How to become a DevOps Engineer in 2024': '/devops/how-to-become-devops-engineer'
|
||||
'Is DevOps engineering a good career path in 2024?': '/devops/career-path'
|
||||
'10+ In-Demand DevOps Engineer Skills to Master': '/devops/skills'
|
||||
'DevOps engineer vs Full stack developer: Which is best?': '/devops/vs-full-stack'
|
||||
'11 DevOps Principles and Practices to Master: Pro Advice': '/devops/principles'
|
||||
'What Are the 7 Key Phases of the DevOps Lifecycle?': '/devops/lifecycle'
|
||||
'Why Does DevOps Recommend Shift-Left Testing Principles?': '/devops/shift-left-testing'
|
||||
isNew: true
|
||||
type: 'textual'
|
||||
date: 2024-11-26
|
||||
sitemap:
|
||||
priority: 0.7
|
||||
changefreq: 'weekly'
|
||||
tags:
|
||||
- 'guide'
|
||||
- 'textual-guide'
|
||||
- 'guide-sitemap'
|
||||
---
|
||||
|
||||

|
||||
|
||||
DevOps is a proven practice and set of standards that has helped small to large enterprises streamline their software development process and IT operations. It has helped break down silos and deliver more reliable and high-quality software. Despite the benefits it brings, its implementation can be difficult. This is because you need to know the process, the tools to use, and a shift in operational culture, which can be challenging.
|
||||
|
||||
Although every organization approaches these challenges in slightly different ways, there are **best practices** that you can follow to achieve successful implementation.
|
||||
|
||||
In this guide, you’ll learn key [DevOps](https://roadmap.sh/devops) best practices to improve your workflow, and common DevOps anti-patterns to avoid when adopting these practices.
|
||||
|
||||
**TL;DR: 14 DevOps key best practices you should know are:**
|
||||
|
||||
1. Embrace a culture of collaboration and communication.
|
||||
2. Continuously seek feedback.
|
||||
3. Adopt continuous integration.
|
||||
4. Practice continuous delivery.
|
||||
5. Embrace Infrastructure as Code (IaC).
|
||||
6. Adopt microservices architecture.
|
||||
7. Use version control for everything.
|
||||
8. Practice continuous monitoring and observability.
|
||||
9. Adopt configuration management.
|
||||
10. Practice DevSecOps.
|
||||
11. Choose the right DevOps tools.
|
||||
12. Balance quality and speed.
|
||||
13. Use feature flag to manage features.
|
||||
14. Adopt agile project management.
|
||||
|
||||
## DevOps key best practices
|
||||
|
||||
Here are 14 key best practices and methods for implementing DevOps:
|
||||
|
||||
### 1. Embrace a culture of collaboration and communication
|
||||
|
||||
Collaboration and communication are central to the success of DevOps lifecycle. You need to encourage your team to continuously take ownership of their tasks and communicate (verbal and written) effectively between the development teams, operations teams, quality assurance teams, and other related stakeholders.
|
||||
|
||||
View mistakes and failures as learning opportunities rather than assigning blame. You and your team should hold postmortems to identify the root causes of incidents and develop strategies to prevent future occurrences.
|
||||
|
||||
### 2. Continuously seek feedback
|
||||
|
||||
Continuously engage your users, stakeholders, and team members to get feedback on their overall experience of the application. This feedback helps resolve issues, shape your application release cycle, and guarantee you’re building with users in mind. As noted in the latest [State of DevOps Report](https://cloud.google.com/resources/devops/state-of-devops), “*Teams that focus on the user* *experience* *have 40% higher organizational performance than t**hose* *that don’t*.”
|
||||
|
||||
Internally, your team can also benefit from continuous feedback during code reviews. By involving stakeholders in analyzing code quality, identifying issues, and suggesting improvements, you can create a culture of constant improvement.
|
||||
|
||||
### 3. Adopt continuous integration
|
||||
|
||||
Continuous Integration (CI) is a software development practice in which developers regularly commit their code changes into a shared repository, which might happen multiple times a day. The goal of CI is to provide feedback quickly to developers so that they can identify and fix defects early in the development lifecycle.
|
||||
|
||||
The CI process involves:
|
||||
|
||||
- **Automated builds**: When you commit a code into a shared repository, it triggers an automatic build to verify that the code integrates well with the existing project.
|
||||
- **Automated testing**: After the build is successful, automated tests are run to validate that the changes committed don’t break the application.
|
||||

|
||||
|
||||
To support your application in following the CI process and delivering the best value, you need to:
|
||||
|
||||
- Commit small and incremental changes to the shared repository often.
|
||||
- Automate the build process so every commit results in a reliable and repeated build.
|
||||
- Set up a test to run with every commit to catch any issues as soon as they are introduced.
|
||||
- Fix broken builds immediately.
|
||||
- Use a version control system like Git to manage deployment, branches, and track commits.
|
||||
- Document how the CI process works and how to resolve common issues like broken builds. This will help your team work faster and onboard new members easily.
|
||||
|
||||
### 4. Practice continuous delivery
|
||||
|
||||
Continuous Delivery (CD) is a software engineering practice where code changes are automatically prepared for release to production. It extends the CI process by ensuring that the codebase that has been added, tested, and passed is ready for release into the staging or production environment.
|
||||
|
||||
The goal of CD is to automate the release pipeline so that new features, bug fixes, and improvements can be deployed to production at any time without manual intervention.
|
||||
|
||||
To implement CD effectively into your DevOps processes, you need to:
|
||||
|
||||
- Automate the entire deployment pipeline (from testing to deployment) to minimize manual error, reduce deployment time, and maintain consistency across environments.
|
||||
- Use Git as a source of truth for development and infrastructure management.
|
||||
- Track the health of your application by monitoring performance, errors, and logging.
|
||||
- Set up your pipeline so it can revert to previous working deployments in case of critical error.
|
||||
- Use feature flags to roll out features gradually into production.
|
||||
- Integrate security measures into your pipeline to scan and check for vulnerabilities.
|
||||
|
||||
### 5. Embrace Infrastructure as Code (IaC)
|
||||
|
||||
Infrastructure as Code (IaC) is a DevOps practice that uses machine-readable definition files to manage and provision computing infrastructure rather than physical hardware configuration or direct interaction with configuration tools. It involves using code (JSON, XML, or domain-specific languages) to specify and configure providers, resources, and more.
|
||||
|
||||
IaC aims to eliminate manual workflow in provisioning resources, making deployment faster and less prone to human errors. To implement IaC effectively into your DevOps processes, you need to:
|
||||
|
||||
- Use Git to collaborate, track changes over time, and easily roll back to previous changes over version if necessary.
|
||||
- Break down your infrastructure code into reusable components. This makes it easy to manage and reuse across multiple projects.
|
||||
- Write unit tests, integration tests, and other security-related tests to validate that IaC works as designed.
|
||||
- Use environment variables to manage sensitive values like API ket, resource IDs, and more.
|
||||
- Use continuous integration and continuous deployment (CI/CD) to integrate IaC into your pipeline to automatically provision or update infrastructure.
|
||||
|
||||
The recently concluded [State of DevOps Report](https://cloud.google.com/resources/devops/state-of-devops) also highlights the importance of IaC for its elasticity, on-demand resource provisioning, and flexibility. These advantages have contributed to a 30% higher organizational performance compared to those not utilizing IaC.
|
||||
|
||||
### 6. Adopt microservices architecture
|
||||
|
||||
Microservice architecture involves breaking down your application into small, independent, and deployable services. Each service is responsible for a specific functionality and can be independently developed, tested, and deployed. This architecture promotes scalability, fault isolation, and rapid innovation, which are essential to the DevOps environment.
|
||||
|
||||

|
||||
|
||||
To implement microservice architecture effectively into your DevOps processes, you need to:
|
||||
|
||||
- Design your microservice to have retries, circuit breakers, and fallback mechanisms to handle failure gracefully.
|
||||
- Build your microservice to manage its database or data source to avoid tight coupling.
|
||||
- Use containerization and orchestration tools like [Docker](https://roadmap.sh/docker) and [Kubernetes](https://roadmap.sh/kubernetes) to manage deployment.
|
||||
- Implement CI/CD pipeline to enable reliable and consistent updates to individual services.
|
||||
- Use message brokers like Kafka and RabbitMQ to communicate between services and reduce dependencies.
|
||||
|
||||
> In my opinion, a microservice architecture is only suitable for mature systems with multiple intertwined parts built for scale rather than a relatively small software that could be run better as a mon
|
||||
|
||||
### 7. Use version control for everything
|
||||
|
||||
Version control is a system that records changes to files over time. It lets you track, manage, and collaborate on code efficiently. To use Git effectively in your DevOps processes, you need to:
|
||||
|
||||
- Use effective branching strategies like feature branching and Git flow to manage the development process.
|
||||
- Promote frequent commits with descriptive commit messages.
|
||||
- Use pull requests (PRs) to facilitate code review and collaboration between the development and operations teams.
|
||||
- Keep your repositories clean of generated files like binaries, logs, or dependencies.
|
||||
- Use tag releases to mark important milestones, e.g., `v1.0.2`.
|
||||
- Use descriptive branch names. This will help you and your team understand the purpose of each branch.
|
||||
|
||||

|
||||
|
||||
### 8. Practice continuous monitoring and observability
|
||||
|
||||
**Monitoring** involves collecting, analyzing, and visualizing data from your system in real-time to detect issues like outages, bottlenecks, or resource exhaustion. On the other hand, **Observability** is about understanding what is happening inside the system by analyzing data like logs, metrics, and traces. To take advantage of monitoring and observability in your DevOps processes, you need to:
|
||||
|
||||
- Define Service Level Agreements (SLAs), Service Level Objectives (SLOs), and other performance-related metrics to clarify performance and ensure proper monitoring coverage.
|
||||
- Monitor key metrics like uptime, error rates, latency, and CPU usage.
|
||||
- Use tools like Grafana and Kibana to create real-time visual dashboards that can give you insights on how your application is performing.
|
||||
- Collect all your internal data (logs, metrics, and traces) in a centralized location for easy access and analysis.
|
||||
|
||||
### 9. Adopt configuration management
|
||||
|
||||
Configuration management is the process of systematically handling changes to a system’s configuration to ensure consistency and integrity. It involves defining and maintaining settings, dependencies, and states of servers, network devices, applications, and databases. The goal is to make sure infrastructure is configured correctly, and changes are managed effectively to avoid errors and downtime.
|
||||
|
||||
To take advantage of configuration management in your DevOps processes, you need to:
|
||||
|
||||
- Automate the entire configuration process, from setting up applications and services to deployment of servers.
|
||||
- Use Git to manage and store your configurations centrally. This makes it easy to track changes, collaborate, and roll back if needed.
|
||||
- Write modular configuration files that can be reused across different environments.
|
||||
- Document all your configurations so that your team members can understand.
|
||||
|
||||
### 10. Practice DevSecOps
|
||||
|
||||

|
||||
|
||||
DevSecOps stands for **Development, Security, and Operations**. It’s an extension of DevOps that promotes the integration of security practices into every phase of the software development lifecycle (SDLC). In the traditional development process, security is often handled by a separate team at the end of the process. In this case, when vulnerabilities are discovered, it slows down the deployment and increases the cost of fixing issues.
|
||||
|
||||
To prevent such incidents in your DevOps processes, integrate security practices and tools into all stages of your SDLC to avoid downtime and fix vulnerabilities early.
|
||||
|
||||
### 11. Choose the right DevOps tools
|
||||
|
||||
Selecting the right DevOps tools can significantly impact the success of your DevOps processes. The ecosystem is constantly changing, and you’ll get varying opinions on tools to use; it's important to carefully evaluate options. Consider your team’s strengths, the learning curve, and your organization’s goal before adopting any tool for your DevOps pipeline.
|
||||
|
||||
Below are some tools you should consider when implementing DevOps processes:
|
||||
|
||||
- **CI/CD tools**: Tools like Jenkins, GitLab CI/CD, CircleCI, Azure Pipeline, and GitHub Actions help automate the integration and deployment of code changes.
|
||||
- **Infrastructure as Code (IaC) tools**: Tools like Terraform, Ansible, Pulumi, Chef, AWS CloudFormation, and Vagrant help automate the provisioning and management of infrastructure.
|
||||
- **Containerization and orchestration tools**: Tools like Docker, Kubernetes, OpenShift, Docker Swarm, and Amazon ECS (Elastic Container Service) help manage and orchestrate containers at scale.
|
||||
- **Monitoring and logging tools**: Tools like Prometheus, ELK Stack (Elasticsearch, Logstash, and Kibana), Datadog, Splunk, and Grafana help track system performance, logging, and alerting.
|
||||
- **Configuration management tools**: Tools like Chef, Puppet, CFEngine, SaltStack, and Ansible help ensure system configurations remain consistent across environments.
|
||||
- **Security and compliance tools**: Tools like HashiCorp Vault, OWASP ZAP, Snyk, SonarQube, and Aqua Security help enforce security policies, perform scans, and conduct compliance checks.
|
||||
- **Collaboration and communication tools**: Tools like Slack, Microsoft Teams, Trello, Jira, and Confluence help facilitate communication and collaboration between teams.
|
||||
|
||||
### 12. Balance quality and speed
|
||||
|
||||
A key promise of DevOps is that it delivers software quickly. While it's tempting to speed up development processes, this often leads to reduced quality and potential security vulnerabilities. The pressure is further heightened because a lot of metrics in DevOps are based on how fast your system is, making it even more tempting to prioritize fast delivery over quality.
|
||||
|
||||
To avoid these pitfalls, strike a balance between quality and speed by taking the time to test the application before release. Below are some strategies to help maintain this balance:
|
||||
|
||||
- Implement continuous testing into your CI/CD pipeline to catch bugs early.
|
||||
- Encourage a culture of quality that makes developers take full ownership of their code.
|
||||
- Define quality checkpoints like code reviews, tests, and coding standards that must be passed before moving to production.
|
||||
|
||||
### 13. Use feature flags to manage features
|
||||
|
||||
Feature flags (also known as Feature Toggles) are powerful tools that let you enable or disable specific features in an application without deploying new code. They provide fine-grain control over the parts of an application that are visible and active at any time.
|
||||
|
||||

|
||||
|
||||
You can use a feature flag in your DevOps processes to:
|
||||
|
||||
- Perform gradual feature rollout.
|
||||
- Safely deploy features and rollback if needed.
|
||||
- Perform A/B testing
|
||||
|
||||
### 14. Adopt agile project management
|
||||
|
||||
Agile software development methodologies like Scrum and Kanban are well-suited to the iterative nature of DevOps. Agile uses a continuous approach to develop software rather than the linear waterfall model.
|
||||
|
||||

|
||||
|
||||
By embracing agile project management, you manage your projects better by breaking them down into smaller and manageable chunks rather than dealing with them in large chunks that are prone to error.
|
||||
|
||||
## DevOps anti-patterns to avoid
|
||||
|
||||
While DevOps has become the go-to approach for delivering scalable and robust applications, it has also introduced certain anti-patterns that can prevent you from fully reaping its benefits. These anti-patterns can lead to inefficiencies, limit collaboration, and result in poor outcomes. Let’s look at some common anti-patterns you should avoid:
|
||||
|
||||
**Automating everything without understanding**
|
||||
Because automation is at the center of DevOps, teams often fall into the trap of automating every process without understanding the underlying workflow or business logic. This can lead to incorrect implementation, inefficient processes, complexities, and sometimes bugs.
|
||||
|
||||
Before you automate a process, make sure you understand the underlying workflow. Start with critical processes that provide the most value, and regularly review automated processes to confirm they are providing value.
|
||||
|
||||
**DevOps as a one-time project**
|
||||
When most teams build or extend a project, timelines are usually attached. They have start and end dates for product design, engineering, **DevOps**, QA, and more, which may cause them to view DevOps as a short-term project. This prevents teams from realizing the long-term benefits and leads to a lack of continuous improvement.
|
||||
|
||||
You need to adopt DevOps as a continuous practice by regularly evaluating processes and workflow and encouraging your team to experiment.
|
||||
|
||||
**Not having a proper monitoring and feedback loop**
|
||||
Failing to implement adequate monitoring and feedback mechanisms to track application performance, reliability, and user experience makes it difficult for the DevOps team to detect issues in real-time. This can lead to longer recovery time when there’s an issue, and the team may miss opportunities to learn and improve the system.
|
||||
|
||||
To address this, you need to implement end-to-end monitoring and observability tools to gain insight into the system’s health. Additionally, a clear feedback loop should be established so that responsible teams are notified promptly when issues are detected.
|
||||
|
||||
**Siloed DevOps team**
|
||||
A common practice in most organizations is to separate the DevOps Team from other teams and task them with all DevOps activities. This separation defeats the core principle of DevOps: cross-functional collaboration and shared ownership. It isolates the DevOps team from others, leading to communication gaps and a lack of ownership.
|
||||
|
||||
To address this, promote a DevOps culture of shared responsibility where DevOps practices are adopted across all teams.
|
||||
|
||||
**Over-reliance on tools**
|
||||
Adopting the latest and trendiest DevOps tool doesn’t guarantee success. Sometimes, they even increase the problems if not used correctly. DevOps is about processes, people, and tools.
|
||||
|
||||
To address this, follow the right processes: ensure effective team collaboration, improve workflows and align with the teams before choosing tools.
|
||||
|
||||
**Too many feature flags**
|
||||
While feature flags are powerful, too many can lead to technical debt, making the codebase messy, cluttered, and difficult to maintain.
|
||||
|
||||
To address this, use feature flags as needed and regularly clean up flags that are no longer needed.
|
||||
|
||||
**Overcomplicating the CI/CD pipeline**
|
||||
When pipelines are overly complicated with multi-step CI/CD, stages, and checks, it leads to slow deployments. This can slow down the releases, become a bottleneck, and make troubleshooting difficult.
|
||||
|
||||
You can address this by keeping the pipeline simple and focusing on key steps like build, test, and deploy. Then, add stages only when needed.
|
||||
|
||||
**Not defining what success looks like**
|
||||
Failing to define and track meaningful metrics can make it difficult to measure the success or failure of DevOps practices. Without clear metrics, the team may not know if they are improving, and the team leads may struggle to justify the investment in DevOps to management.
|
||||
|
||||
You can address this by defining a key performance index (KPI) that aligns with your business goal, such as deployment frequency, change lead time, and mean time to recovery (MTTR).
|
||||
|
||||
## Key takeaway
|
||||
|
||||
DevOps best practices are essential for improving your software development and operations processes. These practices help improve your workflows, enhance collaboration, manage resources better, and ensure the delivery of high-quality software.
|
||||
|
||||
Additionally, you need to be aware of anti-patterns and pitfalls that can hinder the success of your DevOps implementation by avoiding common patterns like creating silos or overcomplicating your pipelines.
|
||||
|
||||
Stay up-to-date with the latest developments in the DevOps ecosystem by following the [DevOps roadmap](https://roadmap.sh/devops).
|
||||
|
||||
@@ -32,9 +32,9 @@ tags:
|
||||
|
||||
The role of the DevOps engineer is not always very well defined; some companies see it as the old-school sysadmin whose sole purpose is to take care of the platform's infrastructure. Others see it as the person in charge of the Terraform configuration files. In the end, properly understanding what DevOps is and what you should expect from this role is critical to properly taking advantage of it and adding the value it’s meant to be adding to your company.
|
||||
|
||||
While you can work on becoming a DevOps engineer from scratch (there is actually a [DevOps roadmap for that](https://roadmap.sh/devops)), usually, a DevOps engineer is someone who has spent enough years either as a developer or in an operations role and wants to start helping solve the problems they’ve experienced throughout their entire career. This person sits between both sides and has intimate knowledge of one of them and a great deal of knowledge about the other side.
|
||||
While you can work on becoming a DevOps engineer from scratch (there is actually a [DevOps roadmap](https://roadmap.sh/devops) for that), usually, a [DevOps engineer](https://roadmap.sh/devops/devops-engineer) is someone who has spent enough years either as a developer or in an operations role and wants to start helping solve the problems they’ve experienced throughout their entire career. This person sits between both sides and has intimate knowledge of one of them and a great deal of knowledge about the other side.
|
||||
|
||||
With that said, understanding everything there is to know to become a DevOps engineer who excels at their job is not trivial, and that’s why in this article, we’re going to cover the top 10 DevOps skills to help you level up your game.
|
||||
With that said, understanding everything there is to know to become a DevOps engineer who excels at their job is not trivial, and that’s why in this article, we’re going to cover the top 10 DevOps skills to help you level up your [career in DevOps](https://roadmap.sh/devops/career-path).
|
||||
|
||||
The top 10 DevOps engineer skills to master are:
|
||||
|
||||
@@ -59,7 +59,7 @@ Linux is one of the most common operating systems in the world of software devel
|
||||
|
||||
Granted, the word “master” is loaded and there are many aspects of the OS that you don’t really need to worry about these days (with all the containers and IaC tools around), however without pushing yourself too hard and becoming a full-blown developer, investing part of your time into learning one or more scripting languages is definitely a good call.
|
||||
|
||||
As a DevOps engineer, you will be scripting and automating tasks, so pick a couple of popular scripting languages and make sure you understand them enough to get the job done. For example, picking Bash is a safe bet, as Bash is the native scripting language in most Linux distros. On top of that, you can pick something like Python or Ruby; both are great options. With an English-like syntax that’s very easy to read and understand and a set of very powerful automation libraries and DevOps tools available, you should be more than fine. For example, if you’re picking Python, you’ll be able to work on Ansible playbooks or custom modules, and if you go with Ruby, you can write Chef cookbooks.
|
||||
As a DevOps engineer, you will be scripting and automating tasks, so pick a couple of popular scripting languages and make sure you understand them enough to get the job done. For example, picking Bash is a safe bet, as Bash is the native scripting language in most Linux distros. On top of that, you can pick something like Python or Ruby; both are great options. With an English-like syntax that’s very easy to read and understand and a set of very powerful [DevOps automation](https://roadmap.sh/devops/automation) libraries and tools available, you should be more than fine. For example, if you’re picking Python, you’ll be able to work on Ansible playbooks or custom modules, and if you go with Ruby, you can write Chef cookbooks.
|
||||
|
||||
In the end, it’s either about your own preference or the company’s standards if there are any, just pick one and figure out the tools at your disposal.
|
||||
|
||||
@@ -475,6 +475,7 @@ For those looking to deepen their understanding or get started on their DevOps j
|
||||
|
||||
* [**Expanded DevOps Roadmap**](https://roadmap.sh/devops): A comprehensive guide that details the full range of DevOps skills, tools, and technologies you need to master as a DevOps engineer.
|
||||
* [**Simplified DevOps Roadmap**](https://roadmap.sh/devops?r=devops-beginner): A more streamlined version that highlights the core components of a DevOps career, making it easier for beginners to navigate the field.
|
||||
* [**DevOps interview questions**](https://roadmap.sh/questions/devops): Test your knowledge of DevOps by answering popular interview questions, and challenge yourself to level up and ace your next job interview.
|
||||
|
||||
Success in DevOps is about cultivating a well-rounded skill set that combines technical expertise with strong collaboration, communication, and problem-solving abilities.
|
||||
|
||||
|
||||
81
src/data/projects/bastion-host.md
Normal file
81
src/data/projects/bastion-host.md
Normal file
@@ -0,0 +1,81 @@
|
||||
---
|
||||
title: 'Bastion Host'
|
||||
description: 'Setup a bastion host for managing access to private infrastructure.'
|
||||
isNew: true
|
||||
sort: 1601
|
||||
difficulty: 'intermediate'
|
||||
nature: 'Networking'
|
||||
skills:
|
||||
- 'devops'
|
||||
- 'security'
|
||||
- 'linux'
|
||||
seo:
|
||||
title: 'Bastion Host Setup'
|
||||
description: 'Learn how to set up a bastion host to securely manage access to your private infrastructure.'
|
||||
keywords:
|
||||
- 'bastion host'
|
||||
- 'linux'
|
||||
- 'security'
|
||||
- 'devops'
|
||||
roadmapIds:
|
||||
- 'devops'
|
||||
---
|
||||
|
||||
The goal of this project is to learn and practice how to set up a **bastion host**—a secure entry point that enables authorized users to access private infrastructure or internal systems without exposing them to the public internet.
|
||||
|
||||
A **bastion host** is a server specifically designed to act as a secure gateway between external users and a private network. It reduces the attack surface of your infrastructure by being the only publicly accessible server, ensuring that all external connections go through a single, well-secured entry point. Typically, bastion hosts are configured to allow secure SSH or RDP access and are heavily monitored.
|
||||
|
||||
---
|
||||
|
||||
## Requirements
|
||||
|
||||
You will set up a bastion host in a cloud environment and configure it to securely allow access to a private server.
|
||||
|
||||
- Choose a cloud provider (e.g., AWS, DigitalOcean, GCP, Azure) and create **two servers**:
|
||||
- **Bastion Host** (publicly accessible).
|
||||
- **Private Server** (accessible only from the bastion host IP address and not publicly).
|
||||
|
||||
- Configure both the servers to allow SSH connection and configure SSH in a way that you can SSH into the private server by jumping through the bastion host
|
||||
|
||||
```bash
|
||||
Host bastion
|
||||
HostName <bastion-ip>
|
||||
User <bastion-user>
|
||||
IdentityFile <path-to-bastion-private-key>
|
||||
|
||||
Host private-server
|
||||
HostName <private-server-ip>
|
||||
User <private-server-user>
|
||||
ProxyJump bastion
|
||||
IdentityFile <path-to-private-server-private-key>
|
||||
```
|
||||
|
||||
- Connect to the bastion host using:
|
||||
```bash
|
||||
ssh bastion
|
||||
```
|
||||
- From the bastion host, connect to the private server:
|
||||
```bash
|
||||
ssh private-server
|
||||
```
|
||||
- Alternatively, connect directly using your local machine:
|
||||
```bash
|
||||
ssh private-server
|
||||
```
|
||||
|
||||
- Optionally set up basic monitoring for SSH access attempts using tools like `fail2ban` for example.
|
||||
|
||||
## Stretch Goals
|
||||
|
||||
- **Harden Security**: Configure multi-factor authentication (MFA) for the bastion host. Use `iptables` or similar tools for more granular traffic filtering.
|
||||
- **Automate Setup**: Use Terraform or Ansible to automate the deployment and configuration of your bastion host and private server.
|
||||
|
||||
---
|
||||
|
||||
## Important Note for Solution Submission
|
||||
|
||||
**Do not share sensitive information (e.g., private keys, IP addresses) in public repositories.** Your submission should contain a `README.md` file describing the steps and configurations you used to complete the project.
|
||||
|
||||
---
|
||||
|
||||
After completing this project, you will have a strong understanding of how to set up a bastion host and securely manage access to private infrastructure. This foundational knowledge will prepare you for more advanced projects in network and infrastructure security.
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Blogging Platform API'
|
||||
description: 'Build a RESTful API for a personal blogging platform'
|
||||
isNew: false
|
||||
sort: 7
|
||||
sort: 800
|
||||
difficulty: 'beginner'
|
||||
nature: 'API'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Broadcast Server'
|
||||
description: 'Build a server that can broadcast messages to connected clients.'
|
||||
isNew: false
|
||||
sort: 12
|
||||
sort: 1500
|
||||
difficulty: 'intermediate'
|
||||
nature: 'CLI'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Caching Proxy'
|
||||
description: 'Build a caching server that caches responses from other servers.'
|
||||
isNew: false
|
||||
sort: 10
|
||||
sort: 1200
|
||||
difficulty: 'intermediate'
|
||||
nature: 'CLI'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Database Backup Utility'
|
||||
description: 'Build a database backup utility that can backup and restore any DB'
|
||||
isNew: false
|
||||
sort: 18
|
||||
sort: 2100
|
||||
difficulty: 'advanced'
|
||||
nature: 'CLI'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'E-Commerce API'
|
||||
description: 'E-Commerce platform with cart and payment gateway integration.'
|
||||
isNew: false
|
||||
sort: 13
|
||||
sort: 1600
|
||||
difficulty: 'intermediate'
|
||||
nature: 'API'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Expense Tracker API'
|
||||
description: 'Build an API for an expense tracker application.'
|
||||
isNew: false
|
||||
sort: 9
|
||||
sort: 1000
|
||||
difficulty: 'beginner'
|
||||
nature: 'API'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Expense Tracker'
|
||||
description: 'Build a simple expense tracker to manage your finances.'
|
||||
isNew: false
|
||||
sort: 3
|
||||
sort: 300
|
||||
difficulty: 'beginner'
|
||||
nature: 'CLI'
|
||||
skills:
|
||||
|
||||
56
src/data/projects/file-integrity-checker.md
Normal file
56
src/data/projects/file-integrity-checker.md
Normal file
@@ -0,0 +1,56 @@
|
||||
---
|
||||
title: 'File Integrity Checker'
|
||||
description: 'Verify the integrity of application log files to detect tampering.'
|
||||
isNew: false
|
||||
sort: 1602
|
||||
difficulty: 'intermediate'
|
||||
nature: 'Security'
|
||||
skills:
|
||||
- 'Bash'
|
||||
- 'Python'
|
||||
- 'Linux'
|
||||
- 'Cyber Security'
|
||||
seo:
|
||||
title: 'Build A File Integrity Checking Tool'
|
||||
description: 'Learn how to build a CLI tool that validates the integrity of a file using hashes.'
|
||||
keywords:
|
||||
- 'integrity'
|
||||
- 'hashing'
|
||||
- 'security'
|
||||
- 'devops'
|
||||
- 'cyber security'
|
||||
roadmapIds:
|
||||
- 'devops'
|
||||
---
|
||||
|
||||
You are required to develop a tool that verifies the integrity of log files to detect tampering. This tool can be used to enhance security measures by using techniques such as file integrity monitoring and hashing to ensure that no unauthorized changes have been made to the log files.
|
||||
|
||||
## Requirements
|
||||
|
||||
The tool should be capable of the following:
|
||||
|
||||
- Accept a directory or a single log file as input.
|
||||
- Utilize a cryptographic hashing algorithm, such as SHA-256, to compute hashes for each log file provided.
|
||||
- On first use, store the computed hashes in a secure location.
|
||||
- For subsequent uses, compare the newly computed hashes against the previously stored ones.
|
||||
- Clearly report any discrepancies found as a result of the hash comparison, indicating possible file tampering.
|
||||
- Allow for manual re-initialization of log file integrity.
|
||||
|
||||
Here is the example of how it might look like
|
||||
|
||||
```bash
|
||||
> ./integrity-check init /var/log # Initializes and stores hashes of all log files in the directory
|
||||
> Hashes stored successfully.
|
||||
|
||||
> ./integrity-check check /var/log/syslog
|
||||
> Status: Modified (Hash mismatch)
|
||||
# Optionally report the files where hashes mismatched
|
||||
|
||||
> ./integrity-check -check /var/log/auth.log
|
||||
> Status: Unmodified
|
||||
|
||||
> ./integrity-check update /var/log/syslog
|
||||
> Hash updated successfully.
|
||||
```
|
||||
|
||||
After completing this project you will get the idea of hashing algorithms, security and writing scripts.
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Workout Tracker'
|
||||
description: 'App to let users track their workouts and progress.'
|
||||
isNew: false
|
||||
sort: 14
|
||||
sort: 1700
|
||||
difficulty: 'intermediate'
|
||||
nature: 'API'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'GitHub User Activity'
|
||||
description: 'Use GitHub API to fetch user activity and display it in the terminal.'
|
||||
isNew: false
|
||||
sort: 2
|
||||
sort: 200
|
||||
difficulty: 'beginner'
|
||||
nature: 'CLI'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Image Processing Service'
|
||||
description: 'Build a service that allows users to upload and process images.'
|
||||
isNew: false
|
||||
sort: 15
|
||||
sort: 1800
|
||||
difficulty: 'intermediate'
|
||||
nature: 'API'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Markdown Note-taking App'
|
||||
description: 'Build a note-taking app that uses markdown for formatting.'
|
||||
isNew: false
|
||||
sort: 10
|
||||
sort: 1300
|
||||
difficulty: 'intermediate'
|
||||
nature: 'API'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Movie Reservation System'
|
||||
description: 'Build a system that allows users to reserve movie tickets.'
|
||||
isNew: false
|
||||
sort: 16
|
||||
sort: 1900
|
||||
difficulty: 'advanced'
|
||||
nature: 'API'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Number Guessing Game'
|
||||
description: 'Build a simple number guessing game to test your luck.'
|
||||
isNew: false
|
||||
sort: 4
|
||||
sort: 400
|
||||
difficulty: 'beginner'
|
||||
nature: 'CLI'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Personal Blog'
|
||||
description: 'Build a personal blog to write and publish articles on various topics.'
|
||||
isNew: false
|
||||
sort: 5
|
||||
sort: 600
|
||||
difficulty: 'beginner'
|
||||
nature: 'Web App'
|
||||
skills:
|
||||
|
||||
53
src/data/projects/pomodoro-timer.md
Normal file
53
src/data/projects/pomodoro-timer.md
Normal file
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: 'Pomodoro Timer'
|
||||
description: 'Create a pomodoro tracker application for productivity'
|
||||
isNew: true
|
||||
sort: 28
|
||||
difficulty: 'intermediate'
|
||||
nature: 'Frameworks'
|
||||
skills:
|
||||
- 'HTML'
|
||||
- 'CSS'
|
||||
- 'JavaScript'
|
||||
- 'Frameworks'
|
||||
seo:
|
||||
title: 'Pomodoro Tracker'
|
||||
description: 'Create a pomodoro time tracker application for productivity tracking.'
|
||||
keywords:
|
||||
- 'frontend project'
|
||||
- 'frontend frameworks'
|
||||
- 'javascript'
|
||||
- 'frontend project idea'
|
||||
roadmapIds:
|
||||
- 'frontend'
|
||||
---
|
||||
|
||||
The goal of this project is to learn and practice frontend development skills by building a **Pomodoro Timer**, a productivity tool based on the Pomodoro Technique. The Pomodoro Technique is a time management method that uses a timer to break work into intervals (typically 25 minutes) separated by short breaks.
|
||||
|
||||
## Requirements
|
||||
|
||||
You will create a Pomodoro Timer web application using the frontend framework of your choice e.g. React, Vue or Angular. Here is the list of requirements for the application:
|
||||
|
||||
- User should be able to start stop and resume a pomodoro timer.
|
||||
- User should be able to configure the default interval configuration; default work session should be 25 minutes, short break should be 5 minutes and longer break after 4 work sessions should be 15 minutes.
|
||||
- Application should display the current session type (e.g., Work, Short Break, Long Break).
|
||||
- It should also track the number of tracked work sessions
|
||||
- Play a sound when a session ends to notify the user.
|
||||
- Ensure the app is accessible and visually appealing on both desktop and mobile devices.
|
||||
|
||||
You can use any existing pomodoro apps for the UI inspiration e.g.
|
||||
|
||||
- [time.fyi - Pomodoro Timer](https://time.fyi/pomodoro)
|
||||
- [Pomofocus - Pomodoro Tracker](https://pomofocus.io/)
|
||||
|
||||
## Technical Requirements
|
||||
|
||||
- Use **HTML**, **CSS**, and **JavaScript** (or a frontend framework/library such as React, Vue, or Angular).
|
||||
- Implement state management for the timer and session tracking.
|
||||
- Use a modular and reusable code structure.
|
||||
- Maintain proper accessibility standards (e.g., keyboard navigation, ARIA labels).
|
||||
|
||||
Feel free to deploy the application on [GitHub Pages](https://pages.github.com/), [Vercel](https://vercel.com/) or [Cloudflare pages](https://pages.cloudflare.com/)
|
||||
---
|
||||
|
||||
By completing this project, you will enhance your frontend development skills while building a functional and customizable Pomodoro Timer application. This knowledge will prepare you for more advanced projects and improve your ability to create interactive and user-friendly web applications.
|
||||
43
src/data/projects/quiz-app.md
Normal file
43
src/data/projects/quiz-app.md
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: 'Quiz App'
|
||||
description: 'Build a browser-based quiz application to test any knowledge'
|
||||
isNew: true
|
||||
sort: 29
|
||||
difficulty: 'intermediate'
|
||||
nature: 'Frameworks'
|
||||
skills:
|
||||
- 'HTML'
|
||||
- 'CSS'
|
||||
- 'JavaScript'
|
||||
- 'Frameworks'
|
||||
seo:
|
||||
title: 'Quiz App'
|
||||
description: 'Build a browser-based quiz application to test any knowledge'
|
||||
keywords:
|
||||
- 'frontend project'
|
||||
- 'frontend frameworks'
|
||||
- 'javascript'
|
||||
- 'frontend project idea'
|
||||
roadmapIds:
|
||||
- 'frontend'
|
||||
---
|
||||
|
||||
In this project, we will be making a browser based quiz. The app will present users with a series of multiple-choice questions and after each question, the app will provide immediate feedback on whether the selected answer is correct or incorrect.
|
||||
|
||||
## Requirements
|
||||
|
||||
As a developer, feel free to come up with a JSON based quiz the questions as you see fit.
|
||||
|
||||
- The user will be initially presented with a "start" button and some detail about the quiz
|
||||
- When the user presses start they're presented with the first multiple choice question.
|
||||
- The questions are to be presented as `cards` with the answers being buttons on the card.
|
||||
- When the user selects an answer, the answer buttons are to turn red or green depending on the result. It should also show what the correct answer was.
|
||||
- If the user answers correctly, a score is to be incremented.
|
||||
- At the end of the quiz, the user is presented with a final score and all of the results.
|
||||
- Optionally add a timer of 1 minute to each question, if user doesn't attempt the question in that time, it should skip to next question and score should be decremented by 1.
|
||||
|
||||
You can use any frontend framework such as React, Vue or Angular and some state management library to handle the state.
|
||||
|
||||
---
|
||||
|
||||
After finishing this project, you will have a good understanding of managing complex states and building an app of moderate complexity using any frontend framework.
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Real-time Leaderboard'
|
||||
description: 'Create a real-time leaderboard system for ranking and scoring.'
|
||||
isNew: false
|
||||
sort: 17
|
||||
sort: 2000
|
||||
difficulty: 'advanced'
|
||||
nature: 'API'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Scalable E-Commerce Platform'
|
||||
description: 'Build an e-commerce platform using microservices architecture.'
|
||||
isNew: false
|
||||
sort: 19
|
||||
sort: 2200
|
||||
difficulty: 'advanced'
|
||||
nature: 'API'
|
||||
skills:
|
||||
|
||||
42
src/data/projects/stories-feature.md
Normal file
42
src/data/projects/stories-feature.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: '24hr Story Feature'
|
||||
description: 'Create a client-side instagram stories feature clone.'
|
||||
isNew: false
|
||||
sort: 32
|
||||
difficulty: 'advanced'
|
||||
nature: 'Frameworks'
|
||||
skills:
|
||||
- 'JavaScript'
|
||||
- 'Storage'
|
||||
- 'Timeouts'
|
||||
seo:
|
||||
title: 'Build an Instagram Story Clone'
|
||||
description: 'Create a client-side instagram stories feature clone.'
|
||||
keywords:
|
||||
- 'html'
|
||||
- 'css'
|
||||
- 'javascript'
|
||||
- 'instagram story'
|
||||
roadmapIds:
|
||||
- 'frontend'
|
||||
---
|
||||
|
||||
You are required to build a "Story" feature similar to those found in popular social media platforms like Instagram and WhatsApp. The goal is to allow a user to post short, ephemeral content that disappears after 24 hours. As this is a Frontend project this is going to be client-side only.
|
||||
|
||||
## Requirements
|
||||
|
||||
There will be a list of stories at the top and a plus button. Clicking the plus button will allow user to upload an image which will be converted to base64 and stored in local storage. The image will be displayed in the list of stories. The image will be removed after 24 hours. User should optionally be able to swipe through the stories.
|
||||
|
||||

|
||||
|
||||
## Constraints
|
||||
|
||||
- You can use any frontend framework to build this
|
||||
- Feel free to use any libraries or tools you are comfortable with
|
||||
- The project should be client-side only
|
||||
- The project should be responsive
|
||||
- Image dimensions should be constrained to a maximum of 1080px x 1920px
|
||||
|
||||
---
|
||||
|
||||
After building this project, you will have a better understanding of how to work with client-side storage, timeouts, and how to create a responsive design.
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Task Tracker'
|
||||
description: 'Build a CLI app to track your tasks and manage your to-do list.'
|
||||
isNew: false
|
||||
sort: 1
|
||||
sort: 100
|
||||
difficulty: 'beginner'
|
||||
nature: 'CLI'
|
||||
skills:
|
||||
|
||||
54
src/data/projects/tmdb-cli.md
Normal file
54
src/data/projects/tmdb-cli.md
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: 'TMDB CLI Tool'
|
||||
description: 'Use TMDB API to fetch movie information and display it in the terminal.'
|
||||
isNew: false
|
||||
sort: 1100
|
||||
difficulty: 'beginner'
|
||||
nature: 'CLI'
|
||||
skills:
|
||||
- 'Programming Language'
|
||||
- 'CLI'
|
||||
- 'API Consumption'
|
||||
seo:
|
||||
title: 'TMDB CLI Tool'
|
||||
description: 'Build a command line interface (CLI) to fetch and display common TMDB requests.'
|
||||
keywords:
|
||||
- 'tmdb user activity cli'
|
||||
- 'backend project idea'
|
||||
roadmapIds:
|
||||
- 'backend'
|
||||
- 'nodejs'
|
||||
- 'python'
|
||||
- 'java'
|
||||
- 'golang'
|
||||
- 'spring-boot'
|
||||
- 'cpp'
|
||||
---
|
||||
|
||||
In this project, you will build a simple command line interface (CLI) to fetch data from The Movie Database (TMSB) and display it in the terminal. This project will help you practice your programming skills, including working with APIs, handling JSON data, and building a simple CLI application.
|
||||
|
||||
## Requirements
|
||||
|
||||
The application should run from the command line, and be able to pull and show the popular, top-rated, upcoming and now playing movies from the TMDB API. The user should be able to specify the type of movies they want to see by passing a command line argument to the CLI tool.
|
||||
|
||||
Here is how the CLI tool usage should look like:
|
||||
|
||||
```bash
|
||||
tmdb-app --type "playing"
|
||||
tmdb-app --type "popular"
|
||||
tmdb-app --type "top"
|
||||
tmdb-app --type "upcoming"
|
||||
```
|
||||
|
||||
You can look at the API documentation to understand how to fetch the data for each type of movie.
|
||||
|
||||
- [Now Playing Movies](https://developer.themoviedb.org/reference/movie-now-playing-list)
|
||||
- [Popular Movies](https://developer.themoviedb.org/reference/movie-popular-list)
|
||||
- [Top Rated Movies](https://developer.themoviedb.org/reference/movie-top-rated-list)
|
||||
- [Upcoming Movies](https://developer.themoviedb.org/reference/movie-upcoming-list)
|
||||
|
||||
There are some considerations to keep in mind:
|
||||
|
||||
- Handle errors gracefully, such as API failures or network issues.
|
||||
- Use a programming language of your choice to build this project.
|
||||
- Make sure to include a README file with instructions on how to run the application and any other relevant information.
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Todo List API'
|
||||
description: 'Build a RESTful API to allow users to manage their to-do list.'
|
||||
isNew: false
|
||||
sort: 7
|
||||
sort: 900
|
||||
difficulty: 'beginner'
|
||||
nature: 'API'
|
||||
skills:
|
||||
@@ -64,7 +64,7 @@ Register a new user using the following request:
|
||||
POST /register
|
||||
{
|
||||
"name": "John Doe",
|
||||
"email": "john@doe.com"
|
||||
"email": "john@doe.com",
|
||||
"password": "password"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Unit Converter'
|
||||
description: 'Unit converter to convert between different units of measurement.'
|
||||
isNew: false
|
||||
sort: 4
|
||||
sort: 500
|
||||
difficulty: 'beginner'
|
||||
nature: 'Web App'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'URL Shortening Service'
|
||||
description: 'Build a URL Shortener API that helps shorten long URLs.'
|
||||
isNew: false
|
||||
sort: 11
|
||||
sort: 1400
|
||||
difficulty: 'intermediate'
|
||||
nature: 'API'
|
||||
skills:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'Weather API'
|
||||
description: 'Build a weather API that fetches and returns weather data.'
|
||||
isNew: false
|
||||
sort: 7
|
||||
sort: 700
|
||||
difficulty: 'beginner'
|
||||
nature: 'API'
|
||||
skills:
|
||||
|
||||
38
src/data/projects/weather-app.md
Normal file
38
src/data/projects/weather-app.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: 'Weather Web App'
|
||||
description: 'Build a weather app that fetches and displays weather for a given location.'
|
||||
isNew: false
|
||||
sort: 31
|
||||
difficulty: 'intermediate'
|
||||
nature: 'API'
|
||||
skills:
|
||||
- 'Programming Language'
|
||||
- '3rd Party APIs'
|
||||
- 'JavaScript'
|
||||
- 'HMTL'
|
||||
- 'CSS'
|
||||
seo:
|
||||
title: 'Weather App Project Idea'
|
||||
description: 'Build a web-based weather app that fetches and displays weather data.'
|
||||
keywords:
|
||||
- 'weather api'
|
||||
- 'frontend project idea'
|
||||
roadmapIds:
|
||||
- 'frontend'
|
||||
---
|
||||
|
||||
In this project you are required to build a weather app that displays the current weather details based on the location entered by the user. We will be leveraging a common weather API to achieve this.
|
||||
|
||||
You can use the [Visual Crossing Weather API](https://www.visualcrossing.com/weather-api) to fetch the weather data.
|
||||
|
||||
## Requirements
|
||||
|
||||
- The User should be able to enter a location into an input field
|
||||
- The User will be presented with temperature, wind speed, likelihood of rain, and general weather i.e. Sunny, Raining, Cloudy etc.
|
||||
- The User will be shown the previous and future 24 hour periods.
|
||||
- The weather outlook can be refreshed by the user.
|
||||
|
||||
## Stretch Goals
|
||||
|
||||
- Animation libraries such as framer can used to make the loading of weather more visually appealing
|
||||
- The default weather view is the Users current location.
|
||||
@@ -6,7 +6,7 @@ At a high level, the way this process works is as follows:
|
||||
|
||||
- **Setup Two Environments**: Prepare two identical environments: blue (current live environment) and green (new version environment).
|
||||
- **Deploy to Green**: Deploy the new version of the application to the green environment through your normal CI/CD pipelines.
|
||||
- **Testing green**: Perform testing and validation in the green environment to ensure the new version works as expected.
|
||||
- **Test green**: Perform testing and validation in the green environment to ensure the new version works as expected.
|
||||
- **Switch Traffic**: Once the green environment is verified, switch the production traffic from blue to green. Optionally, the traffic switch can be done gradually to avoid potential problems from affecting all users immediately.
|
||||
- **Monitor**: Monitor the green environment to ensure it operates correctly with live traffic. Take your time, and make sure you’ve monitored every single major event before issuing the “green light”.
|
||||
- **Fallback Plan**: Keep the blue environment intact as a fallback. If any issues arise in the green environment, you can quickly switch traffic back to the blue environment. This is one of the fastest rollbacks you’ll experience in deployment and release management.
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
Setting up a CI/CD pipeline from scratch involves several steps. Assuming you’ve already set up your project on a version control system, and everyone in your team has proper access to it, then the next steps would help:
|
||||
|
||||
1. **Setup the Continuous Integration (CI)**:
|
||||
1. **Set up the Continuous Integration (CI)**:
|
||||
- Select a continuous integration tool (there are many, like Jenkins, GitLab CI, CircleCI, pick one).
|
||||
- Connect the CI tool to your version control system.
|
||||
- Write a build script that defines the build process, including steps like code checkout, dependencies installation, compiling the code, and running tests.
|
||||
- Write a build script that defines the build process, including steps like code checkout, dependency installation, compiling the code, and running tests.
|
||||
- Set up automated testing to run on every code commit or pull request.
|
||||
|
||||
2. **Artifact Storage**:
|
||||
- Decide where to store build artifacts (it could be Docker Hub, AWS S3 or anywhere you can then reference from the CD pipeline).
|
||||
- Configure the pipeline to package and upload artifacts to the storage after a successful build.
|
||||
|
||||
3. **Setup your Continuous Deployment (CD)**:
|
||||
3. **Set up your Continuous Deployment (CD)**:
|
||||
- Choose a CD tool or extend your CI tool (same deal as before, there are many options, pick one).
|
||||
Define deployment scripts that specify how to deploy your application to different environments (e.g., development, staging, production).
|
||||
- Configure the CD tool to trigger deployments after successful builds and tests.
|
||||
@@ -21,12 +21,12 @@ Remember that this system should be able to pull the artifacts from the continuo
|
||||
- Provision infrastructure using IaC tools (e.g., Terraform, CloudFormation).
|
||||
- Ensure environments are consistent and reproducible to reduce times if there is a need to create new ones or destroy and recreate existing ones. This should be as easy as executing a command without any human intervention.
|
||||
|
||||
5. **Setup your monitoring and logging solutions**:
|
||||
5. **Set up your monitoring and logging solutions**:
|
||||
- Implement monitoring and logging for your applications and infrastructure (e.g., Prometheus, Grafana, ELK stack).
|
||||
- Remember to configure alerts for critical issues. Otherwise, you’re missing a key aspect of monitoring (reacting to problems).
|
||||
|
||||
6. **Security and Compliance**:
|
||||
- By now, it’s a good idea to think about integrating security scanning tools into your pipeline (e.g., Snyk, OWASP Dependency-Check).
|
||||
- nsure compliance with relevant standards and practices depending on your specific project’s needs.
|
||||
- Ensure compliance with relevant standards and practices depending on your specific project’s needs.
|
||||
|
||||
Additionally, as a good practice, you might also want to document the CI/CD process, pipeline configuration, and deployment steps. This is to train new team members on using and maintaining the pipelines you just created.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
A container is a runtime instance of a container image (which is a lightweight, executable package that includes everything needed to run your code). It is the execution environment that runs the application or service defined by the container image.
|
||||
A container is a runtime instance of a container image (which is a lightweight, executable package that includes everything needed to run your code). It is the execution environment that runs the application or service defined by the container image.
|
||||
|
||||
When a container is started, it becomes an isolated process on the host machine with its own filesystem, network interfaces, and other resources.
|
||||
Containers share the host operating system's kernel, making them more efficient and faster to start than virtual machines.
|
||||
Containers share the host operating system's kernel, making them more efficient and quicker to start than virtual machines.
|
||||
|
||||
A virtual machine (VM), on the other hand, is an emulation of a physical computer. Each VM runs a full operating system and has virtualized hardware, which makes them more resource-intensive and slower to start compared to containers.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
To implement security in a DevOps pipeline (DevSecOps), you should integrate security practices throughout the development and deployment process. This is not just about securing the app once it’s in production, this is about securing the entire app-creation process.
|
||||
To implement security in a DevOps pipeline (DevSecOps), you should integrate security practices throughout the development and deployment process. This is not just about securing the app once it’s in production, this is about securing the entire application-creation process.
|
||||
|
||||
That includes:
|
||||
|
||||
@@ -7,5 +7,5 @@ That includes:
|
||||
3. **Continuous Monitoring**: Monitor the pipeline and the deployed applications for security incidents using tools like Prometheus, Grafana, and specialized security monitoring tools.
|
||||
4. **Infrastructure as Code - Security**: Ensure that infrastructure configurations defined in code are secure by scanning IaC templates (like Terraform) for misconfigurations and vulnerabilities (like hardcoded passwords).
|
||||
5. **Access Control**: Implement strict access controls, using something like role-based access control (RBAC) or ABAC (attribute-based access control) and enforcing the principle of least privilege across the pipeline.
|
||||
6. **Compliance Checks**: Figure out the compliance and regulations of your industry and integrate those checks to ensure the pipeline adheres to industry standards and regulatory requirements.
|
||||
7. **Incident Response**: Figure out a clear incident response plan and integrate security alerts into the pipeline to quickly address potential security breaches.
|
||||
6. **Compliance Checks**: Figure out the compliance requirements and regulations of your industry and integrate those checks to ensure the pipeline adheres to industry standards and regulatory requirements.
|
||||
7. **Incident Response**: Figure out a clear incident response plan and integrate security alerts into the pipeline to quickly address potential security breaches.
|
||||
|
||||
@@ -4,4 +4,4 @@ A load balancer is a device or software that distributes incoming network traffi
|
||||
|
||||
It is important because it improves the availability, reliability, and performance of applications by evenly distributing the load, preventing server overload, and providing failover capabilities in case of server failures.
|
||||
|
||||
Load balancers are usually used when scaling up RESTful microservices, because given their stateless nature, you can set up multiple copies of the same one behind a load balancer and let it distribute the load amongst all copies evenly.
|
||||
Load balancers are usually used when scaling up RESTful microservices, as their stateless nature, you can set up multiple copies of the same one behind a load balancer and let it distribute the load amongst all copies evenly.
|
||||
|
||||
@@ -3,6 +3,6 @@ To migrate an existing application into a containerized environment, you’ll ne
|
||||
1. Figure out what parts of the application need to be containerized together.
|
||||
2. Create your Dockerfiles and define the entire architecture in that configuration, including the interservice dependencies that there might be.
|
||||
3. Figure out if you also need to containerize any external dependency, such as a database. If you do, add that to the Dockerfile.
|
||||
4. Build the actual docker image.
|
||||
4. Build the actual Docker image.
|
||||
5. Once you make sure it runs locally, configure the orchestration tool you use to manage the containers.
|
||||
6. You’re now ready to deploy to production, however, make sure you keep monitoring and alerting on any problem shortly after the deployment in case you need to roll back.
|
||||
|
||||
@@ -5,5 +5,5 @@ There are many ways in which you can optimize a CI/CD pipeline for performance a
|
||||
3. **Incremental Builds**: Implement incremental builds that only rebuild parts of the codebase that have changed, rather than the entire project. This is especially useful for large projects with big codebases.
|
||||
4. **Efficient Testing**: Prioritize and parallelize tests, running faster unit tests early and reserving more intensive integration or end-to-end tests for later stages. Be smart about it and use test impact analysis to only run tests affected by recent code changes.
|
||||
5. **Monitor Pipeline Health**: Continuously monitor the pipeline for bottlenecks, failures, and performance issues. Use metrics and logs to identify and address inefficiencies.
|
||||
6. **Environment Consistency**: Ensure that build, test, and production environments are consistent to avoid "it works on my machine" issues. Use containerization or Infrastructure as Code (IaC) to maintain environment parity. Your code should work in all environments, and if it doesn’t, it should not be the fault of the environment.
|
||||
6. **Environment Consistency**: Ensure that build, test, and production environments are consistent to avoid "It works on my machine" issues. Use containerization or Infrastructure as Code (IaC) to maintain environment parity. Your code should work in all environments, and if it doesn’t, it should not be the fault of the environment.
|
||||
7. **Pipeline Stages**: Use pipeline stages wisely to catch issues early. For example, fail fast on linting or static code analysis before moving on to more resource-intensive stages.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||

|
||||

|
||||
|
||||
A reverse proxy is a piece of software that sits between clients and backend servers, forwarding client requests to the appropriate server and returning the server's response to the client. It helps with load balancing, security, caching, and handling SSL termination.
|
||||
|
||||
An example of a reverse proxy is **Nginx**. For example, if you have a web application running on several backend servers, Nginx can distribute incoming HTTP requests evenly among these servers. This setup improves performance, enhances fault tolerance, and ensures that no single server is overwhelmed by traffic.
|
||||
An example of a reverse proxy is **Nginx**. For example, if you have a web application running on several backend servers, Nginx can distribute incoming HTTP requests evenly among these servers. This setup improves performance, enhances fault tolerance, and ensures that no single server is overwhelmed by traffic.
|
||||
|
||||
@@ -2,14 +2,14 @@ This is probably one of the most common DevOps interview questions out there bec
|
||||
|
||||
That said, this is not a trivial question to answer because different companies will likely implement DevOps with their own “flavor” and in their own way.
|
||||
|
||||
At a high level, the role of a DevOps engineer is to bridge the gap between development and operations teams with the aim of improving the development lifecycle and reducing deployment errors.
|
||||
At a high level, the role of a DevOps engineer is to bridge the gap between development and operations teams with the aim of improving the development lifecycle and reducing deployment errors.
|
||||
|
||||
With that said other key responsibilities may include:
|
||||
|
||||
- Implementing and managing CI/CD pipelines.
|
||||
- Automating infrastructure provisioning and configuration using IaC tools.
|
||||
- Monitoring and maintaining system performance, security, and availability.
|
||||
- Collaborating with developers to streamline code deployments and ensure smooth operations.
|
||||
- Collaborating with developers to streamline code deployments and ensures smooth operations.
|
||||
- Managing and optimizing cloud infrastructure.
|
||||
- Ensuring system scalability and reliability.
|
||||
- Troubleshooting and resolving issues across the development and production environments.
|
||||
|
||||
@@ -2,7 +2,7 @@ Docker is an open-source platform that enables developers to create, deploy, and
|
||||
|
||||
That, in turn, ensures that the application can run consistently across various computing environments.
|
||||
|
||||
Docker has become one of the most popular DevOps tools because it provides a consistent and isolated environment for development, continuous testing, and deployment. This consistency helps to eliminate the common "it works on my machine" problem by ensuring that the application behaves the same way, regardless of where it is run—whether on a developer's local machine, a testing server, or in production.
|
||||
Docker has become one of the most popular DevOps tools because it provides a consistent and isolated environment for development, continuous testing, and deployment. This consistency helps to eliminate the common "It works on my machine" problem by ensuring that the application behaves the same way, regardless of where it is run—whether on a developer's local machine, a testing server, or in production.
|
||||
|
||||
Additionally, Docker simplifies the management of complex applications by allowing developers to break them down into smaller, manageable microservices, each running in its own container.
|
||||
|
||||
|
||||
@@ -4,4 +4,4 @@ It is important in DevOps because it allows multiple team members to collaborate
|
||||
|
||||
In terms of tooling, one of the best and most popular version control systems is Git. It provides what is known as a distributed version control system, giving every team member a piece of the code so they can branch it, work on it however they feel like it, and push it back to the rest of the team once they’re done.
|
||||
|
||||
That said, there are other legacy teams using alternatives like CSV or SVN.
|
||||
That said, there are other legacy teams using alternatives like CVS or SVN.
|
||||
|
||||
@@ -226,11 +226,11 @@ questions:
|
||||
|
||||
The evolution of technology and practices, coupled with the increase in complexity of the systems we develop, make the role of DevOps more relevant by the day.
|
||||
|
||||
But becoming a successful DevOps is not a trivial task, especially because this role is usually the evolution of a developer looking to get more involved in other related ops areas or someone from ops who’s starting to get more directly involved in the development space.
|
||||
But becoming a successful DevOps engineer is not a trivial task, especially because this role is usually the evolution of a developer looking to get more involved in other related ops areas or someone from ops who’s starting to get more directly involved in the development space.
|
||||
|
||||
Either way, DevOps engineers live between the development and operations teams, understanding enough about each area to be able to work towards improving their interactions.
|
||||
Either way, DevOps engineers work between the development and operations teams, understanding enough about each area to be able to work towards improving their interactions.
|
||||
|
||||
Because of this strange situation, while detailed roadmaps (be sure to check out our DevOps roadmap!) help a lot, getting ready for a DevOps interview requires a lot of work.
|
||||
Because of this strange situation, while detailed roadmaps (be sure to check out our [DevOps roadmap](https://roadmap.sh/devops)!) help a lot, getting ready for a DevOps interview requires a lot of work.
|
||||
|
||||
Here are the most relevant DevOps interview questions you’ll likely get asked during a DevOps interview, plus a few more that will push your skills to the next level.
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ AI code editors are development tools that leverage artificial intelligence to a
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@website@Cursor - The AI Code Editor](https://www.cursor.com/)
|
||||
- [@website@PearAI - The Open Source, Extendable AI Code Editor](https://trypear.ai/)
|
||||
- [@website@Bolt - Prompt, run, edit, and deploy full-stack web apps](https://bolt.new)
|
||||
- [@website@Replit - Build Apps using AI](https://replit.com/ai)
|
||||
- [@website@v0 - Build Apps with AI](https://v0.dev)
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Introduction
|
||||
|
||||
AI Engineering is the process of designing and implementing AI systems using pre-trained models and existing AI tools to solve practical problems. AI Engineers focus on applying AI in real-world scenarios, improving user experiences, and automating tasks, without developing new models from scratch. They work to ensure AI systems are efficient, scalable, and can be seamlessly integrated into business applications, distinguishing their role from AI Researchers and ML Engineers, who concentrate more on creating new models or advancing AI theory.
|
||||
AI Engineering is the process of designing and implementing AI systems using pre-trained models and existing AI tools to solve practical problems. AI Engineers focus on applying AI in real-world scenarios, improving user experiences, and automating tasks, without developing new models from scratch. They work to ensure AI systems are efficient, scalable, and can be seamlessly integrated into business applications, distinguishing their role from AI Researchers and ML Engineers, who concentrate more on creating new models or advancing AI theory.
|
||||
|
||||
Learn more from the following resources:
|
||||
|
||||
- [@video@AI vs Machine Learning](https://www.youtube.com/watch?v=4RixMPF4xis)
|
||||
|
||||
@@ -8,4 +8,4 @@ Visit the following resources to learn more:
|
||||
- [@article@The Beginners Guide to C#](https://www.w3schools.com/CS/index.php)
|
||||
- [@article@C# Tutorial](https://www.w3schools.com/cs/index.php)
|
||||
- [@video@C# Full Course - Learn C# 10 and .NET 6 in 7 hours](https://www.youtube.com/watch?v=q_F4PyW8GTg)
|
||||
- [@feed@Explore top posts about C#](https://app.daily.dev/tags/c#?ref=roadmapsh)
|
||||
- [@feed@Explore top posts about C#](https://app.daily.dev/tags/csharp?ref=roadmapsh)
|
||||
|
||||
@@ -12,4 +12,4 @@ Visit the following links for more information:
|
||||
- [@article@Basics Of C#](https://www.c-sharpcorner.com/UploadFile/e9fdcd/basics-of-C-Sharp/)
|
||||
- [@article@C# Tutorials](https://dotnettutorials.net/course/csharp-dot-net-tutorials/)
|
||||
- [@article@C# tutorials - W3Schools](https://www.w3schools.com/cs/index.php)
|
||||
- [@feed@Explore top posts about C#](https://app.daily.dev/tags/c#?ref=roadmapsh)
|
||||
- [@feed@Explore top posts about C#](https://app.daily.dev/tags/csharp?ref=roadmapsh)
|
||||
|
||||
@@ -8,5 +8,5 @@ For more information, visit the following resources:
|
||||
|
||||
- [@official@Postgresql - Open Source Relational Database](https://www.postgresql.org/)
|
||||
- [@article@What is Postgresql?](https://postgresqltutorial.com/postgresql-getting-started/what-is-postgresql/)
|
||||
- [@article@Introduction, Advantages & Disadvantages of PostgreSQL](https://guru99.com/introduction-postgresql.htmlPostgresql)
|
||||
- [@article@Introduction, Advantages & Disadvantages of PostgreSQL](https://www.guru99.com/introduction-postgresql.html)
|
||||
- [@feed@Explore top posts about PostgreSQL](https://app.daily.dev/tags/postgresql?ref=roadmapsh)
|
||||
|
||||
@@ -7,4 +7,4 @@ Visit the following resources to learn more:
|
||||
- [@course@C# Learning Path](https://docs.microsoft.com/en-us/learn/paths/csharp-first-steps/?WT.mc_id=dotnet-35129-website)
|
||||
- [@article@C# on W3 schools](https://www.w3schools.com/cs/index.php)
|
||||
- [@video@Learn C# Programming – Full Course with Mini-Projects](https://www.youtube.com/watch?v=YrtFtdTTfv0)
|
||||
- [@feed@Explore top posts about C#](https://app.daily.dev/tags/c#?ref=roadmapsh)
|
||||
- [@feed@Explore top posts about C#](https://app.daily.dev/tags/csharp?ref=roadmapsh)
|
||||
|
||||
@@ -4,6 +4,7 @@ Unit testing is a software testing method where individual components or units o
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@article@Unit Testing Tutorial](https://www.guru99.com/unit-testing-guide.html)
|
||||
- [@article@Unit testing](https://en.wikipedia.org/wiki/Unit_testing)
|
||||
- [@article@What is Unit Testing?](https://www.guru99.com/unit-testing-guide.html)
|
||||
- [@video@What is Unit Testing?](https://www.youtube.com/watch?v=W2KOSaetWBk)
|
||||
- [@feed@Explore top posts about Testing](https://app.daily.dev/tags/testing?ref=roadmapsh)
|
||||
|
||||
@@ -7,4 +7,5 @@ Visit the following resources to learn more:
|
||||
- [@article@Decentralization in Blockchain](https://www.investopedia.com/decentralized-finance-defi-5113835)
|
||||
- [@article@What is Decentralization?](https://aws.amazon.com/blockchain/decentralization-in-blockchain/)
|
||||
- [@article@What is Decentralization in Blockchain?](https://www.blockchain-council.org/blockchain/what-is-decentralization-in-blockchain/)
|
||||
- [@video@What Is Decentralization in Crypto, Exactly?](https://youtu.be/5iesIki27zw?si=3tUygdRSAveuxGlr)
|
||||
- [@feed@Explore top posts about Decentralization](https://app.daily.dev/tags/decentralization?ref=roadmapsh)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
**Authorization** comes into play after the authentication process is complete. It involves granting or denying access to a resource, based on the authenticated user's privileges. Authorization determines what actions the authenticated user or entity is allowed to perform within a system or application.
|
||||
|
||||
- [@article@Two-factor authentication (2FA)](https://authy.com/what-is-2fa/)
|
||||
- [@article@Biometrics (fingerprint, facial recognition, etc.)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5428991/)
|
||||
- [@article@Biometrics (fingerprint, facial recognition, etc.)](https://me-en.kaspersky.com/resource-center/definitions/biometrics)
|
||||
- [@article@Security tokens or certificates](https://www.comodo.com/e-commerce/ssl-certificates/certificate.php)
|
||||
- [@article@Role-based access control (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control)
|
||||
- [@article@Access Control Lists (ACLs)](https://en.wikipedia.org/wiki/Access-control_list)
|
||||
|
||||
@@ -6,5 +6,4 @@ Learn more from the following resources:
|
||||
|
||||
- [@official@Metasploit Framework](https://www.metasploit.com/)
|
||||
- [@official@Core Impact](https://www.coresecurity.com/)
|
||||
- [@official@Immunity Canvas](www.immunitysec.com)
|
||||
- [@video@Metasploit for Beginners](https://www.youtube.com/watch?v=8lR27r8Y_ik)
|
||||
- [@video@Metasploit for Beginners](https://www.youtube.com/watch?v=8lR27r8Y_ik)
|
||||
|
||||
@@ -8,4 +8,4 @@ Visit the following resources to learn more:
|
||||
- [@article@C# on W3 schools](https://www.w3schools.com/cs/index.php)
|
||||
- [@article@Introduction to C#](https://docs.microsoft.com/en-us/shows/CSharp-101/?WT.mc_id=Educationalcsharp-c9-scottha)
|
||||
- [@video@C# tutorials](https://www.youtube.com/watch?v=gfkTfcpWqAY\&list=PLTjRvDozrdlz3_FPXwb6lX_HoGXa09Yef)
|
||||
- [@feed@Explore top posts about C#](https://app.daily.dev/tags/c#?ref=roadmapsh)
|
||||
- [@feed@Explore top posts about C#](https://app.daily.dev/tags/csharp?ref=roadmapsh)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# Containers
|
||||
# Container Orchestration
|
||||
|
||||
Containers are a construct in which cgroups, namespaces, and chroot are used to fully encapsulate and isolate a process. This encapsulated process, called a container image, shares the kernel of the host with other containers, allowing containers to be significantly smaller and faster than virtual machines, These images are designed for portability, allowing for full local testing of a static image, and easy deployment to a container management platform.
|
||||
Container orchestration is the process of managing and automating the lifecycle of containers, including their deployment, scaling, and networking across multiple hosts. It is a critical technology for running complex containerized applications in production environments.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
By leveraging tools like Kubernetes, Docker Swarm, and Apache Mesos, organizations can ensure high availability, scalability, and reliability for their applications. Container orchestration simplifies operations by automating routine tasks and providing a robust foundation for microservices, cloud-native development, and DevOps practices.
|
||||
|
||||
- [@article@What are Containers?](https://cloud.google.com/learn/what-are-containers)
|
||||
- [@article@What is a Container?](https://www.docker.com/resources/what-container/)
|
||||
- [@video@What are Containers?](https://www.youtube.com/playlist?list=PLawsLZMfND4nz-WDBZIj8-nbzGFD4S9oz)
|
||||
- [@article@Articles about Containers - The New Stack](https://thenewstack.io/category/containers/)
|
||||
- [@feed@Explore top posts about Containers](https://app.daily.dev/tags/containers?ref=roadmapsh)
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@article@What is Container Orchestration?](https://www.redhat.com/en/topics/containers/what-is-container-orchestration)
|
||||
- [@article@What is Kubernetes?](https://kubernetes.io/docs/tutorials/kubernetes-basics/)
|
||||
- [@video@Introduction to Kubernetes](https://www.youtube.com/watch?v=PH-2FfFD2PU)
|
||||
|
||||
@@ -1 +1,5 @@
|
||||
# LinkedIn
|
||||
# LinkedIn
|
||||
|
||||
DevRel professionals can effectively leverage LinkedIn by strategically building and engaging with a network relevant to their industry. This can be achieved by sharing insightful content, such as articles, success stories, and technical guides related to developer relations, which showcases their expertise and enhances their visibility. Engaging in LinkedIn Groups and participating in discussions not only helps in staying up-to-date with industry trends but also in establishing themselves as thought leaders in the developer community. Additionally, LinkedIn can be used to promote and expand the reach of community events, webinars, and conferences, thus strengthening community engagement and fostering professional connections that are essential for successful developer relations.
|
||||
|
||||
- [@official@Visit LinkedIn](https://linkedin.com)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
renderer: 'editor'
|
||||
jsonUrl: '/jsons/roadmaps/devrel.json'
|
||||
pdfUrl: '/pdfs/roadmaps/devrel.pdf'
|
||||
order: 20
|
||||
order: 21
|
||||
briefTitle: 'Developer Relations'
|
||||
briefDescription: 'Step by step guide to becoming a Developer Advocate in 2024'
|
||||
title: 'Developer Relations'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# DockerHub Alternatives
|
||||
|
||||
Container images can be stored in many different registries, not just Dockerhub. Most major cloud platforms now provide container registries such as "Artifact Registry" on Google Cloud Platform, Elastic Container Registry on AWS and Azure Container Registry on Microsoft Azure. GitHub also provides it's own resistry which is useful when container builds are included in your GitHub Actions workflow.
|
||||
Container images can be stored in many different registries, not just Dockerhub. Most major cloud platforms now provide container registries such as "Artifact Registry" on Google Cloud Platform, Elastic Container Registry on AWS and Azure Container Registry on Microsoft Azure. GitHub also provides it's own registry which is useful when container builds are included in your GitHub Actions workflow.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# Agile methodologies
|
||||
|
||||
An Engineering Manager ensures smooth implementation of Agile methodologies within the team. The manager oversees sprint planning, backlog refinement, and retrospectives for consistent development flow. They have the key role in facilitating communication, fostering a high-performing environment, and encouraging adaptive planning.
|
||||
|
||||
The Engineering Manager faces the challenge of maintaining an Agile mindset even when facing pressures to deliver. They have to ensure team members are motivated, engaged, and productive. This can be handled by adopting feedback-friendly culture and regular knowledge-sharing sessions.
|
||||
|
||||
Skills required for an Engineering Manager in handling Agile methodologies include strong leadership, excellent communication, and proficiency in risk management. The manager has to balance the opposing needs of flexibility and stability, always keeping customer satisfaction in perspective.
|
||||
@@ -0,0 +1,7 @@
|
||||
# API strategy
|
||||
|
||||
An Engineering Manager's ability to handle API strategies directly impacts the success of partner management. A key responsibility in this area is defining clear API requirements that align with partner needs and business targets. Meeting these goals can be complex, mainly due to differing partner expectations and changing trends in API development.
|
||||
|
||||
Overcoming these challenges requires a deep understanding of the technical use-cases of the API. An Engineering Manager needs adept negotiation skills to balance the technical and business sides of API strategy. They must also ensure interoperability and maintain the company's standards, which is crucial for partner satisfaction and long-term relations.
|
||||
|
||||
Finally, frequent communication and receptiveness to feedback allows the Manager to refine the strategy effectively, spotting gaps and staying ahead in the competitive tech market.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Architectural Decision-Making
|
||||
|
||||
Architectural decision-making is a crucial responsibility for an Engineering Manager. These decisions can shape the future capabilities and operation of an engineering team. A manager should be capable of balancing current requirements with long-term goals. This involves choosing the right technologies, frameworks and design patterns.
|
||||
|
||||
They face challenges, like managing risks and ensuring scalability. To address these challenges, they use data and consult their teams before making any major decisions to mitigate risk. The decision-making process includes stakeholder consultations, careful analysis of options, and potential risk assessments.
|
||||
|
||||
Effective architectural decision-making requires both technical and leadership skills. The ability to analyse data, understand technical constraints, and make informed decisions are important. The manager also needs good communication skills to explain their decisions to their teams and stakeholders. These skills help in managing the technical strategy of the team effectively.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Architecture documentation
|
||||
|
||||
Engineering managers pave the way to secure well-built architecture documents. These texts act as blueprints - they guide software development and offer comprehensive visibility into the system's structure. Therefore, managers ensure that these crucial documents are precise, updated, and accessible to all team members.
|
||||
|
||||
However, architecture documentation also throws up challenges. The difficulty lies in maintaining the usability and relevance of these documents, particularly as the system evolves over time. Managers tackle these issues by establishing strong documentation policies and encouraging team members to continuously review and revise their work.
|
||||
|
||||
At the core, excellent communication skills and a deep understanding of system architecture are central to succeeding in this area. With these capabilities, engineering managers can effectively translate detailed technical insights into comprehensible visual models and clear descriptions.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Best Practices
|
||||
|
||||
As an Engineering Manager, one key area you interact with is the best practices for documentation. This involves ensuring your team consistently maintains high-quality, easily readable, and efficiently structured documents. Importance is placed on keeping information up-to-date and easily accessible to facilitate quick decision-making and work efficiency.
|
||||
|
||||
One of your responsibilities is to instill an awareness in your team of the lasting impact of good documentation. Encourage them to take time in creating materials that not only help their current project but also aid future understanding.
|
||||
|
||||
Challenges may emerge when documentation is seen as secondary to product development. Overcome this by emphasizing the long-term benefits of comprehensive documentation, like saving time on future projects and reducing technical debt. Ensure your team respects the 'write the docs' ideology where coding and documenting go hand-in-hand.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Bias Recognition / Mitigation
|
||||
|
||||
An Engineering Manager shoulders the responsibility of shaping a team culture that empowers everyone equally. Recognizing and mitigating bias is both a pivotal and challenging part of this role. Ensuring that decisions aren't tainted by personal biases averts, for instance, unjust promotions or assignments.
|
||||
|
||||
Engineering Managers must remain receptive to feedback, acting upon it to uproot hidden biases. Here, communication skills, especially in conflict resolution, come in handy. A manager may also instigate diverse recruitment practices and training sessions to promote an understanding of bias.
|
||||
|
||||
The challenge lies in continuously maintaining awareness of personal blind spots and subconscious preconceptions. Regular introspection and seeking others' viewpoints can help a manager address this. In essence, it's about urging constructive change while fostering a culture that values fairness and inclusion.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Blameless Post-mortems
|
||||
|
||||
An Engineering Manager plays a key role in facilitating blameless post-mortems. They bring teams together after incidents to dissect what went wrong, ensuring the main goal is learning, not pointing fingers.
|
||||
|
||||
The manager is responsible for promoting a no-blame culture. They ensure everyone opens up about their actions without fear or guilt. From this, they derive measures to stop similar incidents from happening. The manager thus carries the mantle of turning unfortunate mishaps into opportunities for team growth.
|
||||
|
||||
Challenges include overcoming the often human instinct to assign blame. To succeed, managers need astute conflict resolution, good listening skills, and a keen understanding of the engineering systems in play. The goal is improving systems, based on learnings, not pinpointing individual mistakes.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Board presentations
|
||||
|
||||
Engineering Managers handle board presentations as a means to communicate company's technical strategies and progress. Main responsibility includes providing a comprehensive yet easy-to-understand technical synopsis to the board members who might not be tech-savvy. It involves striking a balance between technical specifics and high-level overviews.
|
||||
|
||||
A common challenge is simplifying the technical language without losing substance. Using clear visualization tools and analogies can help in making complex concepts more digestible. Not being able to communicate effectively may lead to misunderstandings or underestimation of the team's efforts and milestones.
|
||||
|
||||
Success requires not just technical skills but also a mastery of effective communication. Being ready to answer challenging questions and providing follow-up documents for further reading shows preparedness and understanding of the topics at hand.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Brown Bags
|
||||
|
||||
An Engineering Manager can utilize Brown Bags as a relaxed, voluntary form of knowledge transfer among the team. It's mainly their job to set the agenda and faciliate these informal sessions, leveraging them to encourage team members to share information and learnings.
|
||||
|
||||
They face the challenge of ensuring relevant content is being shared, while maintaining an atmosphere where people are comfortable speaking. They navigate this by fostering a culture of open communication and inclusion within the team, where questions and discussions are encouraged.
|
||||
|
||||
Success in conducting Brown Bags requires excellent communication skills, the ability to facilitate productive discussions, and the wisdom to ensure that the sessions are worthwhile. This enhances cross pollination of ideas and helps to build an environment of trust and continuous learning.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user