As a developer with extensive experience in PHP over the years, as well as Python and other web technologies like HTML, JavaScript, and CSS, I’ve found Go to be an incredibly fascinating language compared to Kotlin/Java, C# and Node.JS (for example: small external dependencies for most use cases, cross platform compiling, concurrency). However, I’m still struggling to find practical use cases where Go truly shines for my needs.
When it comes to web backend development, PHP has been my go-to language for a long time. Not only does it power some of the largest CMS systems, but PHP has come a long way with the improvements in version 7 and especially 8.3, introducing features like the Just-in-Time compiler. Additionally, PHP is widely supported by most web hosts, making it extremely easy to integrate. Whether it’s running on shared web hosting, a VPS, or a dedicated cloud infrastructure, PHP scales dynamically, covering both small and large-scale use cases with ease. In contrast, deploying a Go-based web application often requires more advanced access to a server or at least a system where you have control over the runtime environment. A simple PHP script can often run on basic webspace, while Go needs a more tailored setup.
That’s not to say I haven’t tried to use Go in different scenarios. I recently attempted to develop a desktop application with Go to extract text from PDF files, process the data using AI, and classify it. However, I encountered significant challenges with Go’s ability to extract text from PDFs. Despite testing nearly all available libraries (for example GitHub - dslipak/pdf: PDF reader and GitHub - ledongthuc/pdf: PDF reader), none could handle the variety of PDFs I was working with. In the end, I had to rely on integrating an Apache Tika Java application with Go, which added unnecessary complexity, including a larger file size and the requirement to have Java installed on the system. While this solution worked, I would have preferred a more straightforward, pure-Go approach.
On a positive note, building the desktop UI with Go’s Fyne framework was relatively smooth and practical, so there’s definitely potential there. However, my original goal of building a fully functional desktop application with Go and local file processing (data privacy for end users and so I can deliver this program for free to end user) wasn’t as seamless as I had hoped.
Another area where I found Go less practical is working with JSON structures. With PHP and JavaScript, handling JSON data—especially when the structure isn’t always 100% predictable, such as when working with API responses—feels much easier. Both languages are highly flexible when dealing with dynamic or partially defined structures. In comparison, working with JSON in Go feels a bit more rigid and cumbersome, particularly when the API responses don’t always perfectly match your predefined structures. I also noticed that when OpenAI introduced the new structured JSON format, the Python library implemented support for it several weeks before the Go libraries caught up. This highlights how, in some cases, Go’s ecosystem can lag behind more established languages like Python or JavaScript.
When it comes to system administration tasks, I usually opt for Python or shell scripts. The reason is simple: Python scripts typically come with most of the functionality I need baked in, without requiring additional project files or complex setups. You just write the script, run it, and it works. Plus, Python is easy to edit and doesn’t require compilation, which is perfect for tasks like log file analysis, updating staging systems and so one. Here, Go’s compiled nature doesn’t feel as natural. I’d rather have a simple, editable script that doesn’t need multiple files or a complex build process. Go, while powerful, doesn’t offer that same level of simplicity for these quick, iterative tasks.
So far, I’ve explored Go in web backends, desktop applications, and sysadmin scripting, but I haven’t found a case where Go has stood out as the superior choice. Whether it’s due to the immaturity of certain libraries or the language’s paradigm not aligning well with certain tasks, I keep encountering limitations. Despite my excitement to use Go more, I often find that PHP or Python end up being the more practical choice for most of my projects.
That brings me to my question: for those of you who use Go, what kinds of applications are you primarily building? If your use cases overlap with mine, I’d love to know why you chose Go over PHP or Python. Your insights could really help me figure out where Go fits best in my workflow and which projects might benefit from it.
Thanks for sharing your thoughts!