hey welcome back to another episode of
the tech lead this is another episode of
the tech lead I am the tech lead and I
am the tech lead this is coffee time
with the tech lead and this is Sunny the
Dog
why don't we talk about which
programming language you should learn
for example let's pretend that you're
currently programming in Python and now
you're thinking maybe it's time to add a
new language to the tech stack you know
maybe Ruby on Rails is looking pretty
cool maybe closure seems pretty neat
let's just add those over let's add
Scala Haskell and throw in erlane and
elixir too why not and you know what
personally for me since I've been
learning Japanese we're going to throw
Japanese in too I think it'd be pretty
neat to just start programming in
Japanese I find that very aesthetic very
useful for myself and it'd be pretty
neat too all the comments will be in
Japanese and anybody who wants to
contribute to that portion of the code
base it's gonna have to program in
Japanese I might also throw in some
Chinese Spanish and French and we can
start programming in that too I'm sure
some developers would really enjoy these
languages and we may even get some
communities like we may be able to build
up a Latin programming language group
and everybody there would just be very
enthusiastic Latin programmers they'd be
program timing and Pig Latin or
something like that this video by the
way is sponsored by myself now I know a
lot of you guys think that this is a
joke that is not real this is real okay
Tech lead season 1 HD complete 1995 it's
a real offer you can go buy it purchase
it right now amazing value tons of
videos tons of great content gonna save
you a lot of money a lot of the time I
don't know why nobody has bought this
yet people think it's a joke people
think I'm a joke none of this is a joke
okay you want to get there you want to
take out your wallet pick up your credit
card and go buy my stuff right now do it
now and I will wait for you to do it
because we're not even going to continue
this video until you finish your
purchase so I would just sit here and I
will wait
and if you don't want to pay then you
can just stop watching this video right
now you don't need to continue you can
just go now okay but if you want to
continue watching this video then what
you want to do is press the pause button
right now and take out your credit card
and finish the purchase buy my stuff and
then you can unpause the video and I
will wait for you to do that
anyway look I was just joking about that
I'm not going to wait and you don't need
to stop the video right now go ahead and
watch the rest of this video I need to
get my monetized ad view so let's get
that done at least anyway this isn't a
joke go ahead purchase my stuff just do
it do it now
on with the show you know a lot of times
I see developers motivated by the wrong
things and their priorities are
completely messed up they're gonna go
and say that they want to start
programming in lisp because they think
it's very clean beautiful functional
language they think that programming
languages should be declarative instead
of imperative they're going to start
adding this whole new programming
Paradigm into the mix and some
programmers are going to be motivated by
puzzles challenges they want to learn
new things they want to hop on the new
bandwagon maybe they're already
programming in Objective C then Swift
comes out everyone thinks Swift is cool
they're going to start adding Swift into
the mix they want to learn that they
think it's neat and that's really not
the right way to go about this thing you
want to do everything in your power to
avoid adding new programming languages
to your mix to avoid adding new
programming paradigms because that's
just going to add a bunch more
complexity that you don't need if you
really must add a new language to your
Tech stack it should be for a clear
business need not simply because it's
some syntactic sugar you kind of like
how it looks a little bit better it
seems a little bit neater maybe it's a
little hyped up maybe you're a little
curious maybe you feel that since you're
the developer it should be up to you
your choice to implement it however you
choose I know a lot of people won't say
to developers that the developer has the
freedom to implement their code however
way they like and they have the freedom
to choose their Technologies I would say
no you don't have the freedom to use any
technology you want and if you do want
to introduce a brand new technology you
better write up a really good business
need now let me explain why the first
thing is about developer ramp up you
want to make sure that everybody in your
team now or in the potential future can
easily contribute to any part of your
code base full stack if at all possible
if you have a certain portion of the
code base that is written in some
obscure strange crazy language that only
one guy on your team really knows how to
do then that's just going to cause a
whole bunch of maintainability issues
further down in the future for example
if you're to look at companies like
Twitter Yammer or LinkedIn they were
using scholar just because it seemed
like a cool hot thing at the time now
they've been pulling back on Scala and
getting rid of that and converting it
back to just standards Java simply
because there's a lot of overhead and
having this additional language
everybody needs to learn it you got to
hire specific people to do it other
people can't contribute to that portion
of the code all the tooling the linters
the editors everything is going to be
different I think that if you were to
examine a lot of these languages that
only add syntactic sugar but don't add
anything additional beyond that a lot of
these languages didn't do very well if
you look at for example coffeescript
which compiled down into JavaScript and
it essentially just made JavaScript a
little bit prettier a little bit nicer
to write there was no real additional
business need for this thing
coffeescript eventually died out because
everybody already knows standard vanilla
JavaScript and then you want to tell
people that they have to learn this
additional framework this additional
language on top of that it's just going
to be harder to get people to use that
and either way you're probably going to
be using standard JavaScript in other
places in your code same goes for of
paradigms sometimes I'll see people
programming inside Java and then Java is
a very imperative programming language
and then they say they want to add in a
new functional language like say closure
on top of that and what you really get
is you just get the words of Both Worlds
where you have both imperative and
functional programming in there at the
same time and then you fragment your
developers such that some people only
know how to write closure code which
runs on Java some people only know how
to write the original Java code you've
got two different paradigms in your code
base I'm not a big fan of functional
programming because the world is
imperative humans don't think in a
functional way humans think in an
imperative way functional programming is
if you were to say that in order to make
coffee you first take a cup and a liquid
mixture in order to make the liquid
mixture then you would have to add
powder and water so you break it down
from a top-down perspective imperative
programming is to say that if you wanted
to make a cup of coffee you first take
the mix mix it with harder then add it
to a cup it's a set of directions a set
of commands to create like a cup of
coffee and that's really how humans
operate the other thing about functional
programming is they don't like
mutability so for example if I wanted to
drink this cup of coffee in a functional
manner I would not actually decrease the
amount of liquid in here I would
actually first copy this entire cup and
then have it created with a less amount
of liquid and I will call that a cup of
coffee that has been drunk you know
humans just don't really operate in that
way I think there's a lot of great
things about functional programming I
think immutability works great in many
scenarios but generally you just have
sort of the words of Both Worlds now
where you have two different ways to
write two different pieces of code it's
not really clear how or why you would
use one over the other it's kind of
personal preference and there's just a
lot of weak reasons about why you're
doing this so what is this really about
it's really about capabilities now if
you take a look at Ruby on Rails the
only reason people really use Ruby on
Rails was it wasn't because Ruby was a
great language I mean it's okay but it
was really about rails there was this
nice framework rails that helped create
simple web applications and that was why
people wanted it very few people just
decided to use Ruby without rails
because if you're going to do that you
might as well use Python and sure I see
a lot of people trying to compare say
Ruby syntax with python syntax and
saying well I like this part better I
like that part better these are all very
weak reasons do you know why people use
JavaScript it's because it's the only
programming language that will run on
the web browser similarly if we were to
take a look at this language Elixir yeah
I think the reason Elixir has been
popular in the past is because it was
one of the few languages that was really
capable of doing concurrent real-time
Communications like you could build a
chat server with this you couldn't
really use python or PHP to do it
because these had very expensive
heavyweight connections they couldn't
hold on to many connections at the same
time they couldn't scale properly that's
why people had to abandon python or PHP
to go into these other languages that
could do real-time Communications like
node.js elixir golang I can tell you
that if people could build real-time
chat Communications using python or PHP
they would have done it it wasn't simply
because Elixir had nice beautiful
functional syntax or something like that
and these days I might say that hey if a
large part of your technology your
backend is probably going to be in say
python or PHP or Ruby on Rails or
something like that even say JavaScript
these are all imperative languages why
do you want to go and mix in a
functional language into your whole text
stack that's going to create at least
some friction for people to switch their
mindsets into doing logic in a reversed
way that's why I might recommend to look
into say golang golang I think has been
gaining popularity quickly and has
superseded these other languages because
it's able to support real-time
microservices and do so in an imperative
manner Banner so I think the main
message I wanted to get across for you
guys here is that you really want to
avoid adding tons of random languages
especially if it's a hype driven
language you know anytime you think
about doing this just think about well
why don't we just add
a new programming language in Arabic or
German or Japanese or Chinese or
whatever simply because some guy thinks
it's cool some guy thinks it's
interesting because I'm sure there's
somebody who really thinks programming
in Arabic is awesome and I'm sure he's
going to appreciate it because he speaks
Arabic fluently don't add new languages
to your Tech stack minimize them if at
all possible but that's not to say you
shouldn't be curious about them learn
them in your spare time have fun with
them but it's really not so much about
the syntax look at the new capabilities
and business needs the functionality
that these languages may add for you
that'll do for me if you enjoyed the
video give it a like And subscribe and
I'll see you next time bye