Presenters

Source

Tracing Bullets & AI: Navigating Software Development in the Modern Era 🚀

Hey everyone! 👋 Welcome to a journey through the fascinating world of software development. I’m Arena Kamalova, a XROL and BAT software engineer, currently a VP Software Engineer at JP Morgan Chase, and a passionate advocate for women in tech. Today, we’re diving into three distinct development approaches and exploring how AI fits into each. Let’s get started!

The Three Pillars of Development 🛠️

I’m going to break down software development into three categories: Traditional, Prototyping, and Tracing Bullet. Think of them as different tools in your toolbox, each suited for specific situations.

  • Traditional Development: This is your classic, straightforward approach. Think waterfall models - clear requirements, established best practices, and a well-defined path to completion. It’s the “repeat what works” strategy. You’re building on a solid foundation, leveraging existing tools and processes. Think of it as refining an existing product.
    • Key Traits: Clear requirements, established CI/CD pipelines, focus on stability and predictability.
    • AI’s Role: Use AI cautiously. While tools like GitHub Copilot can help with testing, you risk teaching your AI tools incorrect coding practices if the context isn’t already well-defined.
  • Prototyping: This is all about rapid experimentation. You’re testing an idea, validating assumptions, and quickly iterating. Clean code isn’t the priority – getting feedback is. It’s perfect for AB testing, exploring new features, or launching a minimal viable product (MVP).
    • Key Traits: Rapid iteration, willingness to throw away code, focus on validation.
    • AI’s Role: Embrace it! This is your playground for experimenting with generative AI and code tools. Don’t worry about best practices; just get something working and gather data.
  • Tracing Bullet Development: This is where things get interesting. It’s a balanced approach, combining the stability of traditional development with the agility of prototyping. The concept, inspired by “The Pragmatic Programmer,” is simple: fire, then aim. Start coding before you have all the answers. Ship early and often, gathering feedback and refining your approach along the way.
    • Key Traits: Iterative development, willingness to adapt, focus on learning and validation.
    • AI’s Role: It depends. If you’re far from your target, AI can be helpful for exploring new approaches. But if you already have a solid foundation, it might be more trouble than it’s worth.

Answering the Big Questions 🎯

Regardless of your chosen development approach, there are three crucial questions to address:

  1. When to start?
  2. When to stop?
  3. How to do it?

Traditional development has clear answers: start when requirements are defined, stop when the project is complete, and follow established processes. Prototyping is more flexible – start when you have an idea, stop when you’re ready to either build or scrap it, and experiment freely. Tracing bullet development requires a bit more foresight - you need to define a target and a framework for adapting as you go.

AI: A Powerful Tool, But Use it Wisely ✨

Let’s revisit how AI fits into each of these approaches:

  • Traditional: AI can assist with repetitive tasks, like generating tests, but be mindful of potentially reinforcing incorrect coding practices.
  • Prototyping: This is where AI truly shines! Experiment with generative AI tools to rapidly explore different concepts.
  • Tracing Bullet: AI’s value depends on how far you are from your target. If you’re already on a good track, AI might just slow you down.

Key Takeaways & Final Thoughts 🌐

Software development isn’t a one-size-fits-all endeavor. Understanding the nuances of traditional, prototyping, and tracing bullet development – and knowing how to leverage AI effectively within each – is key to building successful products.

  • Embrace experimentation: Don’t be afraid to try new things!
  • Prioritize learning: Every project is an opportunity to grow.
  • Use AI strategically: It’s a powerful tool, but use it wisely.

Thanks for joining me on this journey! I hope you’re inspired to embrace these approaches in your own software development endeavors. Feel free to reach out if you have any questions. Happy coding! 💾

Appendix