<p>Hi Everyone,</p>
<p>I'm really interested in Go and would love to start using it and messing around with it. I'm a self tough junior programmer and Go scares me quite a lot! From code examples and tutorial videos its world's away from PHP. Would you recommend me trying to learn it or would it be a waste of time? Thank you for reading.</p>
<hr/>**评论:**<br/><br/>Streamweaver66: <pre><p>There's no particular problem about being a junior PHP developer that would make learning Go difficult. Don't try to learn Go as PHP, learn Go as Go and you'll be fine.</p>
<p>It's hard to tell what is going on in someones mind but when I see this kind of question asked by junior developers it's often some version of questioning if they can handle the complexity or anxiety over percieved relative difficulties of languages. So through my career I've heard a lot of "I'm only a [Python|Ruby|php|perl] developer, I've always been intimidated by [Java|C++|C#|and now Go], do you think I can learn it". IF this is the case than I strongly encourage you to learn it. There's no magic to any language, it's just time and some endurance to get unstuck when you do, and you will. </p>
<p>When people say software engineering is hard, I think it's percieved incorrectly. It's not that it's complex (which it is), but that it's very difficult to live with the pressure of that compexity over long periods of time. Nobody realizes everything they need to about Software Engineering all at once, it takes dedication and time. Go is no different.</p>
<p>So if any of that applies then all I can say is keep with it and don't be daunted by your perception of Go. If you stay with it to get past some of the new conceptual models in comparison to PHP, I think you'll find it surprisingly easy.</p>
<p>In your specific case I think Go will be a great language to learn in addition to PHP in that it will introduce you to more core language theory concepts. Also you'll have a go to language for when PHP is too slow, or not an appropriate fit.</p>
<p>Anyway, best of luck and I hope you pursue it and find it a good experience.</p></pre>arschles: <pre><p>That comment about the pressure of complexity is spot on IMO.</p>
<p>I want to add one more comment to keep in mind as you learn Go (which you should absolutely do!):</p>
<p>One of the reasons I love Go is that it makes complexities obvious <em>while you're writing the program</em> - sometimes painfully obvious - when PHP may not.</p>
<p>That all being said, the one thing I'd keep in mind while learning and writing Go is that there's usually a best way to do something. It's called "The Go Way." Learning the Go way takes a little while but with some patience and observation, you'll probably learn to be more productive than you were in PHP.</p></pre>beefngravy: <pre><p>Hi Steamweaver66, thank you so much for the detailed reply and taking the time to read my post. I completely agree with you about being apprehensive. I look at the code and the kind of developers that use it then compare myself and always come out worse off. I really appreciate your post and it has given me a boost in confidence! I certainly will pursue it, thank you again.</p></pre>Streamweaver66: <pre><p>Time and pressure make diamonds, just give it time.</p></pre>kenhkelly: <pre><p>I managed to pick up Go pretty easily actually. I started by using <a href="https://gobyexample.com/">Go By Example</a>, doing each of those tutorials. Take the time to read and understand what is going on. </p>
<p><a href="http://learnxinyminutes.com/docs/go/">Learn Go in Y Minutes</a> is pretty good for quick syntax reference and a good read to just broad brush familiarize your self. </p>
<p>After those two, I would say just make yourself a little tool or something and experiment. </p>
<p>Learning by doing has always worked for me.</p></pre>beefngravy: <pre><p>Hi kenhkelly, thank you for taking the time to post and for sharing those links. I'll have a look asap!</p></pre>konrain: <pre><p>please stop thanking everyone, its a thread </p></pre>andrewksl: <pre><p>You won't struggle simply because of the fact that you currently do PHP. In fact, you might find that the lack of quirks and strange behaviors to be a load off your mind. </p>
<p>Perhaps as a junior dev, your lack of experience will make it so some of the things you learn are completely foreign and thus hard to wrap your head around, but that was bound to happen at some point in your career, assuming you wish to learn and grow.</p>
<p>Speaking as someone that also started off doing PHP, I would wholly recommend you get into Go sooner rather than later. Doing web services in Go really helps you grasp the nature of the HTTP request which tends to be taken for granted when doing PHP (since much of it's handled by apache/nginx).</p></pre>drvd: <pre><p>Why does Go scare you? It is tiny and pretty regular programming language.</p>
<p>It's not English with complicated pronunciation rules, it's not French with lots of irregular verbs, it's not German with three articles (?), and is not Latin with 6 causes.
Go is a simple programming language which is high-level enough to express ideas without a lot of typing or subtle errors (compar to assembler) but is low-level enough to understand directly what happens i.e. how the code you type is executed (compare to Clojure or Haskell).</p>
<p>It does not matter that your primary (first) programming language is PHP or Python or Pascal or Java or C++. Maybe someone with a C background has a slight lead start.</p>
<p>Go is easy to learn. Start with the Tour of Go. Do the tour twice. If you struggle with pointers and memory: Read about how CPUs work, how memory is organised and use paper and pencil to draw memory locations and pointers to them.</p>
<p>Start slow. There is no need to use channels, keep away from concurrency or parallelism until you feel comfortable with a) the fundamental parts of the language and b) with concurrency in general.</p>
<p>Go is definitively not a waste of time. Learning it will make you really productive. Learning Go takes much less effort, time and brain capacity then e.g. learning Haskell, Lisp, Clojure or Scala (and Groove and all these fancy new languages).
Lot's of stuff is written in Go. Go makes programming large projects easy/easier, you might encounter more and more stuff in Go.
You might achieve Go mastery much earlier than e.g. in Rust, C++ or modern Java/Spring.</p>
<p>Learn Go! Start now! It's worth it.</p></pre>jerf: <pre><p>Relative to PHP, Go is in the mainstream of manifestly-typed static type languages. If you wish to be considered a professional, sooner or later you're going to have to pick one up; for all the advancing that dynamically-typed languages have made in the past 20 years, manifestly-typed static type languages are still the dominant technologies. Go is probably one of the easier ones to pick up, because of the similarities between interfaces and duck typing.</p>
<p>But if you don't pick up Go, you're eventually going to have to pick up something like it. There's really no reason to wait around.</p></pre>beefngravy: <pre><p>Hi jerf, thank you for taking the time to read my post and comment. I've taken onboard what you've said and agree that I would have to learn a language like that eventually so I'm going to start now!</p></pre>MikeSeth: <pre><p>No. The syntax will annoy you for several days and you'll need to go back to the tutorials for some obvious idioms, but then you get used to it.</p></pre>beefngravy: <pre><p>Hi MikeSeth, thank you for taking the time to comment even if it was a bit of a roller coaster ride!</p></pre>ianwalter: <pre><p>You'll probably be able to learn the language just fine, but if you're planning to use it to build a web application, you'll probably have a tough time. The ecosystem is no where near PHP and while that's changing, it's just not suitable yet for a junior developer.</p></pre>beefngravy: <pre><p>Hi ianwalter, thank you for the reply. I was hoping to use it as part/ for a web application but just for learning and fun purposes.</p></pre>vlad_didenko: <pre><p>It is not about where you are coming from. It is about how humble, thoughtful, and resourceful you are when applying new (for you) concepts. Start from the Go Tour, read a book, proceed with KISS with a project, read Go forum / SO posts.</p></pre>chem_deth: <pre><p>Give yourself a weekend. And a project. If you don't have a project, forget about learning any language.</p>
<p>Basic Go is very easy to grok especially if you have experience with C.</p>
<p>Have fun!</p></pre>albatr0s: <pre><p>No, you won't struggle.
Yes, I recommend you trying to learn it, it won't be a waste of time.</p></pre>papageek: <pre><p>I'm tinkering with go myself after 20 years of mostly Perl and PHP.</p>
<p>The parts I have a hard time with are structs and types. It's a bit disheartening and tells me decades of Perl have let me become sloppy.</p>
<p>I started with C and Modula on an Amiga 1000 but I can't remember anything from the 80s :)</p>
<p>Go has enough utility to make learning interesting for me. I'm looking forward to thinking of the solution in Go vs Perl and then kludging around translating the idea to go.</p>
<p>Most of what I do is data harvesting, aggregating, and storing data from lots of servers.</p>
<p>I think if you find go interesting, you can do it.</p></pre>papageek: <pre><p>To add to my last reply:</p>
<p>Early on while learning other languages I had peers at the next desk to chat with and mentor me.</p>
<p>Now I'm mostly on my own as far as coding which isn't as much fun. Most of my friends have moved over to management roles and happily left code behind.</p></pre>qftvfu: <pre><p>Yes.</p></pre>
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传