Why are Companies Migrating from Java to Go?

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
before you die hard Java developers start raging in the comment section I've personally been a Java developer for a long time as well before I picked up a kill I've architected and led large and complex Java projects that require a team of engineers in over half a year to complete so I am quite emotionally invested in Java as well because of all the time I spent perfecting Minecraft however we have to face the reality that go is being rapidly adopted and many companies are now searching to go to build and scale up their services which is traditionally been done using a Java in the past in this video we go through all of the reasons why companies are making the switch from a Java to go towards at the end I will also include a couple pitfalls of a goal compared to the mighty Java so make sure to stick around before we get started make sure to get your free goal line issues at a golang dojo.com cheat sheet first let's talk about a prototyping and a scaling now most startups are burning cash and are rushing to come up with a minimal viable product to hit the market so that they can acquire paying customers as soon as possible so choosing a technology is a fit for rapid prototyping is extremely important especially during the early stages of a startup as a result languages like a python or Ruby are preferred because of their simple syntax and assisting solid Webber Frameworks as far as a back-end is a concern however these are prototyping languages are not known for their performance when scaling becomes a problem these startup companies it typically will migrate to Java instead and hire additional Java developers or just train the assisting staff to learn Java this is usually a very painful process in a require is a lot of resources and time however what if there is a language out there that is a good ad both a prototyping and a scaling once these startup companies start to get more traffic and paying customers as you can guess go is that a programming language that comes in and fills in the Gap go has a simple syntax often a comparable with languages like a python and Ruby however it is much more performant than those languages additionally a web framework often isn't necessary when it comes to Building Services in go if you can be satisfied with a more lightweight web a toolkit like a gorilla for request routing in middleware setup all these attributes about to go makes it a great language for prototyping and scaling for these startup companies next let's talk about the different tools that you'll likely encounter when you are working with projects in this to different languages when you are working on any significantly sized projects obviously you are not going to reinvent the wheel and just build everything from scratch in-house so you're going to put in external third-party libraries pretty quickly into your project with that a solid dependency manager becomes a must in order to streamline your day-to-day workflow when it comes to dependency management go modules is obviously the native tool provided by the go team I understand that this area can be quite a confusing to go beginners especially since ago has gone through many iterations when it comes to package management if that's you make sure to check out my other video where I talked about the chaotic history of a package Management in goal but fortunately that's all sorted out in a package Management in go is very very straightforward at this point all you need is a couple who go mod commands a go mod in it to initialize your project and go get in order to put in whatever dependency you so desire on the contrary for Java in my opinion it's not nearly as straightforward first of all there is not a single standardized tool for dependency management when you are working with a Java project there are quite a few popular options like a maven or Gradle first of all these tools themselves aren't the most straightforward to pick up there may be different versions or flavors that the project that you are working on specifically is using additionally even if you've gotten familiar and alone there's a package management tool it's very likely that the next company that you work for uses a completely different one if a switch my Java positions previously and each one of the transitions require me to learn a completely new dependency management tool voice yet unfortunately this applies similarly to other tools for Java projects other than dependency managers additionally since Java is a much older language many of these projects have stuck with older versions or even deprecated versions of these tools as a result you either remain acquired in your team and keep it developing with these old and clunky code base or be a little bit more ballsy and spend the next three months coming up with arguments to convince your manager and your higher ups to upgrade the versions of these tools and that is a huge uphill battle that I personally don't see the value in fighting first of all this type of worker typically does not provide too much business value so it's really hard to convince your product manager your manager or higher ups to actually give you the resources to make this upgrades that's it if you think Native It Go tools like a gold modules are hard it's probably because you haven't tried the Java equivalent next let's talk about it the build and deployment ecosystem now faster compilation time is one of the biggest selling points over the goal programming language and it remains it to be the priority when the gold team is deciding whether they want to adapt to some new feature requests on the contrary Java is a compilation time has pretty much become a meme at this point whether when I was an Android developer or later a backend a developer I've always struggled in a complaint about Java's Builder process and how slow it is also with a go there's no more needed to mess with the different jar files and there's no more jvm compatibility issues or dealing with other jvml languages like kotlin or Scala within the same code base in go a simple goal mobile the command Applause at the targeted Builder platform is all you need and everything else is taken care of for you automatically in my opinion it goes about the ego system is much simpler and much easier to navigate next let's talk about an attribute that I've personally enjoyed very much with go and that is the language is a quite opinionated when it comes to syntax and a coding style in general I consider myself as a developer that doesn't really care so much about the following one specific syntax a style or coding style now of course I do have my personal preferences from a time to time however I don't really care so much as long as everyone in the team that I'm working with that is working on the same project the same code base it can follow some basic uh unified style having an entire team of Engineers arguing over some coding style is one of the best ways to waste the time and resources of a development team with the native tour gold place all you need is a pressing Ctrl s or commanders to save your go files and everything is taken care of a nicely formatted for you additionally this is quite helpful for absolute to go beginners since it no longer requires you to fully understand some of these random and best practices which may overwhelm you as an absolute beginner and so that you can just focus on the basic syntax at least in the very beginning of your goal Learning Journey also if you eventually want to get a slightly fancier you can look into some of the popular lensena libraries out there as well now of course go is not a perfect programming language at least not yet so let's talk about a couple of things that I don't feel so hard about go the very first thing that I have to admit is a dependency injection is a kind of a confusing in ghost ecosystem when you are starting a Java project and you want to use a dependency injection in a framework if you go on a stack Overflow it's not difficult at all to find answers along the lines of oh you can just use a swing or you can just use a Google juice at the end of the day you can't already go wrong with any of these a popular and battle tested Frameworks however when it comes to dependency injection in go there aren't any strictly idiomatic tools out there the consensus it seems to prefer doing everything in Native go however there aren't any Official Guidelines or notes by the go team are pushing us towards the other direction voice yes there is a contradicting dependency in section A framework named wire developed by your guess data Google which is the company that started and maintains the goal of programming language project as a result now we have to fight our ways through other engineers in the organizations that we work at individually and end up using something that no one really feels too good about at the end the second dilemma a lot of Lego developers find themselves in is navigating through all of these unidematic but somehow still popular Frameworks such as the Weber framework fiber using fast HTTP instead of the Native net hdb package and the testing of framework testify using a sort even though the go team has explicitly suggested exploring other patterns for unit testing that said Frameworks and libraries are generally much more exciting in go than in Java there are constantly new tools being built in and forego even though a lot of the go best practices are being established on the fly so these are some of the factors that I can think of that would directly affect a developer's day-to-day tasks which companies especially startup companies may take into account when deciding whether they should migrate from a Java to go what do you think do you agree or disagree with any of the points that I've bought up in today's video let me know in the comment section down below at the end of the day Java isn't going anywhere but go is where the future is headed before you go make sure to get your free golang cheat sheet at golang dojo.com cheat sheet like a comment and subscribe to the channel and I'll see you ninjas in the very next video foreign [Music]
Info
Channel: Golang Dojo
Views: 35,574
Rating: undefined out of 5
Keywords: golang, learn golang, go lang, go language, golang tutorial, go programming, golang for beginners, golang 2022
Id: dfyaTa0bSNE
Channel Id: undefined
Length: 12min 5sec (725 seconds)
Published: Sun Feb 19 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.