GO meets TESLA

GO — The TESLA Of Programming World

Vinodh Nagarajaiah
Globant
Published in
10 min readNov 27, 2020

--

Disclaimer: The content of this article are for entertainment and informative purposes only. I strongly urge the readers not to rely on it for professional decision making. The opinions expressed here are those of the author's and in no way represent the opinions, ideas, ideologies or point of view of any organisation the author is affiliated to.

Sipping through my morning coffee, introspecting my daughter‘s growth on her 10ᵗʰ month monthiversary (something of a new FAD 🥰), an article on GO finally embracing Generics followed by the news of TESLA finally

Cheers with coffee smiley
Image Source: http://www.symbols-n-emoticons.com

planning to make it to India (My home country) in 2021 triggered a strange thought: If GO and TESLA are the new epitome of ‘how not being bogged down and thinking ahead in the future’ can indeed be rewarding. How a newborn child which retains the complex anatomical bodily structure of its parents’ species, grows and develops a character and an attitude of its own. Here goes my take on why, how, and what makes me feel GO is indeed the TESLA among programming languages.

The dawning and growth of TESLA in the automotive world and GO in the programming world are eerily similar,

  • Both were born to break the shackles of an already understood way of doing things in their respective domains and come up with a new, efficient approach to accomplish the same things
  • Both took on the already established giants and going by their respective growth charts, seem to be on course to win the battle
  • Both aimed and accomplished to retain the good parts of their respective domain and improve upon the hard bits
  • Both are set to be the future in their respective empires
Box opening into a box gif
Image Source: https://giphy.com/

NNASCENCE (a.k.a Inception): Contrary to popular belief, it was General Motors and not Tesla that produced the world’s first mass-produced electric vehicle titled the EV1. This car was sold only through lease and after some years in production, GM recalled all the EV1 cars and destroyed them!!! This triggered Martin Eberhard and Marc Tarpenning to start TESLA (initially TESLA Motors) to challenge big car manufacturers and lead the way into a zero-emission mode of transportation.

Before GO, Developers at Google faced concerns with compile-time, maintainability of the code which directly affected productivity. Also, there was a need for a programming language with better concurrency support to harness the multi-core processors’ capability. and at the same time be easier to learn, simple to implement with less programming clutter. It was a time when Google predominantly made use of C++ and any issue or a minor modification in the code would take more than a day’s effort. Another drawback of C++ was related to its memory management model: allocation and de-allocation of the memory aren’t dynamic and if the programmer fails to handle the same, it would lead to memory clogging causing the application to slow down and eventually crashing it. In the pre-GO era, at the start of the project, there was a need to choose the programming language to use: Use Python for simplicity thereby give-up on memory, CPU management, and portability or embrace java for its garbage collection, memory management, portability at the cost of simplicity in implementation or any other language like C++ with complicated memory management model and absence of an in-built garbage collection. Enter GO: A simple, easy to learn programming language developed by Rob Pike with an in-built garbage collector (far simpler than the one in Java), possessing a compile-time which would leave Java gasping for air and support concurrent programming. The compilation time of GO and C++ is roughly the same however, the former has dynamic memory management as a major advantage.

Upon closer inspection, it can be noted that both TESLA and GO owe their inception to an opportunity that presented itself. An opportunity that triggered its respective creators to develop an approach that tries to answer the ‘then’ current drawbacks in their respective domains.

Own image in mirror gif
Image Source: https://giphy.com/

SSELF-RELIANT (a.k.a Self-Sustaining): The most important component of an electric vehicle is the battery and the one for a programming language is a software called the compiler. Elon Musk of TESLA recently announced that they would be developing ‘tabless’ batteries which would help provide a better driving range for their vehicles. Major news, TESLA will be producing these batteries in-house.

Why didn’t TESLA start with having an in-house battery manufacturing unit? There is no concrete reason but TESLA prioritised getting their expertise in vehicle building right before venturing to an in-house battery production plan for their vehicles.

GO compiler is a curious case of a ‘language implementing itself’. Until version GO v1.4, Go-Compiler was written in C and later on was replaced with the one written in GO!!!

This provided major advantages: a couple of them being there was now better control on compiler as GO being simpler would make debugging compiler issues, faster and easier. Furthermore, GO has awesome in-built support for unit-testing and profiling.

Further read: For the more curious among you, provided below the link for a resource which explains the motivation behind making a change in the go-compilerhttps://docs.google.com/document/d/1P3BLR31VA8cvLJLfMibSuTdwTuF7WWLux71CYD0eeD8/edit
Innovation bulb gif
Image Source: https://giphy.com/

IINNOVATION: Innovation has always been the need of the hour when it comes to succeeding in the current competitive, crowded world. Both TESLA and GO embraced the disruptive innovation approach. Being disruptive doesn’t mean that the new entrant has to challenge/modify/change every aspect of the already established way of accomplishing tasks, but take a different, better, simpler, and often more efficient way to accomplish the things in line with the current trend.

As per wikipedia, a disruptive innovation is an innovation that creates a new market and value network and eventually disrupts an existing market and value network, displacing established market-leading firms, products, and alliances.

