27 ms·
@tschellenbach: congrats on your achievements! This is yet another Python success story. You created a viable product with Python and moved critical parts to
by Dowwie 9y ago
@tschellenbach: congrats on your achievements!
This is yet another Python success story. You created a viable product with Python and moved critical parts to Go when there was real need for doing so.
Considering Go has only been your primary language for 9 months, as the beginner's style code base is optimized for all that Go has to offer you'll continue to see more performance gains, albeit probably not as significant as you saw between v1 and v2. Good on you for not being tied down with optimizations and actually releasing.
"With Python we often found ourselves delegating logic to the database layer purely for performance reasons. " -- you mean you wrote postgres functions.. or.. views!? gasp! heresy! Why would you migrate something working perfectly well in postgres away to Go, though? You probably didn't achieve any performance gains with that. Were postgres functions really gobbling that much memory up? Or.. maybe my assumptions are wrong here.
- alehander42 9y agoI actually think that's not a "Python" or "Go" success story. It's a story of how both of them lack something significant: Python lacks speed and light memory usage, Go lacks dev speed and expresiveness. There is no reason why a single modern language can't combine them, and that would be much better than managing a codebase in two languages, so it's a success story of a useful compromise
- hkeide 9y agoThe article says they saw improved productivity after switching to Go, how does that point to Go lacking dev speed or expressiveness?
- alehander42 9y agoI am disagreeing with the parent's point. His point is that Python is better for prototyping which implies that in the beginning people can be quite more productive with it.
- dilap 9y agopersonal experience, as someone who's written a lot of python in the past and writes a lot of go now: go is more productive for me than python.
- alehander42 9y agomeh, it depends on the problem domain. it's quite nice for its niche, but I don't like it for general use
- Xeoncross 9y agoI picked up python and Go at the same time. Go is much easier, logical, faster, uses less memory, and has common-sense stuff like unicode handling built-in. I only use Python for the same reason I use Java: all the NLP / ML frameworks built by people who don't know Go yet.
- alehander42 9y agoGo is nice for its niche, and it can be very cool after using Python. Still it feels too simplistic and limited as a language to me, which includes the "low level" part: it's not "optimally" fast and it's not very easy to interop with other languages
- weberc2 9y agoI write Python in my day job, and I also experience a velocity boost by using Go. It's easy like Python, but the tooling is better. I really find myself appreciating the static type system catching errors at compile time instead of runtime. And the performance improvements I've observed for the systems I've migrated to Go is 50-300X.
- tschellenbach 9y agoI wonder about this sometimes. Keen, Sendgrid, Stream all started out with Python and switched later on. Algolia started out in C++. In retrospect I think Algolia made a better choice by starting out with a fast language. Yes we saved some time getting the prototype of the ground. On the other hand it made performance optimization more difficult. Both are amazing languages. I think it makes sense to learn and use both. They complement each other very well.
- deleted 9y ago[deleted]
- runlevel1 9y ago> Keen, Sendgrid, Stream all started out with Python and switched later on. SendGrid engineer here. IIRC, each of the three founders wrote components in the language that they were most productive in at the time. So there were services in Python, Perl, or PHP depending on who wrote it. Seems like a solid strategy to take the fastest path to MVP when you're still trying to prove there's a market for what you're building. As the company grew, Python emerged as the most commonly chosen language for new projects. As you said, the initial appeal of Go was its performance. An occasional side-effect of "fast" is needing less hardware to do the same work, so its efficiency was also attractive. I think a key moment that got us interested in Go came at an internal hackathon. One of our engineers built a prototype replacement for a core piece of our MTA. It was something like 6x faster than the existing Python version. The ability to produce that in such a short period of time demonstrated that Go was also a surprisingly productive language. These days, most of our engineering teams choose Go for new backend services -- even those that aren't performance-sensitive. However, we still have a lot of active development in Python (and Ruby). Disclaimer: I've been at SendGrid about 4 years, so some of this is second-hand. I'll ask the founders if they're up for doing an article on our engineering blog about it.