Junior developer, should I learn go?

blov · · 150 次点击    
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
<p>Hey everyone, great community first of all. Creating this thread to ask a career question (sorry if it sounds like a stupid question). </p> <p>I&#39;m currently a junior developer that knows a bit of python and javascript (I use node + jquery/react at work). Go is on my list of languages to learn but I don&#39;t know whether or not it would be advisable for me to learn it right now. Firstly, I&#39;m not that great at any language and I feel like i keep succumbing to the problem of switching languages without actually learning one language in depth enough. I&#39;m also leaving this job in 3 months to look for another job and node + rails/python are used a lot in the city I&#39;m from whereas go isn&#39;t at the moment (I could just spend this time learning even more node/python). Would it still be worth it to learn go? The reasons I do want to learn go however is: </p> <p>a) people love it b) I feel like because I&#39;m such a junior developer, almost anything I learn will be beneficial and a lot of the tutorials that I&#39;ve seen on go require you to create things from scratch which makes it a good learning experience c) I created an app with 2 other guys and we want to continue to work on that when I leave my job. I wrote the entire backend in node but I&#39;ve been putting off working on it because one of the key features is super buggy. Now, i don&#39;t know if thats because I&#39;m not a great developer but nodes callbacks make it a pain. Promises do make what I&#39;m doing better but I want to see if I can avoid them all together. </p> <p>Thanks</p> <hr/>**评论:**<br/><br/>LadyDascalie: <pre><blockquote> <p>I&#39;m not that great at any language and I feel like i keep succumbing to the problem of switching languages without actually learning one language in depth enough.</p> </blockquote> <p>I thought so as well when I was a beginner, but that&#39;s only because I had no clear picture of which language I really wanted to use in the end, nor where I wanted my career to go. Now I think back on this as a really great time where I learned a lot of different things, and broadened my perspective on things.</p> <blockquote> <p>Would it still be worth it to learn go?</p> </blockquote> <p>It&#39;s always worth it learning something new!</p> <blockquote> <p>people love it</p> </blockquote> <p>Irrelevant. Are you interested in learning it?</p> <blockquote> <p>I feel like because I&#39;m such a junior developer, almost anything I learn will be beneficial</p> </blockquote> <p>I couldn&#39;t agree more. Learn as much as you can, keep your head spinning!</p> <p>As for point c:</p> <p>Go is just another tool, it depends what you apply it too. I tend to think that APIs/ backends written in go are more manageable and more focused, but there&#39;s a lot of personal bias in that. However, it is factually true that Go is very well suited to this kind of task, so in the end, if you do choose to learn it, I think it won&#39;t be a loss anyway! </p></pre>lluad: <pre><p>Go is a pretty simple language. With a little experience in other languages you should be able to pick it up and start being productive in it pretty quickly. It&#39;s not the investment something like, say, C++ is.</p> <p>And you&#39;ll learn new things from it - what is different in statically-typed compiled languages as opposed to interpreted / scripting languages for one. That sort of thing makes you a better developer, whatever language you&#39;re using.</p></pre>JRMWarfare: <pre><p>Go, like any other language, is a tool. It has places it is useful and places its not. When I picked it up, I&#39;d been using backend JS for work (not Node, but I knew Node). Go suited my needs for a side project in that it was fast and worked at a much lower level than Node.</p> <p>I have never used Go at work. There aren&#39;t a lot of Go jobs near me and because Go has some controversial aspects I consistently get asked by people who haven&#39;t used it questions like</p> <blockquote> <p>bro why use Go Google doesn&#39;t even do it</p> </blockquote> <p>(not true) Or</p> <blockquote> <p>bro it&#39;s statically typed why use it</p> </blockquote> <p>Or</p> <blockquote> <p>bro it&#39;s so verbose why do you use it</p> </blockquote> <p>My point isn&#39;t anything about Go itself, but that it fits into more niche areas of development and so a lot of people have confused or incorrect opinions about It, and some just don&#39;t know much about it.</p> <p>If you&#39;re looking to learn a language deeply, i&#39;d continue with Python for now.</p> <p>Google has a python-to-go transpiler called Grumpy. That would be a good way to integrate your python Knowledge Into the Go space. Your job prospects will more immediately improve with Python knowledge. Once you&#39;re more comfortable with any single language, you could start to pick up Go.</p> <p>You seem early on on your career and IMO the best thing to try to do is to master something. You already have python exp, so I&#39;d focus on that.</p> <p>Again, not bashing the Go language or saying it&#39;s not worth learning, just saying that it seems to me your best choice right now is to hold off and focus on expanding what you already know.</p> <p>Another point to consider is that Go takes some unique approaches to things and lacks what you&#39;re probably most familiar with regarding OOP. Not that those are bad things, but the knowledge you gain from learning Go doesn&#39;t map 1-1 with many other languages. If you know another language really well, you may have an easier time understanding the motivations of the Go team&#39;s design choices and tradeoffs.</p></pre>p-h: <pre><p>What kind of backend js?</p></pre>JRMWarfare: <pre><p>Platform called Service now, it&#39;s their modified version of the Rhino is engine, and Java if you need faster/more advanced functionality in some places.</p></pre>Prot00ls: <pre><blockquote> <p>Google has a python-to-go transpiler called Grumpy. That would be a good way to integrate your python Knowledge Into the Go space. Your job prospects will more immediately improve with Python knowledge. Once you&#39;re more comfortable with any single language, you could start to pick up Go.</p> </blockquote> <p>I actually really like what your saying about mastering one language first so i think I&#39;ll do that for now and maybe come back to GO a year from now. Thanks!</p></pre>RevMen: <pre><p>Learning Go has made me a better programmer. You have to pay attention to types and you have to really think about what to do with errors. Using concurrency requires thinking in a new dimension.</p></pre>keith1603: <pre><p>read more about golang <a href="https://altabel.wordpress.com/2015/11/10/golang-pros-and-cons/" rel="nofollow">https://altabel.wordpress.com/2015/11/10/golang-pros-and-cons/</a></p></pre>natefinch: <pre><p>This post is two years old and it strikes me as written by someone that has barely used the language. There&#39;s one straight out wrong assertion - that go has pointer arithmetic. That&#39;s false to the point of absurdity.... go specifically does <em>not</em> have pointer arithmetic (i.e. incrementing a pointer&#39;s value to move the pointer to another location in memory), in order to avoid unsafe memory access.</p> <p>In addition, one of the other cons is pretty patently false, at least in 2017... the con of not having a strong ecosystem. The ecosystem is a pro these days, if you&#39;re doing the kinds of things that go is made for, i.e. CLI tools, networked servers, or APIs. </p></pre>fazalmajid: <pre><p>Go is not essential for a front-end developer or mobile developer, but it is pretty much becoming the standard for cloud (Docker and Kubernetes are written in Go, for starters) and much serious backend work. I think it will usurp Python for many workloads, it certainly has at my company.</p></pre>twetewat: <pre><p>Start off with what you think is fun. If that (for this week or hour) is Go, do it! By trying out a lot of different languages, you&#39;ll learn to program, not language specific quirks.</p></pre>breck: <pre><p>For a junior developer my advice would be to learn meta language concepts first. Then learning go will be an easy problem.</p> <p>I&#39;d suggest learning ANTLR (<a href="https://pragprog.com/book/tpantlr2/the-definitive-antlr-4-reference" rel="nofollow">https://pragprog.com/book/tpantlr2/the-definitive-antlr-4-reference</a>). Learn that and you&#39;ll have a solid understanding of the concepts of syntax, semantics, abstract syntax trees, and start to understand some of the <em>why</em> and <em>how</em> behind Go.</p> <p>Learn enough language meta concepts like the ones ANTLR would teach you and then learning a new language like Go will take you a week or less instead of months.</p> <p>That&#39;s just my 2 cents. I took a stab at learning go when it first came out but struggled. Years later after learning more about programming language design and theory it was quite easy to learn. I also then could <em>appreciate</em> why things are the way they are in go.</p></pre>JRMWarfare: <pre><p>I half agree with this, but i&#39;d suspect that learning a language well enough to understand design choices and flaws in it lends itself to the same kind of understanding. If he focuses on what he already has skills in, he&#39;ll improve his existing skills as well as gain a foundation to be able to utilize Go well.</p></pre>

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

150 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传