Amazon Q from a Developer Lens
A developer’s journey is accompanied by skills that goes beyond coding. This post explains some possibilities of Amazon Q and how it fits into an ideal developer world.
Published Jan 22, 2024
Let’s start with a typical developer journey. The role involves both strategy and execution. From a strategic point, examples include product or feature ideation, design conversations, roadmaps, etc. From an execution point, examples include code development, bug fixing, backlog story completion, code releases etc. Most organizations have coding and deployment standards that accompany the lifecycle of a developer. This is where DevOps comes in to picture, where developers need to make sure the code is reusable, automated, standardized per organization requirements, deployable, versioned, and so on. Another aspect is code release and the frequency of the releases, and how the releases are co-ordinated and verified. Developers also tend to read documentation (a lot) which is not called out often. Now the question is, of all the time spent in these activities how can your Developers achieve maximum efficiency. Well, the answer is not simple. The amount of time spent on these activities (strategy vs execution) is debatable, and it varies according to the role levels and type of projects, and scope. Irrespective of this, the core function is how well and fast you execute. An analogy here would be, two participants from non-programming background compete to finish a programming task. One of the participants has no internet access and need to code in a text editor. The other has access to internet and all the modern developer tools. Now, who do you think is more likely to complete the task faster?
So we can all agree on one thing, ie, the power of developer tooling. Right tool for the job yields maximum efficiency. If you look at the landscape of widely adopt developer tools in the market today, some unique aspects are being developer friendly, ease of use, having automation capabilities and reducing cycle time. Once these tools are introduced into a developer’s world, developers build the habit of operating the tool everyday. In no time it becomes part of their daily activity. Let’s start with a simple question, how many browser tabs do you have open right now? Maybe more than what I think. If you dive in to this question a bit deeper, you will be able to understand the correlation where habit, convenience and practice converge. Ideally you may only need let’s say 5 browser tabs but 20 of those irrelevant tabs will stay forever in your browser until you do a laptop restart (highly unlikely occurrence). We acquired this habit over a period of time for convenience and by practice. The same words, Convenience and Practice are very much applicable to Amazon Q. I can also confidently say developers are equally familiar with their toolkits like their browser tabs. As Q becomes engrained in your everyday journey just like the other toolkits, the developer world will look much different.
- I asked Amazon Q an AWS question. Q answered the question, explained key things, and pointed me to the right sources. An interesting observation here is how Q went one step ahead to explain me how I can use the scenario in my existing code. Developers will find this extremely beneficial within the scope of their IDE. In the broader context this might look simple but imagine switching windows, reading the documentation, getting lost in your open tabs, chat conversations and coming back to the IDE. You would have lost track of the time and task in midst of finding an answer. We all have done it. So, it’s a great time saver to get an instant answer with sources to fact check. As per my observation, Amazon Q also raised the bar in answering AWS questions. To verify this further, I asked a question about a feature that was released in re:Invent 2023. And as expected Q gave me fantastic results.
- Imagine that you need to understand a piece of code written by a developer who recently left the organization. Sounds like you have done it before? If my guess is right, in most cases there wouldn't be a README file or a documentation that explains the code. Another scenario would be to understand a programming language that you are not familiar with. Imagine going through numerous developer forums, code samples, and learning paths to accomplish a simple task. This feature is the powerhouse of the service that explains the code flow in no time. You can also highlight a specific block of code and ask Q to explain it for you. To make this more useful, I also asked Q to write a README file for the highlighted code and it gave me an amazing script. Here you learn the code as well as improvise documentation.
The reason why these two scenarios fall under convenience is because they are tasks which are usually outbound otherwise outside the scope of the IDE. By bringing the convenience into your IDE, Q simplifies your everyday journey. Even if Q helps you save 40 minutes per day that would be 200 minutes for 5 days ie, 3 and half hours.
- Anyone heard of the term “pair programming”?, the technique where two developers collaborate on a code to achieve a common goal thus increasing efficiency and reducing delivery time. The value-add this technique provides is questionable for various reasons like matching pairs, complexity of the code etc. Although there is always a merit in human interactions to solve really complex problem, tools like Amazon Q should be viewed as an efficient pair programmer assisting you with a broad range of tasks. In a slightly different angle, how about Q being a great learning platform. Q provides a platform to learn hands-on through creation and explanation. Another viewpoint, I feel the most important one is how developers are not only pertained to a specific industry. How about a student trying to learn programming for the first time, a person with no programming background trying to accomplish a programming task, etc. All of them have one thing in common, i.e. their idea or the series of steps (logic) they want the program to perform. So, they put it down in writing (a prompt), and Q takes care of the completion. In other words, you still draw the flowchart but Q does the implementation although you have to explain your flowchart step by step to Q while prompting. So, code generation in general is going to foster coding amongst wide range of developers and non-developers across many industries.
- I took an example code and intentionally induced few errors, and with no surprise Q was able to fix the code instantly. How would a typical debugging journey look like for developers? You see an unknown error, search for the error, find relevant posts, iterate, and fix it. Again, a time-consuming journey where Q can come in handy. Highlight the code and prompt Q to fix the error, and see the output for yourself. It's all about practice. The more you interact and get used to prompting, it’s going to be a great plug and play tool.
So far, we have been talking from a perspective of local development. How about when the code gets deployed, now you have to create pull requests, merge, look at the deployment cycles, observe the metrics, etc. To know more about how Amazon Q is integrated with Amazon CodeCatalyst watch the “Accelerate DevOps with generative AI and Amazon CodeCatalyst” re:Invent’23 talk where the presenters explain about the art of the possibility from a CI/CD angle. An interesting feature you will notice in the talk is how you can create Issues and assign it to Q. It can be writing a README, adding an action to your workflow, or asking Q to install the dependencies. Amazon Q has many more capabilities that is not captured in this post, to read the details please visit Amazon Q homepage.
We are at a time where developers are well positioned to embrace AI services into their everyday journey. The amount of content that comes out every day from both research papers and applications/toolkits shows the pace of innovation in this dynamic field. Having a tool like Amazon Q in your toolkit is going to be a catalyst in your journey. And as mentioned in this post, Convenience and Practice are the keywords. I am confident that Amazon Q will be a great companion for everyday developer tasks, while you focus on the next big idea.
#BuildOn #AmazonQ