As per multiple researches, Golang is getting lots of popularity in startups and enterprises both. For CTO or CIO, it is very important to choose a technology which is scalable and can help in longer run. Each programming language has their own pros and cons, the choice of programming languag totally depends on specific purpose and needs.
Here are top 6 benefits of using Golang for your product development needs:
1) Verified Credentials
Golang adoption is everywhere, be it small startup to any large enterprise. I believe, companies like YouTube, Facebook, Docker and Twitter do lots of research before implementing any technology in their eco system. All of them are using Golang which clearly says that market leaders trust it.
2) Its Open Source Benefit
With the help of open source community, programming languages become more efficient, better and cleaner. Golang being an open source programming language is getting better every day. This means, it will last for many years and could be good choice for your engineering team.
3) Easy to Learn
The core founding team of Golang including Robert Griesemer, Ken Thompson & Rob Pike made sure that it should be very easy to learn. The syntax, packages modules are very simple yet efficient. Many developers are learning Golang on their own without any classroom training and certainly getting better jobs and reputation in market.
4) Garbage Collection
Golang has very powerful and efficient Garbage Collector feature. It increase performance and protect leakage of memory. Also, it is very fast and sometime developer might not realize that there is Garbage Collector thread however its performance is awesome.
5) Inbuilt Testing Frameworks
Selecting different testing frameworks for different programming languages is always a tough job for the team. For other languages, testing team is required to learn multiple testing frameworks or we should have multiple test engineers with knowledge on specific testing frameworks. GO comes with inbuilt testing tools, which are very simple and designed to improve performance. These tools can be used multiple type of testing and profiling.
This is known to be one of the best benefits of using Golang programming. Most of the programming languages don’t provide concurrency as it is available in Golang. With this feature, multiple processes can run simultaneously without compromising the speed.
Along with multiple advantages, as other languages Go also have few limitations as well however Golang’s core team and open source community is working towards making Golang, a language of future.
The most difficult task for any CIO or CTO is to choose a technology with suits their customer’s need. It also depends on previous experience of leadership technology team with any specific programming language. The most common factors are:
Nature of business
Implementation time & efforts
and many more….
I have been receiving many queries about choosing one programming languages out of Golang, Node.js and Python. Again, it would be very difficult to suggest single technology for all kind of business needs and situation so I thought of listing pros and cons of all 3 technologies.
Golang advantages and limitations:Advantages:
Certbot is an open-source command line tool that is used for getting certificates for self-hosted servers that are not already given HTTPS by their providers. Developed by Electronic Frontier Foundation (EFF), Certbot can help switch an existing HTTP website to HTTPS and renew the HTTPS certificate as required.
Certbot can be used with a server, whether on-premise or cloud-based if it meets the following conditions:
The server has a command line tool
It has an HTTP website online and an open port 80
It is a dedicated server/ virtual server/ cloud-hosted with SSH and sudo ability
This blog briefs the steps required to install and run Certbot for servers that run Ubuntu or Amazon Linux images.
Certbot on Ubuntu
Running Ubuntu > 18.04 with sudo privileges
Apache server or domain name pointed at your server
Port 80 and 443 are unused; if already used by the webserver service, then try to use Certbot webroot installation
Step 1 Ubuntu recommends using snap packages for installation
sudo snap install core; sudo snap refresh coreStep 2 Delete any previous version of Certbot in the system
sudo apt remove certbotStep 3 Install the Certbot
sudo snap install --classic certbotStep 4 Link the Certbot command from the snap install directory to your path
sudo ln -s /snap/bin/certbot /usr/bin/certbotStep 5 Allow 443 port
sudo ufw allow 443Step 6 Run Certbot to get certificates for different servers
sudo certbot certonly --standalone -d sudo certbot --apachesudo certbot --nginxsudo certbot certonly --webrootStep 7 Configure the application
sudo ls /etc/letsencrypt/live/your_domain
Note: Creating an EC2 instance is not in the scope of this document. Please refer to this link.
SSH INTO EC2 INSTANCE
Step 1ssh -i [email protected]
Click Connect to login into your instance
sudo wget -r --no-parent -A 'epel-release-*.rpm'https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/Step 2sudo rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpmStep 3sudo yum-config-manager --enable epel*sudo yum repolist allStep 4 Edit the apache config file/etc/httpd/conf/httpd.conf. Locate the “Listen 80” directive and add the specific domain and subdomain details.
Step 5 Save and restart Apache
sudo systemctl restart httpd
INSTALL AND RUN CERTBOT
Step 1 Install Amazon extras repo for epel
sudo amazon-linux-extras install epel -yStep 2 Install Certbot packages and dependencies
sudo yum install -y certbot python2-certbot-apacheStep 3 Run Certbot
sudo certbotStep 4 Enter the admin email address for Certbot communication
I wanted to bust some myths about what it means to be in a leadership position. When we move up the proverbial corporate ladder the actual view is very different from what we had expected from this vantage position
EXPECTATION 1“I’m the boss”REALITY 1“You’re a leader”
Quite literally the verb “to boss” means “give (someone) orders in a domineering manner”.
Whereas “to lead” is defined as “show (someone or something) the way to a destination by going in front of or beside them”
I think the difference in your expectation vs reality is quite evident in the definition itself. No one likes a bossy persona, but everyone follows a leader. Remember the position of leader might not automatically confer respect on you. You need to earn it yourself.
Being a leader doesn’t mean giving orders and supervising. It means taking control, showing initiative and leading by example. If you want your team to succeed follow Peter Drucker’s Law of Organized Performance: The ratio of a leader’s performance to those on his or her team remains constant. i.e. if you want to improve the performance of your team, you must first improve your own performance.
Let me quote E.M Kelly in saying:
“Remember the difference between a boss and a leader; a boss says “Go!”- a leader says “Let’s go!”
EXPECTATION 2:“Everyone has to listen to me”REALITY 2:“You have to listen to everyone”
And when I say this it means you have to make time for everyone on your team, understand their point of view and counsel them when needed.
What make a good leader an exceptional one is the ability to listen. This means creating a safe environment, showing empathy, encouraging proactivity, problem-solving and most importantly maintaining a sense of humor. According to Peter F. Drucker emotional intelligence accounts for 80-90 percent of the difference between average and outstanding leaders and is twice as important as IQ. When you can show your team that your door is open, that you stand with them and that you don’t take yourself too seriously it keeps them positive, motivated and stress free.
EXPECTATION 3:“I know it all, and I have all the right answers”REALITY 3:“Everyone has limitations, and no one has all the right answers”
Yes, if you have been selected to lead a team it is probably because you possess skills required to lead but a word of caution: Just because you now lead a team doesn’t mean you always know the right answer or the best way to do something. Remember #2 listening is important. To be a good leader first understand your limitations. Second, learn to recognize strengths in others. Third, learn to accept when you are wrong. Fourth, create an atmosphere of synergy and collaboration where the sum of the whole is greater than the individual parts
(☺ I know this last inequation is driving all you engineers nuts)
EXPECTATION 4:“I will get all the glory for the team’s success”REALITY 4:“The glory belongs to the team. The failures are yours to own”
A wonderful example I read was about warfare: If an army loses a battle it isn’t the fault of a single or bunch of soldiers. It is usually because of wrong strategical decisions taken by the commanders. However, when they win it is because each and every soldier performed courageously under good command.
As a leader, you need to know that a successful project is because of the team’s efforts and as such you should always give the credit to them. In fact, taking credit is selfish and can alienate your team.
When it comes to a failure instead of looking for someone to blame, you must hold yourself accountable, analyze what could’ve been done differently and take it as an opportunity to learn and adapt. Blaming team members is discouraging and demotivating
EXPECTATION 5:“I’m already amazing at my work. Now I can relax”REALITY 5:“It is now your responsibility to constantly improve and evolve”
A leader uses every opportunity to grow. Know what you are truly exceptional at and continue to hone those skills. Take the time out to acquire new skills, build on your strengths and realize that beyond technical competencies lies a whole world of soft skills that can further your growth and make you an invaluable member of the team. Read, do research, develop new concepts, plan and dream. We all have the same number of hours in a day, to grow as a leader you must make the most of the time you have. Yes, you will be busier than ever, multitask effectively and prioritize to manage your time better. But never ever stop learning and growing.
In conclusion, I will use a quote from my favorite guide on leadership and management
“A leader is best when people barely know he exists, not so good when people obey and acclaim him, worse when they despise him. But of a good leader who talks little when his work is done, his aim fulfilled, they will say: We did it ourselves.” – Lao-Tzu