00:00:00
Welcome everyone to this panel discussion.
00:00:30
To start off, let’s introduce our panel members. First up is Chad Fowler, the author of "The Passionate Programmer".
00:00:40
Chad has been a Rubyist for a long time and is one of the original members of the Ruby community.
00:00:51
Next, we have Yogi Kulkarni, who is a principal architect at Flipkart. He has experience working with substantial Ruby implementations and supply chain solutions.
00:01:08
Our next panelist is Baishampayan Ghose, a polyglot programmer and the CTO of HelpShift, a startup based in Pune.
00:01:23
Last but not least, we have Venkat Subramaniam, CEO of MVC Sharper.
00:01:30
He is well-versed in Ruby, having programmed with it for over ten years.
00:01:46
Let's kick off the panel by discussing our current primary languages and the reasons behind our choices.
00:02:01
Yogi, perhaps you can go first.
00:02:14
My primary language is Ruby. We've been using Ruby for the past six or seven years, mainly for larger-scale products, while also incorporating Java when necessary.
00:02:31
We leverage established Java libraries that don't have Ruby equivalents to maximize efficiency.
00:02:46
For instance, using the Jasper Reports library is vital as it provides functionalities we need without reimplementation.
00:03:07
As for my team, we primarily use Clojure as our main programming language. We've been deploying Clojure since late 2008.
00:03:23
Clojure's benefits come from its immutability and treating data as a primary construct for computations.
00:03:40
Also, since it runs on the JVM, we leverage the Java ecosystem effectively while maintaining a functional paradigm.
00:03:55
Simultaneously, we incorporate other languages like Erlang and Go whenever necessary.
00:04:07
There are scenarios where Clojure isn't the best option, such as quick utility scripts on macOS.
00:04:25
For efficient startup times for small utilities, using something like ClojureScript or Node.js might be more appropriate.
00:04:44
Thus, we embrace multiple languages to suit our specific needs and performance considerations.
00:05:01
Chad, what about you? What is your language of choice?
00:05:20
Honestly, I find it challenging to pick just one, but if I had to choose, it would be anything except Ruby.
00:05:35
I remember in 2007 at the Mountain West Ruby Conference, I expressed my worries about being too closely identified with Ruby.
00:05:54
Even though I've worked extensively with Ruby, I'm cautious about being defined solely by one programming language.
00:06:13
Currently, I enjoy using Clojure, Scala, Java, and Erlang in my work.
00:06:30
I plan to delve into Objective-C as well, even on the server side, purely for the sake of experimentation.
00:06:48
It's crucial to combat the risk of rigidity in our skill sets—no one should feel boxed in by a single language.
00:07:07
Switching to new languages is often about embracing flexibility and broader programming perspectives.
00:07:26
Learning new languages, even if they seem unrelated, can greatly enrich our understanding of programming as a whole.
00:07:42
I see the value in learning new things and integrating the best concepts from each language into my work.
00:08:00
Baishampayan, could you share your thoughts on how learning multiple programming languages influences your work?
00:08:18
Certainly! I advocate using Ruby for rapid prototyping due to its concise syntax, which allows quick translation of thoughts into code.
00:08:30
Over the years, I've transitioned from being a language enthusiast to someone who values functionality and ecosystem maturity more.
00:08:47
Programming languages should not overshadow the importance of tools, libraries, and the overall software ecosystem.
00:09:05
It's vital to recognize that regardless of the language, having the right tools makes a significant difference.
00:09:20
As a programmer, I strive to create efficient systems that allow the best practices of any language to be leveraged.
00:09:37
For instance, I learned valuable concepts from Haskell that improved my code quality in Ruby.
00:09:49
Functional programming concepts, even when learned through one language, can lead to better practices in others.
00:10:06
Now, what do the rest of you think about the significance of programming languages versus their libraries?
00:10:19
Are programming languages successful because of their libraries or other factors?
00:10:34
I believe libraries play a crucial role in the success of any language. For example, Ruby gained popularity due to the emergence of Rails.
00:10:48
Many languages thrive because of their ability to respond swiftly to evolving community needs through extensive libraries.
00:11:03
As a language matures, its libraries should keep pace with innovation, ensuring continued relevance and growth.
00:11:16
This brings us to how concepts and paradigms from one language can influence others, enhancing overall design and architecture.
00:11:33
What specific concepts do you see crossing over from one language to another?
00:11:50
The way Clojure emphasizes immutability and data management is inspiring Ruby to adopt similar paradigms.
00:12:05
This flexibility leads to enhanced coding practices and the evolution of language capabilities.
00:12:22
We should strive to embrace the strengths of each language while ensuring our own understanding deepens.
00:12:35
Utilizing innovative concepts can often lead to more efficient coding approaches across different languages.
00:12:52
Could we touch on how cultural aspects influence the adoption of new programming languages?
00:13:07
Cultural norms in the tech community dictate how receptive developers are to new languages and methodologies.
00:13:23
Frequently, you'll see trends arise within a community that either facilitate or hinder the exploration of new languages.
00:13:36
In environments that embrace change, developers are more likely to experiment with new technologies.
00:13:50
This open-mindedness allows for quicker adaptation and a diverse range of tools and techniques.
00:14:07
Conversely, organizations resistant to new ideas may restrict their developers, stifling innovation and exploration.
00:14:23
It's critical for organizations to foster an environment that encourages experimentation and learning.
00:14:36
What challenges have any of you faced while trying to introduce new languages into your teams?
00:14:52
One challenge is overcoming familiarity bias; often teams prefer to stick to what they know.
00:15:06
Convincing members to embrace a new language usually requires demonstrating significant value.
00:15:20
We need to show their current solutions are lacking and that the new language can provide improvement.
00:15:36
Another challenge could be the learning curve that comes with picking up a new language.
00:15:50
Allowing team members enough time to adjust and become proficient is crucial in ensuring success.
00:16:04
Every programming language brings new paradigms and ways of thinking, and those can take time to internalize.
00:16:20
Transitioning to polyglot programming requires a commitment to ongoing learning and understanding.
00:16:37
How do you all approach the transition towards adopting new paradigms and programming languages?
00:16:53
I advocate for focusing on projects that excite the team and drive them to learn new languages.
00:17:10
Making the experience enjoyable encourages developers to explore and adapt more seamlessly.
00:17:23
Creating a positive, initiative-driven motivation is key to making proactive learning achievable.
00:17:40
Could we discuss specific libraries or frameworks that exemplify why some languages gain traction?
00:17:56
Certainly! For instance, the React framework have significantly popularized JavaScript, boosting its usage massively.
00:18:12
The strong community surrounding certain libraries are often instrumental in generating interest in a language.
00:18:26
Widespread adoption often hinges on de facto standards emerging from library ecosystems.
00:18:41
I think this reflects how languages evolve by integrating characteristics gleaned from one another.
00:18:54
As developers, the experimentation ultimately leads to refining our craft.
00:19:07
Any concluding thoughts on the journey of programming language evolution?
00:19:20
Programming languages will continue to develop as we discover better methodologies for addressing various problems.
00:19:34
It's essential that we remain open to change and eager to adopt fresh perspectives.
00:19:50
The essence of programming lies in continuous growth, both as individuals and as a community.
00:20:06
Let’s keep learning and integrating the best of each programming language for a more resilient and adaptive future.