Profile Picture

InnerSource. SPACE. DORA. DEVEX.

Query AGIC rules (service endpoints)

Query the data

 kubectl --kubeconfig ~/.kube/my-config get ingress --all-namespaces -o json > ingresses.json

Pretty Print

cat ingresses.json | jq -r '
.items[] |
{
  namespace: .metadata.namespace,
  name: .metadata.name,
  rules: .spec.rules[]
} |
"Ingress Name: \(.name),Host: \(.rules.host),Paths: \(.rules.http.paths[] | "Path: \(.path), Service Name: \(.backend.service.name), Service Port: \(.backend.service.port.number)")"'

InnerSource

What is InnerSource? Simplistically it's nothing more then when a company tries to do open-source but in a closed space.

3 minute video I found helpful

InnerSource is enabled by tools and processes, but it is also a change to the culture. The biggest change is allowing mistakes, talking about them, and learning from them.

alt text

DORA vs SPACE vs DEVEX

I found this really great analogy:

Linked

RACI Matrix

A RACI chart, also called a RACI matrix, is a type of responsibility assignment matrix (RAM) in project management. In practice, it’s a simple spreadsheet or table that lists all stakeholders on a project and their level involvement in each task, denoted with the letters R, A, C or I. Once these roles are defined, assignments can be attributed to the roles and work can begin.

R, A, C, I stands for:

Responsible Accountable Consulted Informed

Forbes Link

Team Topologies

1. Team Topologies Overview

Team Topologies, as described by Matthew Skelton and Manuel Pais in their book “Team Topologies,” focuses on optimizing team interactions and alignments with business goals. The core team types and interaction modes are key concepts in this framework.

2. Core Team Types

a. Stream-Aligned Teams

Definition: Teams aligned to a flow of work from a segment of the business domain. • Purpose: Delivering valuable increments of work to end-users continuously. • Example: A team dedicated to a specific product feature, such as the user onboarding process or payment gateway.

b. Enabling Teams

Definition: Teams that assist other teams to overcome obstacles and adopt new technologies or practices. • Purpose: Providing specialized knowledge and facilitating the adoption of best practices. • Example: A team focused on helping other teams implement CI/CD pipelines or adopt cloud technologies.

c. Complicated-Subsystem Teams

Definition: Teams responsible for building and maintaining complex subsystems that require specialized knowledge. • Purpose: Handling parts of the system that require deep expertise and cannot be easily managed by stream-aligned teams. • Example: A team dedicated to developing a high-performance database engine or a sophisticated machine learning model.

d. Platform Teams

Definition: Teams that build and maintain platforms used by other teams to deliver work. • Purpose: Providing self-service APIs, tools, and services to enable other teams to deliver software efficiently. • Example: A team managing the internal cloud infrastructure, CI/CD tools, or authentication services.

3. Interaction Modes

a. Collaboration

Description: Teams work together for a defined period to achieve a specific outcome. • Use Case: When multiple teams need to work together to deliver a complex feature that spans different domains.

b. X-as-a-Service

Description: One team provides a service that other teams can consume independently. • Use Case: Platform teams offering CI/CD pipelines as a service to stream-aligned teams.

c. Facilitating

Description: Enabling teams facilitate and assist other teams to overcome specific challenges. • Use Case: An enabling team helping a stream-aligned team adopt a new testing framework.

4. Common Practices for Organizing Delivery Teams

a. Define Clear Team Boundaries and Responsibilities

Clarity: Ensure each team has a clear mission and well-defined responsibilities to avoid overlaps and confusion. • Autonomy: Empower teams to make decisions within their domain to increase accountability and efficiency.

b. Optimize for Flow

Stream Alignment: Align teams to the flow of work that delivers value to customers. Avoid organizing teams around rigid component boundaries. • Value Streams: Identify and organize around value streams to ensure teams can deliver end-to-end features.

c. Promote Cross-Functional Collaboration

Skills Diversity: Ensure teams have the necessary skills to deliver complete solutions, including development, QA, UX, and operations. • Collaboration Tools: Use tools and practices that facilitate seamless communication and collaboration, such as agile boards, chat platforms, and video conferencing.

d. Facilitate Continuous Improvement

Feedback Loops: Establish regular feedback loops through retrospectives, reviews, and one-on-one meetings to identify areas for improvement. • Learning Culture: Encourage continuous learning and improvement by providing access to training, conferences, and knowledge-sharing sessions.

e. Balance Stability and Innovation

Stable Base: Maintain a stable platform and set of practices for the majority of the work while allowing for innovation and experimentation in a controlled manner. • Innovation Time: Allocate time for teams to explore new ideas and technologies that can drive future improvements.

5. Practical Implementation Tips

a. Start Small and Scale Gradually

• Pilot new team structures with a small group before scaling across the organization. • Gather feedback and adjust based on what works and what doesn’t.

b. Use Metrics to Guide Decisions

• Measure team performance using relevant metrics such as lead time, deployment frequency, and defect rates. • Use these metrics to identify bottlenecks and areas for improvement.

c. Encourage Ownership and Accountability

• Foster a sense of ownership by allowing teams to take full responsibility for their services or components. • Implement practices like DevOps where teams are responsible for both development and operations.

Conclusion Organizing delivery teams effectively requires a thoughtful approach that aligns with business goals and fosters collaboration, autonomy, and continuous improvement. By leveraging the principles of Team Topologies, organizations can create an environment where teams are empowered to deliver high-quality software efficiently and adapt to changing needs.

What to do if you blank in an interview?

It’s natural to occasionally lose your train of thought or feel flustered during an interview. Here’s a structured approach to handle such situations gracefully:

1. Pause and Take a Breath

Stay Calm: Take a deep breath to calm your nerves. It’s okay to take a moment to collect your thoughts. • Pause: Use a brief pause to compose yourself. This can also give the impression that you are considering your answer carefully.

2. Ask for Clarification

Clarify the Question: If you’re uncertain about the question, politely ask the interviewer to repeat or clarify it. This can give you additional time to think and ensure you’re addressing the right topic. • Example: “Could you please repeat the question? I want to make sure I address it correctly.”

3. Acknowledge and Redirect

Acknowledge the Pause: If you’ve forgotten your point mid-answer, acknowledge it briefly and redirect the conversation. • Example: “I apologize, I seem to have lost my train of thought. Let me start again.” • Restart or Pivot: Either restart your answer or pivot to a related point that you can speak about confidently.

4. Use Filler Phrases

Filler Phrases: Use phrases like “That’s a great question” or “Let me think about that for a moment” to buy yourself a few seconds to regain your composure. • Example: “That’s a great question. I think the key point here is…”

5. Summarize and Simplify

Summarize Your Key Points: If you’re struggling with a detailed response, summarize your key points and then expand on them. • Example: “In summary, my approach would focus on collaboration, continuous improvement, and leveraging best practices. To elaborate…”

6. Be Honest

Admit if You Don’t Know: If you genuinely don’t know the answer, it’s better to admit it than to fumble through an uncertain response. • Example: “I’m not sure about the exact details, but I would approach it by doing XYZ…”

7. Offer to Follow Up

Follow-Up: If applicable, offer to follow up with a more detailed answer after the interview. • Example: “I don’t have the exact information on hand, but I’d be happy to follow up with a detailed response after the interview.”