惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
V
Visual Studio Blog
罗磊的独立博客
Last Week in AI
Last Week in AI
爱范儿
爱范儿
The Cloudflare Blog
有赞技术团队
有赞技术团队
博客园 - 三生石上(FineUI控件)
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
IT之家
IT之家
博客园 - 【当耐特】
雷峰网
雷峰网
博客园_首页
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
量子位
V
V2EX

Ivan on Containers, Kubernetes, and Server-Side

A grounded take on agentic coding for production environments Server-Side Playgrounds Reimagined: Build, Boot, and Network Your Own Virtual Labs [not a] Kubernetes 101 - Pods, Deployments, and Services As an Attempt To Automate Age-Old Infra Patterns JavaScript or TypeScript? How To Benefit From the Dichotomy On Software Design... and Good Writing Building a Firecracker-Powered Course Platform To Learn Docker and Kubernetes How To Publish a Port of a Running Container What Actually Happens When You Publish a Container Port A Visual Guide to SSH Tunnels: Local and Remote Port Forwarding Debugging Containers Like a Pro Docker: How To Debug Distroless And Slim Containers How To Extract Container Image Filesystem Using Docker | iximiuz Labs In Pursuit of Better Container Images: Alpine, Distroless, Apko, Chisel, DockerSlim, oh my! Kubernetes Ephemeral Containers and kubectl debug Command How To Develop Kubernetes CLIs Like a Pro Docker Container Commands Explained: Understand, Don't Memorize | iximiuz Labs Learning Docker with Docker - Toying With DinD For Fun And Profit How To Extend Kubernetes API - Kubernetes vs. Django The Influence of Plumbing on Programming How To Call Kubernetes API from Go - Types and Common Machinery How To Call Kubernetes API using Simple HTTP Client Kubernetes API Basics - Resources, Kinds, and Objects OpenFaaS - Run Containerized Functions On Your Own Terms Learning Containers From The Bottom Up Docker Containers vs. Kubernetes Pods - Taking a Deeper Look | iximiuz Labs Learn-by-Doing Platforms for Dev, DevOps, and SRE Folks How HTTP Keep-Alive can cause TCP race condition How to Work with Container Images Using ctr | iximiuz Labs Multiple Containers, Same Port, no Reverse Proxy... Exploring Go net/http Package - On How Not To Set Socket Options
How To Start Programming In Go: Advice For Fellow DevOps ...
Ivan Velichko · 2022-06-01 · via Ivan on Containers, Kubernetes, and Server-Side

"How to start programming in Go and for Kubernetes?" - the question I often get from fellow DevOps people. This is a tricky one. And I don't have a universal answer to it. However, I do have some thoughts to share.

But first, let me tell you my own story.

In my case, it was rather an evolutionary step - I'd been developing software for almost 10 years by the time I started coding for Kubernetes. I'd also been (sporadically) using Go for some of my server-side projects since probably 2015. And around 2019, I started my transition to, first, SRE and, then, Platform Engineering. So, when I decided to get my hands dirty with Kubernetes controllers, it was just a matter of joining the right team and picking up the Kubernetes domain. Luckily, I had a good candidate on my radar, and that required just an internal transition from one team to another.

However, based on my observations, for many contemporary DevOps engineers, the direction of the desired transformation is often inverse. From Ops to Dev (preferably, for Ops).

Since your background and experience may vary, instead of giving a concrete piece of advice here, I'll try to explain how I'd approach the problem given different levels of proficiency with the technologies.

Level up your server-side game — join 20,000 engineers getting insightful learning materials straight to their inbox.

In my opinion, "starting programming", "starting programming in Go", and "starting programming Kubernetes controllers in Go" are there different challenges with the exponentially increasing level of complexity.

Thus, for someone with little to no prior programming experience, it's impractical to try starting coding for Kubernetes right away. Well, again, IMO, of course, but I've seen enough examples when (very capable) people were losing motivation quickly due to the overly steep learning curve of such exercise. We usually can learn one (complex) thing at a time, and having difficulties with three domains simultaneously reduces the chances for success drastically.

But even if we become slightly more realistic and (temporary) remove Kubernetes from the equation, Go might not be the best choice for the first programing language. It's definitely not the worst one - I started my journey with C/C++ 😢 But there might be much simpler options like Python. Since high-level programming skills are universal, one can learn how to do loops and ifs, how to decompose functions, and how to structure and test code without worrying about things like passing variables by pointers or by values.

At the same time, if you're already an experienced programmer but just lack the Go skills, things are simpler for you - just spend a week or two toying with the language or do a little project in it. But avoid Kubernetes libraries! It's a whole new world, and not all of them use idiomatic Go!

And only when you're (more or less) fluent in Go it's a good time to start pickup up Kubernetes-related projects.

Phew, I said it! 😌

It's a long journey, and there are no shortcuts (but there might be plenty of detour). Take your time and enjoy it! Teach yourself programming in ten years.

Addendum

Speaking about learning something in general, I've never been a fan of courses or books. For me, learning must be practical - I choose (or invent) a project and try to figure out how it can be done. That's how I acquire the initial skills. And then I just go over the knowledge gaps I think I have after hacking on that project and read up on them. Or start another project if a particular knowledge gap is too big. It's fractals all the way down. But remember the "learning too many new things at a time" problem - usually, you should be choosing a project to either learn a new language (hence, you already should know how to do the business logic part) or to learn the new domain (hence, the project should be in a language that you've already mastered).

Good luck!

Level up your server-side game — join 20,000 engineers getting insightful learning materials straight to their inbox: