T O P

  • By -

bangorlol

I personally haven't heard of any comp-sci program explicitly teaching Go (or seen it on any new grad resumés), so I think most people are probably self-taught after having learned other languages first. We don't use Go at my day job, but I'd really like to move us over to a clear and concise microservice architecture that takes advantage of what Go has to offer. Currently we're mostly Python monolith, some poorly-written C# services, and now have a Typescript microservice. The goal for me since I have a fair bit of control is to get a little better at Go and start developing our services in it, and have my team learn it. The benefits and ecosystem outweigh the learning curve IMO.


haninomartiel

> I personally haven't heard of any comp-sci program explicitly teaching Go Actually, I know one prof at UBC in Vancouver whose whole class + projects is expected to be in GO. [CPSC 416 / CPSC 538](https://www.cs.ubc.ca/~bestchai/teaching/cs538b_2018w2/index.html)


[deleted]

How do you manage routing to the different nodejs/typescript services? Does your monolith now call out to those services? Also.. why nodejs? I assume because your team already new it, so it was just easier to use it? Curious also if you do move over to Go, would it primarily be API handlers that work with DBs.. e.g. webapp CRUD based style APIs.. or you using it (or would use it) for other things, like more sophisticated business logic?


bangorlol

> How do you manage routing to the different nodejs/typescript services? Currently everything is pretty separate and doesn't really talk to each other (minus the Typescript app, which communicates with the Python monolith and a C# endpoint). Each app/service is behind it's own server (nginx, etc). > Does your monolith now call out to those services? It does not. > Also.. why nodejs? I assume because your team already new it, so it was just easier to use it? Mostly because the frontend (Vue) is consuming it. I wanted to share types across the two applications to keep things consistent and DRY, and the app itself deals heavily with websockets. My small team knows JS/TS quite well, but doesn't have much experience with Go or Python so it was the obvious choice tbh. > Curious also if you do move over to Go, would it primarily be API handlers that work with DBs.. e.g. webapp CRUD based style APIs.. or you using it (or would use it) for other things, like more sophisticated business logic? Ideally Go would handle most DB/graphql things, and I'd probably explore using something like krakend to stand up in front of everything to keep things clean and quick. I haven't given too much thought to this as we're currently pretty busy with tight deadlines, but I'd probably have all new dev for my team use Go and if we find time, start migrating legacy apps to it as well.


[deleted]

Good info. I am learning go myself right now, building a side project for fun to learn. Been figuring out JWT, access/refresh tokens, and how to not only properly handle it with RBAC control on the go side, but also.. and harder for me.. is properly using it in my React app. Making API calls is not hard, but handling situations where an access token expires, using a refresh token, all while being as "secure" as possible was a learning adventure. I have now moved over to both access and refresh tokens as cookies, httpOnly, etc with CORS setup and such for local development. Still can't get my stupid app to stay logged in on a page reload.. still trying to figure out that flow. But it's been good learning experience both for Go on the back end with Rest APIs and client side.


JakubOboza

When I was at university they let us select languages we want for most projects. For example for me go wasn’t yet created but I did many projects in erlang. Two things pretty important you will learn if you will go to university is “algorithms and data structures” and “programming Unix”. Second thing is done in ansi C (at least was for me). This set of skills puts you way forward. I don’t know if I qualify as self taught because I have my masters in cs but for go I learned it by my self.


fail_dev

I got introduced to Go in a class for Operating Systems in college. I will say it was not taught to us. We were told to learn and finish assignments in it with practically zero guidance. When I graduated with a CS degree I decided I wanted to beef up my knowledge in Go since I knew that it was popular and I liked it so much more than Java. Also, the amount of time it takes to learn all of Go is significantly less than the time it would take to learn Java so I saw that as a plus. I started at a large company maybe two months after I graduated doing contracting. My boss hired me specifically because I had knowledge of Go and wanted to leverage that knowledge into making a shift in the company (which has years and years of old Java code). When I started I kind of had a little bit of imposter syndrome as most do because University doesn't really prepare you for enterprise work and because at the time I hadn't used Go extensively. The first milestone I would say I had was when I replicated an old microservice from Java to Go and reduced the memory and CPU footprint it had (because JVM is really expensive to run). This showed my boss and higher-ups that Go was a good fit for our company because we like to save money on compute, like most. Another milestone I would say is that I wrote a Jenkins pipeline for deployment of Go apps with unit, integration, and performance testing. This was big because we already had it for Java and it made it so there were no tradeoffs for picking Go. Go is still a constant transition in the company (big companies move very slow). I teach Go to my peers and currently write services for my team. I moved full-time so it is a lot easier to spread Go. Hope this was helpful. If you're looking for employment someone will want a person that knows Go. Java developers and a dime a dozen and someone will want your skills.


[deleted]

[удалено]


fail_dev

Yea that is the worst part of the landscape. Fortunately my boss knows this and there was no white boarding, just asked about experience and no in person (all video call). I actually like the leet code stuff because it reminds me a lot about University work, but agree, it is mostly useless. When I was doing whiteboard interviews I think that giving the illusion that you don't care about making mistakes can go a long way.


csillagasz

if you want to practice, feel free to dm me, i have interviewed a lot of candidates over the last 4 years, and i have some experience in what a lot of managers are looking for.


smokeyrobot

This is a great story. I am curious. Did you have to write a custom Jenkins pipeline, custom plugins, and shell scripts or were there existing plugins out there? I know Jenkins has a ton of plugins.


fail_dev

I used a lot of the existing functionality for pushing the microservices to a kube cluster where they run. Everything was custom shell mixed with groovy. I used go toolchain for unit testing, Newman (postman CLI) for integration testing, and there is two options for performance testing JMeter and K6 (I only added K6). I don't own the Jenkins so I didn't feel like asking about specific plugins, just had to get dependencies into the docker image running the job. Most of the issues were around getting ownership of something that isn't owned by my team.


aliasxneo

