The future of AI in software development | Inbal Shani (CPO of GitHub)

Dec 1, 2023 50m 3s 25 insights Episode Page ↗
Inbal Shani, Chief Product Officer at GitHub, discusses the future of software development with AI, focusing on Copilot's impact, common mistakes companies make, and the importance of developer happiness and testing. She also shares insights on GitHub's design philosophy and leadership.
Actionable Insights

1. Junior Devs: Learn Systems Early

If you’re a junior developer using AI assistants for code writing, dedicate more time from the start to understanding the overall system, environment, and product you’re building. This allows for a deeper understanding that was previously hindered by the need to learn basic coding.

2. Problem-First AI Adoption

Approach AI adoption by first identifying a customer problem and then determining how AI can best solve it, rather than seeking ways to simply ‘do something with AI.’ This ensures AI is used effectively to address real needs.

3. Leverage AI for Comprehensive Testing

Actively explore and implement AI-driven testing across all types (unit, integration, load, security, performance) in software development. This is critical because AI will generate more code, making thorough validation essential.

4. Retain Staff with AI Tools

Do not reduce engineering staff when adopting AI tools like Copilot, as a human must remain in the loop. Instead, use AI to give developers time back, fostering productivity, happiness, and innovation.

5. Boost Dev Happiness & Innovation

Leverage AI to free up developer time, even just 30 minutes daily, allowing them to write more code, prevent burnout, and dedicate more time to collaboration and creative thinking. This sparks innovation and increases retention.

6. Implement AI Change Management

When adopting AI, invest time in a structured change management process across the company, rather than expecting magical adoption. This ensures successful integration and buy-in from all teams.

7. Design AI for Intuitive Use

Design AI tools with a developer-centric philosophy, prioritizing seamless, intuitive integration and minimal friction. This ensures developers will readily adopt and successfully use the tools without added complexity.

8. Measure AI Impact by Time-to-Value

When evaluating AI tools, focus on ’time to value’ (how long until full potential/value is realized) rather than just time saved. This connects AI’s impact on developer productivity and happiness to business outcomes like revenue, adoption, or time to market.

9. Normalize AI Integration

Developers should proactively learn how to integrate and use AI tools as a standard part of their workflow. This will become a customary skill, shifting thinking from early on in their development.

10. Optimize Hardware for AI Scale

Focus on improving hardware (CPUs, GPUs, compute) and optimizing code to meet the resource demands and scale requirements of AI. This is crucial for supporting the growing use of AI in software development.

11. AI as a Collaboration Tool

Leverage AI to improve collaboration and clarify communication, especially when articulating ideas or design sketches. This can significantly shorten feedback cycles and align diverse teams by acting as a universal translator.

12. Personalize AI Tool Adoption

Customize your use of AI tools to align with your personal preferences, using AI for tasks you enjoy less (e.g., writing tests) while retaining manual control over tasks you find fulfilling (e.g., specific coding functions). There’s no single ‘right’ way to use AI; adapt it to enhance your happiness and productivity.

13. Plan for Hybrid AI Models

Prepare for a future where specific, niche AI models coexist with generalized generative AI, recognizing that specialized problems (e.g., high-safety systems) will still require custom-trained models due to generative AI’s limitations.

14. Foster Innovation & Experimentation

Dedicate bandwidth and time for teams to innovate and experiment, accepting that not all experiments will succeed. Embrace a ‘ship to learn’ or ‘fail forward’ philosophy to continuously drive progress and new ideas.

15. Gather Customer Innovation Ideas

Actively engage with customers and your community to understand their frustrations, desires, and innovative ideas. This direct feedback loop is crucial for shaping future product development and identifying next-generation use cases.

16. Fund & Pilot Pitched Ideas

Establish a process for teams to pitch new ideas, backed by research, and then strategically fund and allocate resources for Proof of Concepts (POCs) or dedicated V-teams. This provides a structured path for promising innovations to be explored.

17. Bridge Research to Production

Ensure research and innovation teams (like GitHub Next) are tightly integrated with product and engineering, focusing on how ideas can transition to production from day one. This prevents research from becoming isolated and ensures real-world impact.

18. Protect Research from Tactical Work

Safeguard research and innovation teams from being overloaded with immediate, tactical demands that belong to core engineering or product teams. Their role is to invent the future (3-5 year horizon), not solve short-term problems.

19. Internal Dogfooding for Quality

Ensure your internal teams are the first to extensively test every feature and capability being developed. If your own teams cannot successfully use the tools, your customers likely won’t either, ensuring higher quality before shipment.

20. Develop Broad CPO Skills

Aspiring Chief Product Officers should cultivate a broad skillset beyond just product management, including business acumen, go-to-market strategy, sales understanding, and engineering processes. This holistic view is crucial for effectively leading product development.

21. Think System-Wide Solutions

When solving a problem, always consider its connection to the larger system and how it integrates with other components, rather than focusing solely on your immediate task. This ensures a comprehensive and effective solution from the outset.

22. Master Influential Leadership

As a product manager or leader, prioritize developing strong influential skills to guide engineering, revenue, and other teams towards your product vision. Success often hinges on influencing others rather than direct authority.

23. Learn from All Team Levels

Actively seek to learn from leaders above you, peers across your organization, and those you manage, identifying skills to adopt or behaviors to avoid. This broad perspective enriches your leadership toolbox.

24. Communicate ‘Why’ for Change

When driving change, slow down and clearly explain the ‘why’ behind the proposed changes to your team. People need to understand the problem and rationale to be on board, as not everyone embraces change at the same pace or with the same mindset.

25. Embrace Discomfort, Take Risks

Actively seek out discomfort and take calculated risks to stretch yourself and drive future innovation. Staying too comfortable can hinder personal and professional growth.