Are you a recent college graduate or someone transitioning into a tech career, striving to succeed in coding interviews focused on Python? Indeed, Python ranks among the most common and flexible programming languages in the tech world.
Perhaps you have explored various ways to study Python but find yourself feeling lost due to the multitude of learning methods and coding bootcamps available.
Moreover, with so many resources around, the top ones often require a subscription. However, imagine if there’s a method to use Generative AI as your guide to check your Python code based on industry practices. Excitingly, as of 2024, it’s FREE!
Before we dive into building our Python Code Checker software, let’s first understand the underlying technology infrastructure.
What is PartyRock?
PartyRock by Amazon Web Services (AWS) lets users design AI-driven solutions with Amazon Bedrock, where it offers Natural Language Processing (NLP) models from firms like Amazon, Anthropic, AI21 Labs, Cohere, Meta, Mistral AI, and Stability AI.
Here, coding skills are unnecessary – just good prompt engineering skills, which I will teach later in this blog.
Additionally, PartyRock also offers a platform where anyone may test and create AI applications using Amazon Bedrock’s powerful tools. Building AI solutions becomes accessible and easy for everyone.
At this time, you get the idea that PartyRock can create AI-driven solutions by just prompt engineering skills, finding the correct context for python code analysis depends on the resources that you will use for reference in your PartyRock prompting.
AI Code Checker Tools Comparison
(Why PartyRock stands out?)
For now, to have a better insight on how beneficial PartyRock as a Code Checker, let’s have a comparative analysis on some of the AI-powered code checker tools that assess Python code quality. For this blog, I conducted short research on the most popular AI Code Checker tools out there. The following are the most notable ones:
-
Amazon CloudGuru
Amazon CloudGuru is another developer coding assistant service from Amazon Web Services (AWS) that finds expensive lines of code in terms of memory consumption and time complexity. This helps them analyze the runtime behavior of their code, especially when deployed under AWS Console.
- Pros: Works well with code deployed in AWS services, easy to grow and provides insights on both code quality and speed.
- Cons: Mainly for AWS systems, limiting use for non-AWS tasks.
-
DeepSource
DeepSource is a modern static analysis, error finding, and code quality improvement recommendation system using AI. It is a platform that helps developer groups to systematically adhere to coding best practices.
- Pros: It supports several programming languages, simple integration with CI/CD pipelines, and gives insightful suggestions.
- Cons:Ā Some of its code assisting specialties may require a paid account.
-
Codacy
Codacy is another automatic source code analyzer which identifies potential issues especially during production deployment. Overall, it offers automatic code checks, style reviews and security analysis with AI.
- Pros: Can analyze code quality and security with several languages, customizable rules and detailed reports.
- Cons: Free version has few features, and the interface might confuse new users.
-
Snyk
SnykĀ is a security-based code quality checker which aims to assess code secureness before the next PR commit. It claims to be fast and accurate and produces fewer false positives, which increases the productivity of developers as they instantly remediate issues and build a more secure software.
- Pros:Focuses on security, fits well with development processes and provides actionable fixes.
- Cons:Focuses mainly on security, which may miss some code quality aspects.
-
TabNine
TabNine is an AI coding assistant which assists in producing higher quality software, given with its features such as code generation, code testing, and automated code review format customized for the engineering team. Hence, it is an AI code completion and suggestions to refine quality.
- Pros: Increases productivity with smart code completions, works with many IDEs.
- Cons: Centers more on code completion than on full code quality review.
- Pros: Increases productivity with smart code completions, works with many IDEs.
-
Python Code Checker with PartyRock by AWS (ours)
PartyRock by AWS, with regards to Python code analyzer, itĀ can detect how well a python code was crafted with respect to the code problem for better analysis.
It was generated using a Role, Instructions, Context, Constraints, and Examples (RICCE) Prompt Engineering Framework to specify the requirements during tech interviews.
Furthermore, considering the available Amazon Bedrock Foundational Models it can intelligently analyze the code quality and return insightful tips on how to improve code.
- Pros: Free of cost, highly customizable UX depending on the use-case, and give intelligent insights with its embedded Amazon Bedrock FMs.
- Cons:Ā Despite free of cost, there’s a limit usage for free trial, and it is only free for a limited time, although not stated when it will end.
- Pros: Free of cost, highly customizable UX depending on the use-case, and give intelligent insights with its embedded Amazon Bedrock FMs.
Comparative Analysis of AI Checker Software
Overall, I compiled all the observations that I noticed into this comparative analysis matrix below with respect to the common features that all AI Checker Software has.
As you can see, while PartyRock is available for a limited time, the advantages can be clearly seen, considering that it is a pure generative AI playground web app that you can customize to your specific use case, not only as a Python code analyzer, but you can add more features as long as it meets your requirements accurately.
For the sake of simplicity and usability, I only focused on the Python programming language for code analyzer, but you can also customize it so that you can add other programming languages such as Java, JavaScript, SQL, Docker syntax, and many more!
Again, it all depends on how you generate your prompts, as PartyRock by AWS heavily relies on the description of the application to be generated.
With that, let’s discuss next what are the features and topics you can integrate on your prompt before we delve in to our hands-on exercise.
This web-app is just an example based on the prompt that I created which I will give you on our hands-on exercise.
UI Components of our PartyRock-based Python Code Checker
The app is called “PythonCodingAI: Your Path to Polished Python Proficiency”Ā
-
- This application implements a single-page, minimalistic UI, to make it highly intuitive.
- The mechanics will only involve:
- Pasting the problem for context on the left widget.
- Pasting the source code on the right widget.
- Click the succeeding widgets to operate.
- When you open the web app, you can already use this on your end.
- You can access the PartyRock-based Python Code Checker app here.
The list below shows the description of the UI components of this web-app.
-
AI Code Reviewer Introduction
- Simply describes that is the web-app all about.
-
Code Problem Description
- This is where the user inputs the problem description for better context so that the AI can analyze the best approach for the problem given the mechanics as well.
-
Python Code Input
-
This is where the user inputs the python source code. It doesn’t have a feature yet for an IDE-based code input with line-indexing, but simply paste the code, and the AI can already analyze it.
-
-
Code Quality Analysis
- This contains the feedback based on your code problem and code input earlier. I will discuss the basis for analyzing the code quality later in this blog.
-
Big O Notation and Score
- This contains its overall feedback with respect to the guidelines defined in our prompt. It returns the estimated complexity notation with code quality score.
- After reading this, you can take note of it then adjust your coding structure again.
-
Reveal Cleaned Code
- This contains the revised code which follows the best practices mentioned in our prompt. Only use this to cross check your code afterwards.
Now that we have covered the main UI/UX components of our Generative AI-based Python Code Checker solution, let me now discuss the mechanics that I used during the creation of my AI-prompt in PartyRock of AWS.
Python Interview Topics Covered by the PartyRock app
When getting ready for a Python-based technical interview, the first step is to understand the criteria the hiring manager will use to evaluate the structure of your Python code.
Good coding practices are essential across all fundamental areas of Python, including basic syntax, object-oriented programming, and data structures and algorithms.
To guide your preparation, I researched these aspects and identified five key areas to focus on:
-
Code Readability
- Using coding as an art by making it readable. The code must follow a popular coding style called as PEP-8.
- It follows an indentation of 4 spaces, limiting the lines to 79 characters, and adhering to naming conventions for each python component.Ā
- Using a meaningful and clear naming convention enhances the readability and makes it easier for others, such as your colleagues, to understand.
- Consistent naming conventions are especially important during code interviews and in production environments, considering that your code remains understandable and maintainable.
- Using coding as an art by making it readable. The code must follow a popular coding style called as PEP-8.
-
Modularity and Maintainable Code Structure
- Writing an effective modular code by cascading down your programs into reusable functions and classes.
- Avoid developing a habit of writing code duplicates, as we ought to implement a Don’t Repeat Yourself (DRY) method.
- Maintain manageable variable scopes and limit the usage of global variables to avoid potential misuse or runtime conflicts.
- Overall, a modular code structure enhances maintainability, facilitates testing, and makes debugging more efficient.
-
Effective Documentation and Comments
- This includes effective usage of doc strings for modules, classes, and functions to explain their purpose, parameters, expected return values, and any exceptions as well.Ā
- Use comments sparingly to clarify ambiguous functionalities within your code.
- Having a good habit of effective documentation aids in understanding the code’s functionality for effective communication across the dev team.
-
Robust Error Handling and Testing
- Use error handling the correct way by strategically implementing your try-except blocks, catching specific exceptions, and handling errors gracefully.
- Study unit testing strategies, such as using a Python framework like Pytest to ensure each part of your code works as intended.
- Aall the non-functional requirements for a particular module are up and running.
-
Optimization and Best Practices
- Using the correct data structures for a particular problem.
- Analyzing the code complexity using Big O notation.
- Using Python libraries instead of doing everything from scratch.
- Strategically limiting mutable arguments during function definitions.
- Using Python virtual environments to avoid dependency conflicts with other projects.
- Using version control tools like Git and GitHub to back up your code.
Despite the fact that these guidelines are the basics for creating projects suitable for production deployment, many developers still lack the ability to adhere to these practices.
Hence, leveraging AI to help address these gaps will definitely help our applicants pass their tech interviews.
Let’s now proceed with the potential use-cases of our PartyRock-based Python Code Checker.
Use-cases and Applications of PartyRock-based Python Code CheckerĀ
-
Interview simulation practice
- You can utilize the application to practice yourself as if you’re currently on a tech interview, solving a tricky Python program problem.
- You can follow how the PartyRock app explains its code analysis with a grain of salt.
-
Real-time code review
- You can perform a real-time code review given a Python problem, to analyze the trick changes in the code, and find the correct answer using the PartyRock app.
-
Algorithm Optimization
- You can analyze on the next step what are your drawbacks while coding and try to enhance your code better.Ā
- Given that they only run the app with Generative AI, this is a low-risk environment for mistakes, which will help you reduce it during the tech interview.
Great job for going this far, now as a reward, I’m going to teach you how I created my own Generative AI web-app using PartyRock. This does not involve any coding, but a bit of a knowledge in Prompt Engineering, which I will teach later.
Hands-on Exercise: Getting Started with PartyRock
-
Setting up your PartyRock account using your email
- If you haven’t already, go to this link and create your account using any of your available email.
-
Create and Enhance your Prompt with RICCE Framework
-
What is Prompt Engineering?
Prompt Engineering is just the art of creating the sequence of your prompt that carefully guides the AI model to produce the outputs that accurately aligns with your needs.
It does not need a programming background, but only a structured emphasis on how you want the AI to produce the output you need.
Across several studies, there are frameworks used to establish well-engineered prompt needed by your AI model, one of it is RICCE framework.
-
What is the RICCE Framework?
According to this great article, which clearly explains the framework, the RICCE framework stands for the following:
-
Role (R) – specify the role you want the AI must act, for an instance, “You are a python code quality analyst”.
-
Instructions (I)Ā – clearly state what the AI must do, for an instance, “Analyze the code quality using the guidelines…”.
-
Context (C) – define the relevant supporting details for your AI model to use as a basis, for an instance, “The user is a python developer testing its code quality”.
-
Constraints (C) – set the boundaries that the AI model must NOT do, for an instance, “You are not allowed to be rude when the code is poorly written”.
-
Examples (E) – if possible, give examples for better response, for an instance “Example of response: Great job on your code, here are the points for improvement…”.
-
Our PartyRock Python Code Checker App
Below are the examples of my prompt, which follows the RICCE framework. Take note that during the actual prompt, you do not include the headings such as “Role (R):”, those are just placed so that you can have a context how I implemented the framework.
Role (R): " You are acting as an AI developer and Professional Quality Assurance analyst, creating a Generative AI solution that will improve the coding of Python Developers and foster their skills in technical interviews and production-level python programming. Instructions (I): Create a basic Generative AI-code reviewer for Python programming language which will help our developers improve their coding skills during technical interviews by implementing the best practices, clean coding, and efficient algorithm. The mechanics are as follows: 1. The user must enter the Python code problem on the left. 2. The user then enters the Python code on the right. 3. Add a widget below for code quality remarks. 4. If the user for analysis is ready, they press play. 5. The AI-code reviewer will analyze the efficiency of the Python code with regards to the code problem by assessing if it follows these criteria:" Context (C): " Simplified Criteria for Good Python Code Practices 1. Code Readability Description: Follow the PEP 8 style guide for Python, which includes using 4 spaces for indentation, limiting line lengths to 79 characters, and adhering to naming conventions for variables, functions, and classes. Use meaningful and descriptive names to make the code self-explanatory. Consistent formatting and clear naming enhance readability and make it easier for others to understand and maintain your code during interviews and in production environments. 2. Modular and Maintainable Code Structure Description: Write modular code by breaking down programs into reusable functions and classes. Avoid code duplication by adhering to the DRY (Don't Repeat Yourself) principle. Manage variable scopes effectively and limit the use of global variables to prevent unintended side effects. A modular code structure enhances maintainability, facilitates testing, and makes debugging more efficient. 3. Effective Documentation and Comments Description: Include docstrings for modules, classes, and functions to explain their purpose, parameters, return values, and any exceptions raised. Use comments sparingly to clarify complex or non-obvious parts of the code. Proper documentation aids in understanding the code's functionality and is crucial for collaboration, code reviews, and maintaining the codebase over time. 4. Robust Error Handling and Testing Description: Implement proper exception handling using try-except blocks, catching specific exceptions to handle errors gracefully without crashing the program. Write unit tests using frameworks like unittest or pytest to ensure each part of your code works as intended. Robust error handling and thorough testing are essential for creating reliable and resilient code suitable for production and demonstrate professionalism during code interviews. 5. Optimization and Best Practices Description: Optimize your code for performance by choosing appropriate data structures, using efficient algorithms, and leveraging Python's built-in functions and standard libraries. Avoid common pitfalls like using mutable default arguments in function d efinitions. Employ virtual environments for dependency management and use version control systems like Git for tracking changes. Following these best practices ensure your code is efficient, secure, and maintainable, which is vital for production-level applications. " 6. As a final output, the AI-code reviewer will give a concise yet insightful suggestions on how to improve the code and a percentage score as a final output. 7. Create a widget for Big O notation and Percentage Score based on how well they meet the criteria. 8. Add a widget to reveal cleaned code which will only trigger when play is clicked Constraints (C): Constrains: " - You are not allowed to give the revised code unless the user clicks "Reveal Cleaned Code" - You are not allowed to be rude if the code is poorly written. - If the Code Problem Description and the code does not match, stop the analysis and inform the user fix their input. - Do not add unnecessary information. - Do not add a chatbot widget." Examples (E): "(No indicated since it's optional) "
-
-
Customize the widgets depending on your needs.
- Expect that there will be AI output that are irrelevant, in PartyRock, you can just customize your app widgets by clicking “Edit” in the top right corner.
-
Final Remarks
It’s quite simple to do, right? By this far, you have already created an AWS Generative AI project, which you can add to your portfolio, in line with preparing for your tech interviews.
As you can see, I just used prompt engineering and PartyRock to create a simple yet useful solution. You can use this approach in Generative-AI based Hackathons if you’d like.
If you want to level up, you can use your Generative AI knowledge by taking the recently released AWS AI Practitioner exam. Do not worry about the exam difficulties since Tutorials Dojo got you covered!
- Tutorials Dojo offers a comprehensive overview blog for AIF-C01, which you can read it here.
- You can also buy their recently released AIF-C01 practice exam, which you can access here.
References:
Bonso, J. (2024, August 28). New AWS Certified AI Practitioner AIF-C01 BETA Exam Guide. Tutorials Dojo. https://tutorialsdojo.com/aws-certified-ai-practitioner-aif-c01-beta/
CoDacy – Code quality and Security for developers. (2024). https://www.codacy.com/
Code Review Tool – Amazon CodeGuru Security – AWS. (2024). Amazon Web Services, Inc. https://aws.amazon.com/codeguru/
DeepSource: The Code health platform. (2024). https://deepsource.com/
Patel, K. (2024, May 7). Mastering Prompt Engineering with the RICCE Framework. Medium. https://medium.com/@keyur.shubham2014/mastering-prompt-engineering-with-the-ricce-framework-9ab53fc45b2f
Snyk. (2024). Developer security | Snyk. https://snyk.io/
Tutorials Dojo. (2024, November 3). Home – Tutorials Dojo. https://portal.tutorialsdojo.com/
W3Schools.com. (2021). https://www.w3schools.com/python/gloss_python_function_recursion.asp