D4no0
So I went today on an interview for a golang position, and it turned from a technical interview to a cult joining, where he would portray golang as the messiah of the languages to develop APIs and I kid you not it was quite awkward to listen to all of that. The only words that would resonate with the interviewer would be benchmarks and performance and he was telling me that this is the only way to do innovation and they wouldn’t use any frameworks or abstraction libraries. As a reference for all of this their product doesn’t have any hard performance requirements to work optimally.
What do you think about this?
Where the balance between performance and development speed/cost gets shifted from one side to the other?
Are these perhaps just endearment of some senior developers who got bored at work?
Trending in Discussions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
al2o3cr
Piffle, everyone knows that REAL HARDCORE PROGRAMMERS only use machine code entered one bit at a time with a Morse code key, entered into a CPU that they made themselves with some sand and an Easy-Bake Oven!
pierrelegall
Or use a butterflies-based technique instead of the so-called morse-based technique.
D4no0
You laugh, but I start to question my sanity. I mean I knew that developers with 15+ years of experience are crazy, but I didn’t expect for it to be so bad
.
pierrelegall
Yea sorry, it’s a tricky question in fact and in another way, it’s easy to make a joke on this kind of speech. Moreover, I do not have 15+ years of experience, so they know a lot more than me obviously.
However it ticks me because at my last job, the next guideline was to use Go for new back-end developments, even if only few back-end developers had experience with the language. I didn’t see it as a game changer for us in despite of the internal speech.
Firstly, Go seems to be a good language. I don’t like it for the few I read and tried, but who cares? It can produced statically type checked executable with a build-in garbage collector (e.g. some techs see it as a good fit for AWS Lambda). It’s seems to be in my sense in-the-middle between Rust and Elixir: not safe as Rust but easier to master with similar efficiency (let’s say less than 2 times slower), and without the resilience (and the accidental pseudo infinite scalability) of Elixir but way faster per process and built-in concurrency patterns. But if you are looking for a the “chosen one language” because messing with many tools is a pain, it’s a choice to consider.
Secondly, I understand the “cult” you can have on a tool or tool set. I feel the same with Elixir, even if I do not consider myself advanced on this topic. I’m remembering right now moments where people look at me before I talk saying as a joke: “Elixir of course?”. In fact, I try to not answer this myself because I feel a lot of “I really want to use Elixir so I suppose I can’t be impartial to choose the right tool for the right job”.
It’s sometimes hard but we have to, as “software engineer”, to do our best to be pragmatic. A tech lead have to consider multiple parameters: the domain, the tech communities, the tool sets associated with languages, the internal team knowledge… Development speed and production costs can be estimated from this points. But we can add to the list your team wishes/believes is to take into account because it’s not false to say it’s a way to innovate and have fun at work (but not the only way of course). To put on the top the last one as main argument is a mistake.
A recommendation could be to come back to challenge them about their speech, e.g. what is your current and next hosting strategy, which languages did you consider before making this choice, and so why Go, what kind of problem does it solved for you, why a no framework strategy (I really do not understand the last one BTW)
D4no0
They already answered this, their hosting strategy is k8 and their services hold about 1k connections.
As far as he told me, they all come from java world, because my country is filled with java and c# developers.
They said that benchmarks showed them that this is the fastest language for request-response time. We had a lot of discussions on this forum about these benchmarks performance and my conclusion is that the lower level the library, the faster it performs, for example a library written in C used in python might outperform golang.
No idea either, I think this is related to the developer sickness you mentioned, because at the end of our conversation he started telling me that they follow solid principles and clean code principles and some other, witch was obviously that they are the kind of developers that care a lot about academical architecture and patterns, but once again if they are all seniors with a lot of experience, they might be efficient at a such approach.
kanishka
When I see SOLID on a job description, I usually stop from applying. My assumption is that the group has completely ignored FP and is enamored with OO when see SOLID noted.
D4no0
Let’s not be black and white about this, solid has it’s place and doesn’t apply to only classic OOP languages, even though every developer who has developed for at least 3 years is already using all these principles without even remembering them.
As for FP, I think the steep relearning of concepts keeps a lot of people away from those languages. Not to mention this talk that was started long ago that immutability is bad because it is inefficient and all the performance optimizations done it is just black magic that don’t work in 90% of cases.
As a funny story a few years ago when I was searching for an elixir job, I applied to a japanese company that stated: we don’t care about your resume, everybody has to complete a list of questions before the initial interview. One of the questions was about solid principles in elixir
, the other one was about
===in javascript, I trolled them a little with the responses and they declined me.dimitarvp
I think you should run away screaming.
On topic, I’ve made the mistake of prioritizing speed and “elegance” over features a few times in the last years, which tells me that I should probably gradually exit programming as a profession because I have no patience for the people who are all “features features features every day!” anymore. But more seriously, that also depends on the people and the team; sometimes people just don’t click.
As for your example, it seems these people are so relieved that they left Java that they now evangelize Golang. Sadly us the people are prone to being hyped up (another example is divorced people suddenly finding 50% of everyone they see attractive
).
You can’t call yourself “senior programmer” if you are prone to hype. I’ve made that mistake before and I am extremely ashamed to this day because even back then I thought of myself as a “senior” but then understood that I was only wishing I was. Took me some more years afterwards to start looking at things in better perspective. And nowadays I hesitate to call myself “senior programmer” at all. Maybe I am just senior (as in, aging).
Golang is quite a good language and has an excellent ecosystem. I’ll immediately agree with @pierrelegall that it’s the perfect middle ground between Elixir and Rust. But that being said, there is no shortage of problems it’s just a terrible fit for; like anything that requires sum types for example and no, their awful way of imitating them only creates more problems (topic for another time).
To me Golang is a much better Python. That’s it. Shouldn’t be a religion but for some reason people turn everything into a religion.
D4no0
Thanks for the detailed response!
I was lucky to begin my career at a small company (Lightcyphers) in my city, the owner is a professional coming from telecom industry with 20+ years of experience, having worked at big name companies like Nokia. He had zero tolerance for the BS coming from the IT industry. It taught me a lot of valuable lessons about what really is important and how perspective changes when you have limited resources to work with, and how throwing more money/people at something doesn’t solve the problem.
The sad thing about this is that you never know who you are going to work with until you actually start, maybe with time you make connections, however we are talking about tens of years (or maybe I’m antisocial).
These ranks were always a mystery for me, I mean I’ve seen people with twice my experience (10+ years) that worked all their life in only one technology and field, not having any soft skills and they would call themselves seniors, idk.
I can’t say about the ecosystem, maybe I didn’t have luck with what I was working or too spoiled by elixir ecosystem but I had to implement a lot of basic functionality from scratch at some point. As for abstraction level I totally agree.
Python excels at what it was designed at the beginning, to be a very accessible, batteries included language for beginners. At some point in time (most probably with the adoption of machine learning tools) it started to rise in popularity and extended out of it’s scopes, much like javascript.
imkleats
There’s a segment of Golang aficionados who ardently say “the standard library’s net/http package can already handle everything you need it to do”, and of the prominent frameworks, there are those that use standard-library-compatible request handler interfaces & those that don’t. The purist crowd seems to feel the former frameworks are unnecessary and the latter frameworks are an even bigger affront to their sensibilities. (Not an expert opinion, and mostly based on what I’ve seen stated in golang subreddit threads.)