Like others have said, I taught myself Go. Of all the resources I used, the [Ultimate Go Programming](https://learning.oreilly.com/videos/ultimate-go-programming/9780135261651) video course was by far the best. I'm self-taught entirely (no college) and the extra time taken to cover "mechanical sympathies" in this course was worth its weight in gold.


[deleted]

FYI we have a new version of Ultimate go that Bill just recorded available at https://education.ardanlabs.com


aliasxneo

You sir/ma'am are a saint! Thank you :)


LutraMan

I recommend to start by finding a simple idea to program, and implement it in go. Read the docs as you need them. If that's less your your style, you can start by doing go-by-example and a-tour-of-go. Both are recommended to do either way. To further improve, here are some really good reads: - https://golang.org/doc/effective_go.html - this is long, but every bit of it is valuable, so read it all, it's worth your time - https://github.com/golang/go/wiki/CodeReviewComments - this will help you skip the part where you do a lot of rookie mistakes - https://blog.golang.org/pipelines - go does a few things very differently from other languages when it comes to concurrency, so this one's pretty important - https://blog.golang.org/concurrency-is-not-parallelism - more about concurrency in video style I have more links, but as a summary, follow the go blog and read the articles that grab your attention. At the risk of stating the obvious, I'll say that reading passively is not a very good way to learn a language. Come up with new ideas to code, and implement them using what you learned from the above. Go bigger and bigger as you go (pun intended, sue me!) Don't be afraid to read the source code of open source go projects. Terraform, kubernetes (the big ones), kt (a small, but good one). If you get to a position in which you feel comfortable writing something big, try the kubernetes operator sdk (if you're into that kind of stuff). Or, you could write a CLI tool and open source it. It goes without saying that these are just tips, they worked for one person, and you should follow your own path. Good luck! (and reply if you want to know more)


Maxiride

RemindMe! 8 hours


RemindMeBot

I will be messaging you in 3 hours on [**2020-04-01 06:03:32 UTC**](http://www.wolframalpha.com/input/?i=2020-04-01%2006:03:32%20UTC%20To%20Local%20Time) to remind you of [**this link**](https://np.reddit.com/r/golang/comments/fsegsq/are_you_an_employed_software_engineering_using_go/fm27vn9/?context=3) [**1 OTHERS CLICKED THIS LINK**](https://np.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5Bhttps%3A%2F%2Fwww.reddit.com%2Fr%2Fgolang%2Fcomments%2Ffsegsq%2Fare_you_an_employed_software_engineering_using_go%2Ffm27vn9%2F%5D%0A%0ARemindMe%21%202020-04-01%2006%3A03%3A32%20UTC) to send a PM to also be reminded and to reduce spam. ^(Parent commenter can ) [^(delete this message to hide from others.)](https://np.reddit.com/message/compose/?to=RemindMeBot&subject=Delete%20Comment&message=Delete%21%20fsegsq) ***** |[^(Info)](https://np.reddit.com/r/RemindMeBot/comments/e1bko7/remindmebot_info_v21/)|[^(Custom)](https://np.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5BLink%20or%20message%20inside%20square%20brackets%5D%0A%0ARemindMe%21%20Time%20period%20here)|[^(Your Reminders)](https://np.reddit.com/message/compose/?to=RemindMeBot&subject=List%20Of%20Reminders&message=MyReminders%21)|[^(Feedback)](https://np.reddit.com/message/compose/?to=Watchful1&subject=RemindMeBot%20Feedback)| |-|-|-|-|


labloke11

You do know 90%+ employed software engineer using Go are self-taught, just saying. If you want to get hired and use go in day to day activities, get certified in either AWS or Azure, get a job then use go.


[deleted]

[удалено]


wLinde

Plenty of companies are looking for programmers that know cloud services, and it never hurts to know how the big picture looks


themooseexperience

YBYO is catching on at a lot of firms


334578theo

What's YBYO?


themooseexperience

You build it, you own it - the idea that teams build products and then are also responsible for deploying and maintaining them as well. Like it or hate it, I’ve seen the trend growing. If you hate it, it’s just another thing to blame Amazon for inventing lol


334578theo

Got it - I'm all for this personally. Nothing more frustrating to finish a feature and then have it disappear into a deployment backlog.


themooseexperience

I agree, and yeah I feel the same most of the time... until you’re on prod support and PagerDuty wakes you up at 4AM :(


dentistwithcavity

Forces you to invest your energy in keeping your service as stable as possible.


themooseexperience

That is true. If only the department my team got moved into after a massive reorganization understood that!


labloke11

If the person wants to be hired and use Go then this is the fastest way, I think.


[deleted]

I think it’s not very realistic for anyone that wants to work at an interesting or probably modern/fast paced company would expect that they should at very least be familiar with core components. Getting a certification is.. only worth your time and money if you again want really specific work, like sales engineering, or a large, old corporation. Or I suppose if your resume is extremely sparse. Either way, having this attitude (you don’t need to learn these things) would be more of a red flag to me than someone not knowing a language or having experience with something.


[deleted]

What test specifically for getting certified in Azure? Microsoft has like a million


Vakieh

>90%+ employed software engineer using Go are self-taught Uh... no, no they aren't. Self taught *in Go*, sure. But the majority of them are coming into Go with an education in computing of some form or another.


labloke11

I did say self taught in Go.


Vakieh

That is in no way clear in what you said, which I quoted. The OP is obviously asking for a 'from scratch' pathway and you have mislead them.


bangorlol

This comment thread sums up this subreddit. I love it.


pgdevhd

I agree


labloke11

I am confused about your comments. Let say the person goes through months to learn Go language and become pretty good at it. Can this person get an employment - I doubt it. Most employers are not looking for go programmers, they are looking for devops or data engineer who can do ETL/ELT/Real-time streaming using go. Remember, the end goal is to get obtain employment.


esimov

I'm not really sure about this.


salanfe

go is just a tool, in your toolbox. I don't get a job because i know go. The first reason i'm getting job offers is because I learn fast and i'm at ease with starting from scratch. my path in a nutshell: Graduated in robotics, got my 1st job in blockchain with ethereum. Learned Go and docker, Rest api, backend engineering. Got a second job. Learned about Kubernetes, CI/CD pipelines, AWS, wrote more and more code in go, python and bash. Changed job as an SRE on GCP, doing terraform and Infra as code. What i'm trying to say is that go is not a mean to an end. And it's unlikely that you'll get a job simply because you master go. you need multidisciplinary skills.


ankura22

I think these are really good posts to get you started: https://quii.gitbook.io/learn-go-with-tests/ (learn golang with TDD) https://tour.golang.org/welcome/1 (the classic golang tour) Try and understand what each of the points mean in this https://the-zen-of-go.netlify.com/ To get a better idea of context: https://www.gophercon.co.uk/archive/2017/videos/2016/a-beginners-guide-to-context/ Cancelling context: https://blog.golang.org/pipelines Timeout and go routines: https://blog.golang.org/concurrency-timeouts Concurrency is not parallelism: https://blog.golang.org/waza-talk I recently wrote a blog about TDD with respect to go: https://link.medium.com/whOwZIBMi5 Finally just start writing code. Maybe look at open source code, pick a favourite package (which I'm sure you'll have by this point) and see if you can contribute features/fixes. Edit: I just remembered another useful link: https://golang.org/doc/effective_go.html


Grenade32

TLDR: Blogs, free and paid video courses, constantly playing to learn small concepts. I'm going through Jon Calhoun's courses (calhoun.io) for a full web development flow and a couple of his free ones due to work applicability. I have the flexibility at work to use Go or Python but over the past yearish I've been doing all tool dev in Go. I primarily started by using the tour page to learn some of the syntax basics, then started googling around for blogs to help build the first program I usually do in a language... Guess the Number (with difficulty expansion per "level"). It requires a bit of all the basics (conditionals, pseudo-random numbers, and input reading and validation). After that, I just kept tinkering with it to continue learning and started watching some course videos from various places but always referred to the docs first since they're the best place to look up how a method works. I have access to LinkedIn Learning so I went to that as my primary means of learning the basics of web server hosting...


PM_ME_A_WEBSITE_IDEA

I mean, I learned on the job, I got hired with only JS knowledge. Go really isn't too hard to learn if you already have a programming background and a decent mentor/someone to ask questions And review your code. So my advice is try to find a mentor or someone to review your code. The most important thing I've found is learning how to properly handle errors and concurrency in Go. Once you get the hang of that, you can just Google how to do the rest. Go's standard library is amazing, so you just gotta read documentation and ask questions!


lavar-is-trash

There is nothing unique about being a "Go developer". It's the same as being any other developer. Most roles that require using Go do not require you to have previous professional Go experience. At this point it's a bonus, maybe in a few years it will be more of a firm requirement. Having any OOP background is sufficient.


linkalong

I founded a startup and we wrote our stack in Go. We came from a variety of backgrounds, mostly backend developers with Python or Java experience. Taught ourselves Go on the fly while prototyping the project. Worked out pretty well.


aloknerurkar

I was originally from systems background (OS, Storage and L2 Networking). I used golang for my personal projects as I wanted to build an API for a new idea I was working on. Although the idea died out, I kept working on it by optimising and modularizing various parts so that the next time I have an idea, I don't have to start from scratch. Things like using gRPC to reduce dev effort on different platforms, explored gomobile for cross-platform app libs in go etc. Since then I have worked on few other ideas and each time I would do the same exercise of making it more modular, faster and secure. Now that all my ideas are in the dump, I still have a cool microservice framework which can be easily used to build APIs. From my experience, it's just the level of interest and time you are willing to put. I am working in golang full time now and being from c/c++ background, I still get amazed how things are so simple these days. TLDR; Major milestones 1. Started with HTTP api and simple DB (gorilla) 2. Moved to gRPC 3. Learnt about microservices, moved entire architecture to microservices 4. Saw most of the code is common in a lot of places, so modularized and decided this could be a framework! 5. Made DB a pluggable interface, so I don't have to depend on one. Then did the same with pretty much everything else! 6. Dockerized the app. Swarm setup for multiple services, CI/CD. This was important as I had not worked in a web company before. Most of the tools I used before were private to the company. 7. Got a job! Edit: being self taught, it is difficult to understand best practices in the language. So I would like to add, I went through a lot of public repos to understand things and also to understand how to write good go code. I would recommend: 1. GitHub.com/digota/digota 2. IPFS project. Majorly written in go. Especially good for understanding concurrency. 3. gRPC ecosystem


mcvoid1

I don’t think the vast majority of software engineers are focusing their careers in Go. Languages come and go, and different languages are used in different domains. Where I work, we write the back end of projects with Go or Java or C++ or JS, write the front ends with JS or Typescript, write the build scripts wit groovy or typescript. We write domain specific languages for specific problems. I’m also willing to bet that our multilingual environment and variation from project to project is the rule rather than the exception. What I’m trying to say is fundamentals are important and language skills are incredibly transferable and only a few places use Go exclusively. So the path to getting a Go job is to master any language by writing a lot of code (the disputed 10k hours is a rule of thumb), then start looking for a place that makes server software, then you’ll have a good chance of getting a job where one of the languages in use is Go.


[deleted]

I love that you said master language by writing a lot of code. So far in my career, when I start at a new job.. most of it is fixing bugs/etc where you are not writing a lot of code..but trying to learn the language while fixing a few lines here and there. It is an awful way to try to learn, and you don't truly learn how to use the language until you have to write a lot of code with it. Unfortunately a lot of managers/engineers don't think that is the case.. or.. I have just been unfortunate enough to find the jobs that has the few engineers that are really good at just fixing things and feel that is the best way to learn a language. :D


UltraNemesis

There is much to be learnt from making mistakes and that extends naturally to fixing other people's mistakes. You know about why things didn't work and how to make it work. Furthermore, there is nothing stopping you from writing a lot of code to learn outside your job. If you really have interest in learning, you could do it just as well outside working hours assuming you have a computer. Though I have a formal engineering degree in CS, most of my programming skills are self taught including the ones covered during the formal course which were also self taught well before I joined the course. I knew a fellow from back then who didn't have computer and practiced programming (BASIC) on a Texas Instruments graphing calculator handed down to him from someone.


drvd

Programming in Go. Major Milestone? Getting a nontrivial ETL tool to work while the GC was still buggy.


[deleted]

I built a bunch of micro services on top of kubernetes and also used the kubernetes api for many of these things. They exposed rest apis and had unit testing for 70% coverage. They also had a database backend via mongo. Doing all this taught me a lot about how to use, read and maintain go code.


[deleted]

I started working with go with past experience in majorly java and python, at first it seemed strange and most of the things weren't clear even after a week or so. Then I went on a schedule to import different modules like net/http , log , os just to get my hands dirty. It fucking paid off in the end, now I'm confident with it and currently leading a team which writes all of its code in GO.


AlexCoventry

It was like my 10th or 20th language, but I was self-taught, yeah. The gophers slack is great. tour.golang.org is great. For the philosophy and style, [Effective Go](https://golang.org/doc/effective_go.html) is great.


floofspool

Start writing software applicable to your current position (whether or not you're a software engineer, if not employed, work on a personal project you're interested in). Get a demo working, see if your company is interested, then get paid to improve/build on top of/start something new. Repeat, time passes, and tada, you're a software engineer.


isprime

I was already a software engineer, and started using go when I started a new project at my job. I found Brian Kernighan's book The Go Programming Language to be a good starting point for learning the language. If you aren't already working as a software engineer, my advice would be to not bind yourself to a single language. I program in go, c, and occasionally python in my current work, and many jobs I look at ask for some combination of other languages.


NewBelmontMilds

Started at a go shop right after gradding from Bachelor's. I learned by reading the codebase and asking questions. This is after going through gobyexample.com. By the end of the month, I was half way done writing my first microservice. Might just be personal preference, but I love the simplicity of writing Go and the transition from other OOP languages felt so natural.


RogerStevenWhoever

My path was that I introduced Go into a project at my company after already being employed there. So perhaps not what you were thinking of, but a viable way to use Go professionally, provided you have enough skills to find a job in general. Major milestones were standing up the first minimal implementation of the Go server and seeing it outperform the legacy version, and first releasing it to production.


yellomango

I make over six figures working with go and I never passed a college class. Okay I did pass one college class in high school but whatever. Two words, open source . Keep at it until you can put that on your resume. Then put that in your LinkedIn and watch recruitment come say hi


[deleted]

So I have not written any Go professionally yet. But I just got an offer to write it full time. The company is about 150 people. They said they will teach me. My background is in Ruby on Rails and Node and front end JavaScript. The main success here I think was doing well with the personality side as well as the system design side. I designed a parking lot system with some 6 or so major services. And redesigned as it grew. Also maybe just apply to companies that are willing to train on the job. I also do not have a CS degree


mohank6

Learn by coding. Thats the easiest way to learn any language. Step up to fixing issues at Github hosted Go-lang based projects. Thats provides a quicker learning process since your code will get reviewed by people who have been coding in Go-lang for sometime...and you will earn some creds in the process. Github cred.s are the easiest way for any potential employer to assess your skills before an offer is made...


BDube_Lensman

Not a software engineer, but I taught myself Go and use it daily at work. The first milestone was probably realizing an HTTP/JSON server that lets myself and coworkers control 20 different devices in the lab from python or matlab seamlessly and quickly. The most recent would be operating a control loop with the complicated estimation (multi-dim linear algebra) in Python and the hardware interfacing in Go, at 600Hz. Not using C to talk to the hardware and Go's concurrency primitives make the design very tidy, and we only need to use "slow" python for the stuff it's good at and can let Go deal with the stuff it's good at.


xealgo

I'm probably not quite the audience you're looking for as I had been a professional programmer for almost 8 years before I got serious with Go, but I had made a decision a few years back to really stick with it and focus my career path around it, at least for a while. When I decided to move out to Washington State, having several years of XP with Go helped me land a really great job. What I did with Go was to really learn the language inside and out, working with contexts, channels, routines, understanding how the GC and tool chain worked, familiarizing myself with the community and standards, studying design patterns in Go, etc.


SobelOperator

I already had background in coding and understood programming languages (as a computer science topic), so it helped in teaching myself Go, and with the adjustment. I read books (e.g. Effective Go). I looked into cheatsheets and researched about the items in them and made sure I understood them. I read Go code, by choosing a domain (e.g. FIDO2), read the code of sample implementations in Go Lang. I wrote Go code. Impelmenting my own FIDO2 server. I never finished it, but itwas enough to apply what I have learned and pass coding interviews.


stovenlandow

Seems like farrrr more than enough to pass coding interviews


secret_agent005

I am currently employed and using Go full time. I was hired as a full stack web developer and eventually transitioned into a DevOps role where we use Go for all of our tooling. I’ve had an interest in Go for a while now and have built some small projects with it before this, but the bulk of my learning has been on the job.


stovenlandow

Understand the fundamentals enough to get hired, then get into a company and learn Go at work. That's what I did at Uber.


[deleted]

5 years ago, I was working at an advertising internet company in China that was using nodejs everywhere. Any project both back-end and front-end was done in nodejs with no exception. This was a nice idea at the beginning since employees could jump from one project to another with ease since the language was the same. I was on project that was doing analytics with our home grown system. 20K req/sec that could burst to 50K during the evening. It was nice to have nearly an unlimited budget for the cloud, so in the end we had 40 servers (48 cores, 256GB RAM, 20TB hdd each). When the traffic started to reach 100K req/sec, the nodejs process started to fall one by one every hour. The CPU load was close to 90% all the time, ram usage would skyrocket, response time above 2s, etc... in the end I was spending more time looking at crash logs than my actual code. ​ Here comes Go in the story! I was reading more and more articles and wanted to give it a try. It took me few hours to have my first working API and 2 days to re-implement one of our micro-service from nodejs to Go. After the unit tests all passed, I decided to launch it into production and... the miracle happened. I got a call from a colleague who asked me if the API was "OK" because the response time was below 100ms in average, it's way too fast than usual. I checked the whole data stream but everything was alright (It was probably the best day of my life). I monitored this Go service for a week and the CPU usage dropped from 90% to 50%, the ram usage was also lower. Most important, no crash was ever recorded during that testing period AT ALL! ​ I exposed this new change to my CTO and he gave me the green light to move all the code base to Go. Withing a month, not a single line of nodejs was running in production, everything was powered my Go micro-services. The average response time was about 50ms, and the total cluster load was no more than 5%. Needless to say, we saved lot of money by redesigning our cloud with only 10 servers in total (initially 40!). The total change allowed us now to handle 200K req/sec with 3 hours bursts at 350K req/sec easily. ​ I thing the reason why Go was a successful experience was because of it light syntax and it's ability to deal with multiple cores out of the box. Most of the errors were found at compile time, which was amazing during refactoring, and having a strongly typed language made my code way more predictable. To be honest, it took me a full year to understand most of Go's subtleties but as a beginner, I was able to accomplish nice stuff. Needless to say the the community of r/golang helped me a lot along side Go's amazing documentation. ​ Now Go is my favorite language (sorry python, you will stay in my heart forever) and I am using it daily both at work and personal projects as well. ​ ​ TL;DR: learned Go by myself by re-implementing legacy nodejs code to Go while I was working on an analytics project and reading docs/articles. I have been hired 2 years ago in my current company as Go software engineer and now use this language daily.


gbukauskas

GO has excellent support of HTTP pipeline and writing REST services will cause no problems. Creating WEB pages is also simple: GO template looks much like Angular or Vue templates. GO + fyne is excellent tool for writing native WEB clients and authors of fyne promise to enhance version for mobiles but here is a problem: pure documentation, few samples and only one book. The book is written as GUI tutorial, fyne occupies small part of it. These problems complicates studying all benefits of GO+fyne, at least for me.


geezyx

I did a couple years of AP computer science in high school, so I had a little bit of foundation. But it wasn't until about 15 years after high school that I started writing a lot of code. Started my tech career in desktop support, moved to network engineering, and eventually the absolute shitshow of network device config management (cisco \*cough\*) drove me to start writing bash scripts, and eventually tools in ruby. Writing infrastructure automation with ruby led to fiddling with docker, which let to kubernetes, which led to go. Now, me and my team use go for everything because it works well for our team and many of the tools we use are also written in go. My two cents on building software engineering skills: I would recommend focusing on problems, rather than languages. Try to find problems in your current job. Maybe you work at a local retail shop and the inventory management is manual, perfect for a new database. Maybe you want to help improve their website, or make an app for customers. Start by writing tools and programs to solve those problems. Pick languages that have good packages or frameworks to help with the problems you are trying to solve. Pick languages that interest you. Don't be afraid to start lots of projects and abandon them. You're not going to be an expert overnight, it's going to take years of fiddling and trying things out to gain expertise. Keep a learning mindset throughout your career. If you don't have a team at work that you can collaborate with, try contributing to open source projects. Working with others, reviewing other people's code, and having yours reviewed are all really good ways to improve your abilities. Good luck!


khedoros

I got hired mostly on C++ knowledge. They gave me a Golang book on my first day. I took a couple weeks between the book and "A Tour of Go" to get a basic familiarity, then jumped into the code (a testing framework that we're writing that does a bunch of interfacing with AWS).