Chief Innovation Officer

As a seasoned professional in the tech industry, I’ve worn many hats over the years. My roots are in coding, with experience in C#, ASP.NET, and traditional web development (CSS, HTML, etc.) from over 20 years ago. This was before the rise of frameworks like React and Vue. Over the past two decades, I’ve focused more on leadership, architecture, and product roles, but I’ve continued to code over the years using python regularly for task automation but wouldn’t consider myself a developer. However, now that the AIs can generate code, that’s now changing.

The Importance of Coding Knowledge

First and foremost, it’s crucial to understand that using AI for coding isn’t a shortcut around learning to code. You need a solid foundation in programming to effectively leverage AI tools like Claude. This may change as AI evolves, but for now, coding knowledge is essential.

Database Design

One area where human expertise remains critical is database design. I’ve found that AI tools, including Claude, can struggle with database schema design. The databases created by AI are as simple as they can be. (This isn’t WRONG, it’s often good to start with a simpler design as an MVP and then add new features and fields over time, BUT as an experienced software designer, I already have a vision of the database schema needed to support the features I want to add.) As a developer, you MUST take charge of designing your database schema. This ensures that your data structure aligns with your project’s needs and follows best practices.

Choosing the Right Framework

The frameworks you choose for your project can make or break your development experience. I learned this lesson during my recent project, One Machina. As a technologist, I believe many modern frameworks have made development more complex, not simpler. I’m not a fan of platforms like React or Vue due to their fragility (the infamous React “white screen of death” comes to mind) and the difficulty they introduce in debugging.

Initially, I opted for Streamlit/Python, attracted by its simplicity and rapid development capabilities. However, as the project grew, I encountered significant limitations:

  1. Limited UI flexibility Lack of support for many HTML controls
  2. Restrictions on custom styling
  3. Inability to add simple features like button tooltips
  4. I found the rendering of python code to html to be non-intuitive and it didn’t really follow modern methods for calling apis to make updates. Everything was re-rendering and the app was slow with larger amounts of data.

To compound these issues, Claude’s knowledge of Streamlit was outdated, leading to suggestions of experimental methods that had been deprecated in recent versions.

After a lot of frustration, I decided to rebuild the project using FastAPI, Jinja2, and Tailwind.css. I also incorporated open-source platforms like DreamFactory for authentication and database access, which not only saved development time but also enhanced security by protecting against SQL injection and providing a secure application gateway.

Instead, I opted for simpler coding methods using Jinja, jQuery, HTMX, and FastAPI. These choices provide robustness while maintaining simplicity. I also use open-source platforms like DreamFactory for authentication and database access, which saves development time and enhances security. That said, I am a huge fan of front-end frameworks like Tailwind.css and Bootstrap. These have made it incredibly easy to generate beautiful and professional screens.

Maximizing Claude’s Potential

To get the best results from Claude, I’ve developed a structured approach:

  1. Create a Claude Project: This includes:
    • Core application code
    • Development standards
    • Instructions for Claude when generating code
    • Requests for Claude to include comments with filenames, paths, and modification instructions
    • Standards for error logging
  2. Provide Standard Code Examples: I create and share example files for various components, along with the schema. This gives Claude a clear reference point.
  3. Use Claude for Mockups: I leverage Claude to generate mockups based on schema designs, then provide the final design when requesting the actual code.
  4. Maintain Multiple Claude Instances: Due to the intensity of my usage, I’ve purchased two different Claude licenses. I run one instance in Chrome and another in Safari, with the project set up in both. This allows me to continue working even if I hit the credit limit on one account.
  5. Add Features Incrementally: I’ve learned to add one feature at a time. Asking for too much can confuse the AI, and there are limits to how much code it can generate in a single response.
  6. Regular Code Check-ins: I commit code regularly. Sometimes the AI misunderstands a request, and frequent check-ins make it easy to revert to a previous version and clarify the prompt to get the desired results.
  7. Code Review and Testing: I review the generated code to ensure it looks correct, then copy, paste, and test it. When I encounter errors, I provide the error code back to Claude for assistance.

The Results: Hyper-Productivity

Since implementing these changes to my workflow, my productivity has skyrocketed. I’ve been able to rapidly build out my own “Machina” – essentially, my personal AI assistant. The progress has been so encouraging that I’m planning to open-source this project.

Looking Ahead

If you’re intrigued by the potential of AI-assisted coding and want to stay updated on the launch of my open-source project or even contribute to it, I invite you to sign up using the form below:

In conclusion, while AI tools like Claude are powerful allies in coding, they’re not magic wands. Success lies in understanding their strengths and limitations, maintaining your coding skills, and developing workflows that leverage AI effectively while preserving human insight in critical areas. Happy coding!

Leave a Reply

Your email address will not be published. Required fields are marked *