TESLA entered the automobile manufacturing market dominated by gasoline-powered vehicles via a near non-existent electric vehicle manufacturing proposal. Retaining the tried and tested aerodynamic design of the vehicle, TESLA revolutionized the way these vehicles propel themselves. Approximately 12 years since their first vehicle, TESLA has taken the battle to the doorsteps of the already established, far older automobile manufacturers threatening their existence unless they too innovate. TESLA is at the helm of the future of transportation: Zero-emission, renewable energy source powered vehicles.

GO was built upon proven advantages of existing programming languages i.e., C, Pascal, and Oberon programming languages. The biggest demon faced by GO is what is termed as the most complicated of requirements: Being simple and minimalistic. C is already simple however GO takes simplicity to an even higher level. GO has been well appreciated for its simplicity in learning and implementation as well as following a minimalistic approach towards achieving complex programming concepts like concurrency. Initially GO was conceived to address internal programming hurdles at Google. Even though technical advancements meant that multi-core processors became the norm from 2006, there existed no programming language that could harness this processing prowess to the fullest and in turn, lead to faster and better execution times for the code along with effective utilization of the underlying hardware and software infrastructure.

The disruptive approach reflects in how GO handles certain programming paradigms. GO allows for OOP-styled syntaxes but is not actually an Object Oriented Language! It has types, methods just like other OO languages but lacks type hierarchy. GO’s take on inheritance concept is a straight departure from how other OO languages like JAVA pursue it to be. Unlike JAVA wherein an explicit declaration of two classes being related is necessary, GO calculates the type dependency implicitly based on certain well laid criterias.

Despite entering the already crowded programming language world, GO in a short span of approximately 12 years, has caused a huge stir and is arguably one of the most loved, used, and fast-growing programming languages. As per current market reports, GO is a threat to the behemoth among languages: JAVA and is widely regarded as the programming language of the future.

Plant growth gif
Image Source: https://www.wix.com/

GGROWTH: An unknown entity when founded in 2003, to release its first product in 2008 to the current 2020, TESLA as of July 2020 has grown to be the most valuable carmaker in the world by overtaking Toyota. Such is the disruption caused by the innovative TESLA that it can very well be the most valuable company in the world (as per market capitalization) displacing APPLE. TESLA is widely regarded as a company that is at least a decade ahead of other carmakers!!!

Cross-Platform GO language is one of the fastest-growing programming languages on Github along with Google’s very own DART. It is the 4th most popular language on GitHub as of the 3rd Quarter of 2020.

HackerEarth image showing the language working professionals want to learn
Image Credit: HackerEarth

It’s the 5th most beloved language on StackOverflow as per the StackOverflow developer survey, 2020. The growth of GO is no fluke and is not just hype especially when you consider that applications like Docker, Kubernetes, Terraform were completely written in GO. GO is also on top of the list of programming languages that the working professionals want to learn in 2020. With GO 2.0, GO is gunning to be the most preferred language for enterprise software development displacing the long-time king, JAVA.

Mindset gif
Image Source: https://basseyblogs.blogspot.com/

UUSER MINDSET: Most of TESLA’s users migrate from gasoline-powered vehicles and to acquaint themselves with their new vehicle the users need to undergo a big mindset change. Users need to understand that it's not the oil level and coolant level that they need to keep track of but the battery charge level. Users also need to understand the charging cycles and the effects of improper charging techniques.

For GO, the users here are the developers and the ones who decide to move ahead with their project implementation in GO. The developers need to specifically understand the project needs and the advantages as well as the limitations associated with GO. Developers more often than not start with GO due to the euphoria of it being ‘THE’ programming language of the current times often neglecting its limitations. A simple concept like generics and type hierarchy can as well be a make or break in using or not using GO for project development.

Support gif
Image Source: https://giphy.com/

SSUPPORT: Concerning TESLA, the support challenge is major with Infrastructure, specifically charging infrastructure. This might not be a big hurdle in their home country i.e., the USA but if TESLA is to expand to countries like India then it needs to work along with the local governing body to develop the necessary infrastructure to sustain electric vehicle mobility.

Concerning GO, the biggest hurdle is to have a tech community that supports users. This is an area where established languages like JAVA trumps GO easily and very convincingly. JAVA enjoys one of the biggest community support. A growing language like GO definitely needs to build a strong, skilled tech community which in turn will not only help GO grow as a language but also help in its improvement.

Sustainability gif
Image Source: https://tenor.com/

SSUSTAINABILITY: TESLA after having built a behemoth brand of itself has a challenging endeavour in sustaining it by offering the best customer support during sales as well as service. Also, with its ambitious plan of catering to the masses with their new offerings, it needs to be seen if they can sustain the same high levels of quality control during production.

GO has far bigger sustainability concerns than TESLA here. Even though built around the principle of being minimalistic and simple, GO v2.0 is on track to introduce generics. Going ahead, its creators need to make sure that the inclusion of newer features, concepts, and improvements do not deviate from their vision and do not end up being a concept heavy language that JAVA is as of today. Early adopters of JAVA might as well inform that it too started as being minimal but over the course of time turned heavy. GO should avoid going down that path.

All points considered, it might as well now be clear that the same innovative yet tough path TESLA took to achieve its success holds true for GO as well. The difficulties in their respective domains might be different in nature but affect them on similar principle lines.

Thanks for reading. Mash away at the 👏 button to help spread the love & show your appreciation.

😇 Click on the image below to know more about me 😇

Hyperlink for Vinodh’s LinkedIn profile

--

--