<p>Forgive me if this has been asked before. I've seen a few similar posts. The most common advice is - make a project or contribute to open source.</p>
<p>I've done that. After learning Go, I have created 6 libraries. And I have contributed to the Go language itself by fixing a couple of functions.</p>
<p>But now I want to learn something which could actually land me a job. In other words, what would a company / recruiter look for in a junior / entry-level Go developer? There's a lot of things going on in the Go ecosystem. I came across many things like microservices in Go, web frameworks like gin, chi, gorilla toolkit, etc. I know that companies also create their own softwares / products using Go.</p>
<p>I'm looking for that kind of advice, and that's why I made this post. I'm not a complete beginner. But I'm not much experienced either. I'm learning AWS right now. What else should I learn that would make my resume more valuable?</p>
<p>EDIT 1: I have a 4 year degree in computers.</p>
<hr/>**评论:**<br/><br/>Squeakerpants: <pre><p>Companies hire junior developers with no experience all the time, and those developers generally do not have commits to a major programming language (nor do the mid and senior devs). You sound more than ready for a job. Find some companies in your area that are already using Go and ask the hiring manager to grab coffee with you.</p></pre>NobleMarauder: <pre><p>That really motivated me. Companies keep expecting different things, so I tend to doubt myself sometimes. Thanks!</p></pre>p4r14h: <pre><p>I was interviewing for a mid-level backend engineer role at analytics company. I’ve had a very unexceptional run at things- most of my coworkers are Ivy Leaguers with multiple FANG entries on LinkedIn. One of the worst programmers I’ve worked with had a Stanford > Facebook > LinkedIn pedigree and could barely send an HTTP request from one service to another. It’s mostly fake it til you make it and familiarity. </p>
<p>If you’d like to see my proxy implementation you can check it out here: <a href="https://github.com/eastside-eng/redis-proxy" rel="nofollow">https://github.com/eastside-eng/redis-proxy</a></p>
<p>Maybe even simpler just build a simple HTTP service from scratch (like an in-memory key val store) using net.Conn’s TCP primitives available in Go. Once that works figure out how to turn that request into a Redis byte-formatted byte array, etc. </p>
<p>Regarding certifications: I’d consider that a move out of software engineering. I’ve mostly worked in in-house engineering orgs and we reinvented the wheel. Getting a cert might be good for contractor gigs but I’m not familiar with that area. </p>
<p>If you just want to code in Go and you’re relatively inexperienced then you’ll need to find a ton of medium-big tech companies that have a Go stack and hammer their job postings for junior/entry engineer jobs. Find people on LinkedIn and message them; Tweet them etc. If necessary take a role in front end and move to the backend org after a year or two. </p>
<p>Good luck with everything, it takes much longer than you’d hope but tenacity will pay off. </p></pre>jaffee1: <pre><p>Just start interviewing, and don't expect things to go your way immediately. It sounds like you've got a very solid base for a position as a junior dev, but your fitness for a job and your ability to interview and get the job are very different things. If your school offers any kind of interview help or prep, I'd check it out and look for online resources that describe the technical interview process at various companies, and start practicing. Definitely try to get a few interviews under your belt just to get accustomed to it, and don't stake your self-worth on the outcome of any interview... it's a crapshoot even for some of the best people.</p></pre>JustinCampbell: <pre><p>It sounds like you're already qualified for a programming job. Apply to a few places!</p></pre>jerf: <pre><p>You sound like you're as prepared as you can be, and a bit more honestly, for a job search. If you aren't applying, start. If you are applying, you may want to spread your wings a bit. One bit of advice I find I have to give is that even when the job says "Requirements", it still just means "Our Wish List". If you meet 6/7 requirements, apply.</p>
<p>Also, try showing up to your closest Go meetup.</p>
<p>In terms of <em>learning</em> something, I'd recommend learning a dynamic scripting language. Python is probably the best choice. To be entirely crass and money-motivated, you get diminishing resume returns by going deeper and deeper into one tech. Spread out. Don't ever claim more experience than you have, and don't claim to know a language you don't know, but being able to show you have a dynamic scripting language will really show that you are a well-rounded developer, not just a one-language wonder.</p></pre>mistretzu: <pre><blockquote>
<p>What else should I learn that would make my resume more valuable?</p>
</blockquote>
<p>Did you try attending college ? Having a <a href="https://en.wikipedia.org/wiki/Bachelor_of_Computer_Science" rel="nofollow">B.Sc. CS</a> is quite sought after.. Gives your employer confidence that you are not just another bozo who "learned programming online in 21 days"...</p></pre>NobleMarauder: <pre><p>I have a 4 year degree in computers.</p></pre>hackworks: <pre><p>Most interviews today revolve around problem solving involving data structures and algorithms. Using Go as an implementation language, solve as many problems as you can and keep trying. The real learning will usually happen on the job with real world problems.</p>
<p>Reading distributed and scaling problems will help. Since most companies are either implementing new products or trying to scale existing products, knowing the problem space will help.</p></pre>NobleMarauder: <pre><p>Distributed and scaling stuff is something I'd like to learn about. Do you have any good resources?</p></pre>Redundancy_: <pre><p><a href="http://theartofscalability.com/" rel="nofollow">http://theartofscalability.com/</a> is generally interesting, not just technical, imo.</p></pre>NobleMarauder: <pre><p>I've seen this book before. It's a good book, but not for me. Thanks for replying.</p></pre>p4r14h: <pre><p>Designing Data Intensive Applications is a recent modern and approachable book on practical distributed systems. </p>
<p>Checkout Aphyr’s blog as well, Distributed Systems for Young Bloods. </p>
<p>I recently went through interviews and had a few take home projects that were in Go. You can try those if you’d like:</p>
<ul>
<li><p>Build a simple cache server that uses the Redis serialization protocol to work seamlessly with a Redis client for simple command like Put/Get. It should have a TTL mechanism and process requests in parallel. You’ll need to come up with an eviction strategy (if this doesn’t make sense lookup LRU). On cache misses it, it hits a backing Redis server (you can use a library for this). It should be configurable via envar/config. </p></li>
<li><p>Build a wiki tracing service that finds a path between two articles. You should focus on wall clock time, not the shortest path (these are related though). Key here is to execute many paths in parallel and come up with a way to sync the threads. </p></li>
</ul>
<p>For both of these you should have logging, simple metrics and I’d suggest a Makefile for building it. Even better a Dockerfile / Docker-compose that brings up all the pieces for local runs. </p>
<p>These were to just get an interview, which was 5 hours of coding / algorithms. Unfortunately, companies don’t really look for outside work, you’ll need to pad your resume with 2-3 jobs. If you’re just getting started, find a company hiring ‘Junior’ engineers and work on their front end code if needed - once you have 2 years+ experience you have more mobility. </p>
<p>My experience: Amazon for 2.5 years (Java), freelanced for 6 months (Ruby, JS), startup for 2 years (Clojure), SoundCloud for 3 months (Scala- RIP) and now I’m at a huge startup in SF working in Go.</p></pre>NobleMarauder: <pre><p>Damn! You have worked at big places.</p>
<p>I understood the second project - that's more of a data structure and algorithm problem, along with a bit of scraping.</p>
<p>The first problem though - that's what I see companies doing, and I don't have a clue about it. It seems like pretty low level programming. What were you interviewing for that they gave you this project?</p>
<p>What if I say "fuck it" to other stuff right now, and completely focus on learning AWS? Should I do that?</p>
<p>Certifications are often neglected, but I've heard that AWS certifications hold a lot of value. Is it true?</p></pre>hackworks: <pre><p>Good podcast covering real-world cloud scale topics:</p>
<ul>
<li><a href="https://softwareengineeringdaily.com/" rel="nofollow">https://softwareengineeringdaily.com/</a></li>
</ul>
<p>Some links to get start on distributed problems:</p>
<ul>
<li><a href="http://www.kegel.com/c10k.html" rel="nofollow">http://www.kegel.com/c10k.html</a></li>
<li><a href="https://dataintensive.net/" rel="nofollow">https://dataintensive.net/</a></li>
<li><a href="https://raft.github.io/" rel="nofollow">https://raft.github.io/</a></li>
</ul>
<p>For high performance concurrent programming:</p>
<ul>
<li><a href="http://concurrencykit.org/" rel="nofollow">http://concurrencykit.org/</a></li>
<li><a href="https://www.goodreads.com/book/show/3131525-the-art-of-multiprocessor-programming" rel="nofollow">https://www.goodreads.com/book/show/3131525-the-art-of-multiprocessor-programming</a></li>
</ul>
<p><em>Reading the Go standard library and runtime code is a great source on learning the low level workings</em></p></pre>NobleMarauder: <pre><p>Designing Data Intensive Applications looks great. Thanks for that!</p></pre>razor_XI: <pre><p>How is it possible that someone who has fixed issue in the language itself is unable to land a job ??
Shouldn’t Google be knocking your door already ?</p></pre>NobleMarauder: <pre><p>I haven't graduated yet. I just started looking for a job for after I graduate. So I'm just preparing myself for the future.</p>
<p>Google isn't gonna knock on my door any time soon lol. My fixes weren't anything huge. In fact, my issue was the very first issue filed related to it. I needed it done, so I submitted a fix as well. It was a 7-10 lines fix.</p></pre>
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传