I’ve got a few things in today’s issue about developer productivity. There’s nuance here that sometimes get left out, and I’m glad we’re starting to explore what it means to measure people versus teams. I may write something about it myself.
[blog] 2023 State of DevOps Report: Culture is everything. Wow, this year’s report is truly outstanding and it’s full of more details than any edition prior. Download it now to get insights into high performing teams.
[article] 6 ways automation makes things worse. Yes, automated things are always better. Here some examples of places where automation may yield undesirable results.
[blog] 10 IT Jobs to Consider: AI-Proofing Your Career. I don’t think any job is “AI proof” if this means that AI can’t do key parts of the role. But, there are definitely functions of many roles that benefit from human brains!
[blog] The convenience of System.Text.Json. You’re a particular type of person if you geek out on JSON processing in .NET. If you are that person, hello, and read this.
[blog] McKinsey Developer Productivity Review. What did McKinsey get wrong in their evaluation of dev productivity? Dan digs into it and points out a pair of fundamental flaws in the analysis.
[article] 4 Ways to Make Work More Meaningful. These four practices for a greater sense of meaning at work can apply whether you sling code or hash browns.
##
Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:
Another wild and wacky day, but who wants work to be boring? Not this guy. Maybe slightly more boring. Check out some of the items I read today that were focused on leadership and architecture. Some good ones in there!
[blog] Cloud Spanner — Table Interleaving use cases. What are the implications of physically co-locating child records with parent records in a Spanner database table? This post takes a look.
##
Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:
Today was one of those days where I had to remind myself that what I do, isn’t who I am. While I throughly enjoy my job, it doesn’t define me! It’s too easy to get lost in your work and postpone the things that really matter.
[docs] Best practices for running batch workloads on GKE. We can write poems about the wonders of real-time data processing, but a LOT of the world runs on batch jobs. This new article in the Google Cloud docs is solid.
[article] Do you really need both cloud architects and engineers? You need the functions, at least. You may ask engineering leaders to be architects (versus having distinct roles), but architecture has never been more important in IT.
[article] More companies are ramping up generative AI pilots. I’ll take “headlines I’m not surprised about, for $1000, Alex.” In just six months, you have nearly triple the number of pilots and double the production deployments.
Eleanor Roosevelt once said “Learn from the mistakes of others. You can’t live long enough to make them all yourself.” I enjoy reading incident reports and stories of how folks solved tricky problems. You’ll find two such pieces in the list below.
[blog] Incident Review: What Comes Up Must First Go Down. What happens when you do all the right things, and that somehow contributes to an incident? The crew at Honeycomb wrote up a very good incident report that explains it.
[blog] Serverless phpIPAM on Cloud Run. Serverless functions are a terrific mechanism for connecting managed services together. It’s not often the right choice for code-heavy apps or complete software packages. Here’s a case of running a software product on our container-based serverless platform.
[blog] Lessons from debugging a tricky direct memory leak. It’s probably not fun in the heat of the moment, but good tech teams kinda enjoy the exploration of system problems and uncovering the root cause.
[blog] State of Local Development and Testing 2023. Survey data that likely skews more indie dev or small/midsize company (versus enterprise), but still useful for observing trends.
Hopefully you learned something new this week. If not, find an item or two below that scratches that itch, even if it’s not a topic area you usually study. Have a great weekend!
[blog] The Written Word. Terrific little post about the art of writing well. It takes practice, and most of us aren’t practicing enough!
[article] A crisis of spending and cloud-based GenAI. Companies are spending on AI, but where is the money coming from? This article says it’s coming from redirecting existing spend, which has implications.
Public cloud is awesome, full stop. In 2023, it’s easy to take for granted that you can spin up infrastructure in dozens of countries in mere minutes, deploy databases that handle almost limitless scale, and access brain-melting AI capabilities with zero setup. The last decade has seen an explosion of new cloud services and capabilities that make nearly anything possible.
But with all this new power comes new complexity. A hyperscale cloud now offers 200+ services and it can often feel like you have to know everything to get anything done. Cloud needs a new interface, and I think AI is a big part of it. Last month, Google Cloud triggered a shift in the cloud market with Duet AI (in preview) that I expect everyone else to try and follow. At least I hope so! Everything else feels very dated all of a sudden. AI will make it fun to use cloud again, whether you’re a developer, ops person, data expert, or security pro. I’ve been using this Google Cloud AI interface for months now, and I’ll never look at cloud the same way again. Here are six ways that an AI-assisted Google Cloud has already helped me do better work.
1. I get started faster and stay in a flow-state longer because of inline AI-powered assistance
Many of us spend a big portion of our day looking through online assets or internal knowledge repos for answers to our questions. Whether it’s “what is [technology X]?”, or “how do I write Java code that does [Y]?”, it’s not hard to spend hours a day context-switching between data sources.
Duet AI in Google Cloud helps me resist most of these distracting journeys through the Internet and helps me stay in the zone longer. How?
First, the code assistance for developers in the IDE is helpful. I don’t code often enough to remember everything anymore, so instead of searching for the right syntax to use Java streams to find a record in a list, I can write a prompt comment and get back the right Java code without leaving my IDE.
And for declarative formats that I never remember the syntax of (Terraform scripts, Kubernetes YAML), this in-place generation gives me something useful to start with.
The coding assistance (code generation, and test generation) is great. But what really keeps me in a flow state is the inline chat within my IDE. Maybe I want to figure out which of the two major container services in Google Cloud I should use. And then after I choose one, how to walk through a deployment. Instead of jumping out to a browser and spending all sorts of time finding the answer, I’m doing it right where I work.
But life doesn’t just happen in the IDE. As I’m learning new products or managing existing apps, I might be using the UI provided by my cloud provider. The Google Cloud Console is a clean interface, and we’ve embedded our AI-based chat agent into every page.
I might want to learn about service accounts, and then figure out how to add permissions to an existing one. It’s so great to not have to fumble around, but rather, have a “Google expert” always sitting in the sidebar.
The same inline context sits in a variety of cloud services, such as BigQuery. Instead of jumping out of the Console to figure out complex query syntax, I can use natural language to ask for what I want, Duet AI infers the table schema, and generates a valid query.
I find that I’m finishing tasks faster, and not getting distracted as easily.
2. I’m saving time when helpful suggestions turn into direct action
Information is nice, actionable information is even better.
I showed above that the coding assistant gives me code or YAML. From within the IDE chat, I can do something like ask “how do I write to the console in a Java app” and take the resulting code and immediately inject it into the code file by clicking a button. That’s a nice feature.
And in the Cloud Console, the chat sidebar offers multiple action items for any generated scripts. I can copy any code or script to the clipboard, but I can also run the command directly in the embedded Cloud Shell. How cool is that? What a quick way to turn a suggestion into action.
3. I’m doing less context-switching because of consistent assistance across many stages of the software lifecycle
This relates to the entirety of Google’s AI investment where I might use Google Search, Bard, Workspace, and Cloud to get my work done.
Bard can help me brainstorm ideas or do basic research before dumping the results into requirement spec in Google Docs.
I may sketch out my initial architecture in our free and fun Architecture Diagramming Tool and then ask Bard to find resilience or security flaws in my design.
Then I can use Duet AI in Google Cloud to code up the application components, introduce tests, and help me set up my CI/CD pipeline. From design, to development, to ops, I’m getting AI assistance in a single platform without bouncing around too much. Not bad!
4. I’m building better the first time because I get recommended best practices as I go along
Sometimes our “starter” code makes its way to production, right? But what if it was easier to apply best practices earlier in the process?
We trained Duet AI in Google Cloud on millions of pages of quality Google Cloud docs and thousands of expert-written code samples, and this helps us return smart suggestions early in your development process.
When I ask for something like “code to pull message from a Google Cloud Pub/Sub subscription” I want quality code back that works at scale. Sure enough, I got back code that looks very similar to what a dev would find by hunting through our great documentation.
With effective model prompting, I can get back good architectural, code, and operational insights so that I build it right the first time.
5. I’m analyzing situations faster because of human-readable summaries of low-level details
I’m excited to see the start of more personalized and real-time insights powered by AI. Let’s take two examples.
First, our Security Command Center will show me real-time AI-generated summaries of “findings” for a given threat or vulnerability. I like these more human readable, contextual write-ups that help me make sense of the security issue. Great use of generative AI here.
Another case is Duet AI integration with Cloud Logging. Log entries have a “explain this log entry” button which asks the integrated Chat experience to summarize the log and make it more digestible.
I’d like to see a lot more of this sort of thing!
6. I’m not locked out of doing things on my own or customizing my experience
There aren’t any tradeoffs here. In past platforms I’ve used, we traded convenience for flexibility. That was a hallmark of PaaS environments: use an efficient abstraction in exchange for robust customization. You got helpful guardrails, but were limited what you could do. Not here. AI is making the cloud easier, but not keeping you from doing anything yourself. And if you want to build out your own AI services and experiences, we offer some of the world’s best infrastructure (TPUs, FTW) and an unparalleled AI platform in Vertex AI. Use our Codey model yourself, mess with your favorite open models, and more. AI is here to help, not force you into a box.
The Google Cloud folks have this new marketing slogan plastered on buildings and billboards all over the place. Have you seen it? I took this picture in San Francisco:
Don’t dismiss it as one of the usual hype-y statements from vendors. Things have changed. The “boomer clouds” have to evolve quickly with AI assistance or they’ll disappoint you with a legacy-style interface. Fun times ahead!
We’ve finished a week of promo reviews this week at Google. It causes my imposter syndrome to flare up, as I’m surrounded by people doing tremendous work and are more talented than I am. But, that’s a great motivator to keep learning and growing. There are a few pieces below that taught me new things today.
[blog] Working at a Startup vs in Big Tech. There’s a difference, no doubt. I’ve done 3-ish startups, and a couple Big Tech places. Your experience doesn’t just depend on company size; it relates to your role, stage of career, and the specific company.
##
Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:
Today is Google’s 25th birthday. I’m old enough to be its dad! Check out a few links related to that (the birthday, not my fathering of an internet company), as well as some terrific tech content.
[blog] Google at 25: By the numbers. Fun set of insights using different numbers to represent the significant impact that Google has on the world.
[site] ThoughtWorks Radar Volume 29. I always look forward to these updates. This explores the techniques, tools, platforms, and languages that you should adopt, consider, or hold.
[blog] MySQL High Availability. Flipkart does a lot of MySQL, and built a home-grown solution to manage the high availability of their clusters.
[docs] Optimize costs with FinOps hub. Will clouds pay lip service to cost management assistance, and then make it hard to optimize? I hope not! Our new FinOps dashboard seems helpful.
It’s probably just me, but it feels like the technology introduction/adoption cycle is speeding up. More new platforms and tech, faster growth. it’s exciting, but I’m not sure how most folks are keeping up.
[article] Tech Works: When Should Engineers Use Generative AI? Good piece. Be aware of what you’re doing. But I do suspect that many of these underlying concerns about generative AI results will (a) fade as products improve and (b) not matter as the value outweighs the cost.
[youtube-video] Cloud Functions local debugging. It used to be tough to build and debug serverless functions anywhere but in the cloud. Not any more. Local dev and debugging is easier now.
[blog] Creating kids stories with Generative AI. Here’s a good use of AI! Generate bed time stories. We’re probably only a step or two away from generating mission statements, annual goals, and quarterly reports.
[blog] The Tech Marketer’s Problem. Everyone has an angle. Hey, me included. Coté suggests you be aware of that, but also don’t dismiss the angle outright.
Today’s my birthday, and I enjoyed a productive day at work, and hopefully, I’ll have a fun evening with the family. It’s a gift to take another lap around the sun, and I try to keep perspective of what’s really important in life!
[blog] Navigate The Seas Of Developer Experience. I’m seeing a volume increase from the big analyst firms on the topic of developer experience. Which means enterprises are hearing the same thing. Forrester did some good work exploring the various stakeholders of dev ex.
[blog] A Behind-the-Scenes Look at Chaos Testing. How do you know if your event-driven system can handle failure? This post from Yugabyte offers up a good list of server-side and client-side chaos scenarios to test a change data capture process.
[article] 5 Types of Stories Leaders Need to Tell. Storytelling isn’t natural for everyone, and can feel like “fluff” that gets in the way of explaining what needs to be done. But if you notice that folks don’t follow your lead, it may be because you haven’t painted the picture to move them.
[article] From Cloud-Hosted to Cloud-Native. Using cloud services as hosted versions of on-prem software rarely makes anyone happy. This talk and transcript looks at moving to a more modern architecture.
[blog] BYO Service Mesh on GKE Autopilot. There’s always a tug between fully-managed products and the desire for low-level configurations. Somehow, GKE Autopilot made this possible for Kubernetes in a useful way.
[article] Why Is It So Hard to Leave a Bad Job? I like my job, but we’ve all been in a place where we wanted to make a change. These are good reasons, and mitigation for concerns, for switching.
##
Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below: