All posts by Navin Kabra

CORRECTION: Freeman Murray’s startup workshop is on 29th March

Sorry. We had mistakenly reported a wrong date for Freeman Murray’s hands on workshop for startups. The correct date is Sunday 29th March, 9:30am to 1:30pm. Details are here.

Seven tech events over the next 3 days

There are seven different events over the next 3 days in Pune that would be of interest to the Pune Tech community.

Today (Friday, 27th March), Gautam Patel of Battery ventures will be interacting with people looking for funding for their businesses.

Saturday features 5 events: 1. a talk by Dhananjay Nene on how to choose a programming language for your application/business, 2. a day long seminar at SIMC with various luminaries from all over India talking about the potential of the internet as a communications medium, 3. a hands on workshop by Freeman Murray on fleshing out the plan for your startup, 4. The Pune Google Technologies User Group will be discussing how to use various google technologies (like maps, searches, videos), and 5. Gamestorm – an MCCIA event to create awareness of the opportunities in the gaming and animation software industry.

On Sunday, Atul Chitnis will address the Pune Open Coffee Club (i.e. Pune’s startups) on how the world is changing, and how to cope with the changes.

For a full listing that is always kept updated, see http://punetech.com/calendar.

Reblog this post [with Zemanta]

The world is changing – how should startups cope? PoCC talk by Atul Chitnis

Atul Chitnis
Image via Wikipedia

Atul Chitnis, has been at the forefront of the software revolution in India since the 80s. He has literally seen this world change multiple times. He will address Pune’s startups on how the world is changing, again, and how to be prepared for this change. This will on Sunday, March 29, 11am to 1pm at Symbiosis Institute of Computer Studies and Research (SICSR), Model Colony. (Map)

Atul is very active in the Linux and the FOSS community, he is a successful technology trend watcher, and he is also into mobile, wireless, handheld technologies. He would be happy to address any of these topics based on the interest of the audience.

Atul is the Chief Products Officer at Geodesic (http://geodesic.com). He has been at the forefront of India’s technology evolution since the 1980s, predicting and driving new technology waves such as datacommunication, networking, the Internet, wireless and mobile computing, and Open Source, among others. A hardcore products man, his focus areas include mobile and hand-held computing, wireless data networks, Linux and Open Source and entertainment technologies – topics he frequently writes about. His popular PCQuest column, COMversations, helped bootstrap Indian users into the consumer datacomm era. Atul is well known for his work with the Free and Open Source Software (FOSS) community, and is also the founder of FOSS.IN, one of the world’s largest grassroot technology conferences. He is also a member of several Project Review and Steering Committees with the Department of Information technology (DIT), Government of India.

For more info about Atul, see http://atulchitnis.net/bio/

Reblog this post [with Zemanta]

Flesh out a detailed plan for your startup with Freeman Murray – March 29

What: 4-hour hands-on workshop on developing your startup idea
When: Sunday March 29, 9:30am – 1:30pm
Where: Seed Infotech, Nalanda building, Opposite Gandhi Lawns, Erandwane
Registration and Fees: This is a free workshop, but open only to the first twenty teams that register. (Hurry, offer open until stocks last. Only 7 slots left!)

Details:

This is a 4 hr workshop for people interested in starting their own technology business. This workshop is for small teams of 2 or 3 people who have a clear idea of an idea they would like to work on. Participants will spend 90% of their time developing this idea.

This is not a lecture, people without their own business idea will be bored.

The workshop will have several segments of 20 – 40 minutes each. I will introduce each segment in about 5 minutes. During the remaining time people will work on that particular aspect of their own idea. Each team will setup a private wiki which they will develop during the workshop.

Segments may include:

  • personal biographies of the founders
  • over view of the space
  • overview of the idea
  • technology
    • what are the high level technical requirements for products
    • what is the proposed technology stack for doing something
    • simple architecture diagram
  • financial
    • budget, financial requirements
    • cash flow projection, when where to get money
  • marketing
    • what are the important websites
    • who are the major competitors
    • who are the luminaries
    • who are the customers
    • who are potential advisors
    • who are potential partners

About the Instructor – Freeman Murray

Freeman Murray has worked in a variety of technology startups in Silicon Valley and India and will be using this experience to guide workshop participants. This summer he will be directing the iAccelerator.org program at IIMA. More information about him is available at: http://iAccelerator.org/people

Other tech events this weekend

Also, remember that there are 6 tech events competing for your attention this weekend, including Dhananjay Nene‘s talk on strengths and weaknesses of programming languages, and Atul Chitnis on How the world is changing, and what startups should do about it. For more see the PuneTech calendar.

Reblog this post [with Zemanta]

GameStorm – Opportunities in the Gaming Industry – March 28

animexampleanimexample3editWhat: A half-day event organized by MCCIA to increase awareness about the gaming and animation industry
When: Saturday, 28th March, 2pm to 8pm
Where: ICC Towers, MCCIA Hall #4 and #5, Wing A, Senapati Bapat Marg, Map
Registration and Fees: This event is free for all. No registration required.

Details:
This is an event to promote awareness of the gaming industry. According to the event organizer: “We have organized sessions on the game industry and careers, game concept and content development, sound design and game testing, amongst others. We are targeting gaming enthusiasts, professionals and parents as well as these are going to help us in spreading the awareness about the career opportunities in the industry”

For the detailed schedule, see http://www.mcciapune.com/Gamestorm09.aspx

This event is targeted towards students and professionals interested in the gaming and animation software industry.

Also, remember that there are 6 tech events competing for your attention this weekend, including Dhananjay Nene‘s talk on strengths and weaknesses of programming languages, and Atul Chitnis on How the world is changing, and what startups should do about it. For details see the PuneTech calendar.

Governance for Startups

School banner
Image via Wikipedia

Yogesh Pathak, an advisor for many startups, argues that it is very important for startup founders to clearly lay out the ethical rules that the startup is going to play by. He points out the various issues on which the founders need to make their stand clear to all concerned stakeholders.

Governance has come in spotlight again in India due to scandals like Satyam. Normally governance is talked about in the context of large companies. However governance is a fundamental quality of any institution, small or large, for-profit or nonprofit, so here’s an attempt to highlight some issues about startup governance. Basically what “ethics” is at personal level, “governance” is at an institutional level.

Founders need to agree on an ethics policy in a startup

In countries that are high on the corruption index, India included, variation in standards of ethics affect pretty much everyone in the country: industrialists, government, entrepreneurs, citizens, and so on. It is key for even a small enterprise to have an ethics policy of its own and not just react to ethical dilemmas as they arrive. Differences between ethical preferences of individuals may crop up and create periods of conflict in a startup. Some standardization of rules of engagement (and ethics) between co-founders is ideal. e.g. Being open and upfront about any conflict of interest scenarios, etc.

A hypothetical example: A startup develops a cutting edge product and takes it to emerging markets, say Africa or other countries. Many large enterprises in such countries may be owned by the government. Let’s say a sale is possible at such a customer but a bribe is asked. What if some of the founder/management time are all right about paying bribes (to build revenue scale, which is very critical for startups) while some consider it unethical. Such a situation can result in conflict and affect the overall team spirit at a startup.

Accounting policies

Most startups work in cutting-edge areas and break ground on new business models, new streams of revenues etc. Often, established definitions and norms of accounting may conflict with the context of a new market, product, or service. Such areas include

  • what are the various types of revenues, policies regarding adjustments to revenues, what is revenue for accounting purposes, etc
  • how does the company define bad debt (collections awaited from customers)
  • expense heads and related accounting policies
  • what expense items should be used when computing gross margin, operating margin, etc

At times there may be a lot of discussion between startup management, board members, auditors, etc about what norms are prudent. While being conservative is usually a safer strategy, it is also key to listen to everyone’s viewpoint and make an informed, objective decision that is fair to all stakeholders and follows the law of the land both in letter and in spirit.

Fair treatment of customers

At times, companies may get creative in their communication with customers in order to keep customers longer or maximize revenues and profits. For example, not all costs to a customer may be transparent, sometimes un-subscribing from a service may be difficult for customers to do, or sometimes customers’ confidential information with the company may be used without their consent.

Startups need to be cognizant of an average customer’s expectations on fair treatment, as well as consumer protection laws across countries, and need to build it seamlessly in their customer experience design. Again, being proactive works better than being reactive.

Fair treatment of employees

While the laws of land, best practices in HR, and a free market for labor will usually take care that employees are treated fairly, it is key for employers to consciously design ethical treatment of employees in all their HR processes.

Investor communication

Startups are always in the market to raise capital for growth and make their dreams possible. Business plans are their main communication tools with investors. It is important to convey information such that is verifiable, accurate, and generally defensible in due diligence.

Once an investment is made, investors ask for detailed financial and operating information, usually at a monthly frequency. This information is their main tool for keeping a track of the health of the business. Investors appreciate companies providing information in agreed-upon formats, data not being re-stated frequently, knowing any surprises earlier rather than later, and an easy-to-understand explanation for the business drivers behind the numbers.

While a startup board may not have lots of formal committees, VC/PE investors are usually very active on boards, and play multiple roles in terms of tracking governance, evaluating the business, and being a mentor to the management team. It is important to form governance policies with mutual discussion and then follow them in a disciplined manner.

I am sure there are more unique aspects having to do with ethics and governance depending on the nature of business of a startup (utilizing 3rd party data on the web or IP protection, are some issues that come to mind). The above is a just a starting point touching upon major areas. Entrepreneurs have a clean slate on how to develop the culture within their companies. They will be expetced to set prudent norms and then lead by example.

About the author – Yogesh Pathak

Yogesh Pathak is founder of Path Knowledge, a business research, consulting, and startup advisory firm based in Pune.

Reblog this post [with Zemanta]

Pune – The birthplace of the Nano, and the automotive capital of India

The interior of the Nano.
Image via Wikipedia

Normally, PuneTech covers mostly software technology. However, today, we feel an exception is warranted. The Tata Nano, the world’s cheapest car, which could change the world, was designed entirely in Pune. On this occassion, Amit Paranjape, a proud Punekar (and also chief evangelist of PuneTech) wrote this article on his blog, about the achievements of Pune in automotive technology. It is reproduced on PuneTech with permission.

Today, India and possibly the entire automotive world commemorate the customer launch of the ‘Nano’ – the world’s cheapest car. The brainchild of the Indian corporate legend Ratan Tata is finally available to the Indian consumer. I am sure that the Nano will raise a whole bunch of debates around urban traffic-management issues; but today is not the time for those. Today is a time for celebration!

Pune too celebrates this historic occasion; but I am not sure how many Punekars realize the significance of Pune’s role in creating this and other automotive history in India.

The Nano was completely designed and developed at the Tata Motors facility in Pimpri-Chinchwad Pune. The initial manufacturing will also be carried out here.

An Auto-rickshaw in Mumbai.
Image via Wikipedia

Here’s a brief list of Pune’s key automotive achievement over the decades. (In each of these milestones, Pune has played a pivotal role)

  • 1950s-60s: One of India’s earliest and most iconic automotive brands – Bajaj Scooter.
  • 1970s: India’s first moped (quite literally a motorized, pedal-based cycle that ran on a tiny 50cc engine) Luna.
  • 1970s: One of the first (and most successful) Auto Rickshaws: Bajaj Auto-Rickshaw.
  • 1980s: Manufacturing of India’s first automatic (non-geared) scooter: Kinetic Honda.
  • 1990s: India’s first fully indigenous car: Tata Indica.
  • 2008-09: Launch of world’s cheapest car: Tata Nano.

You can also add the development of India’s most popular Truck-Line to this list. Pune also leads the nation in various automotive suppliers, ancillary units and industrial equipment.

  • India’s biggest, one of the most innovative and world’s 2nd largest forging company – Bharat Forge has been at the forefront of this pack.
  • India’s largest Diesel Engines & Generator Manufacturer – Cummins has been active in Pune’s industrial landscape since the 1960s.

Research and Software for Automotive Engineering also have strong presence in Pune.

  • It’s no coincidence that all major global CAD/CAM software and services companies have significant presence in Pune: Ansys, AutoDesk, Catia, Geometric, PTC and UGS-Siemens. I doubt if there’s any city in the world that has the presence of all these entities! (See all PuneTech articles about Computer Aided Design at http://punetech.com/tag/CAD -ed)
  • ARAI (Automotive Research Association of India) based in Pune, is the premier automotive research institute in India, that is responsible for research and testing & certification of every vehicle model on Indian roads.

I am confident that in the coming decades, Pune will continue to innovate and be at the forefront of automotive engineering in India, and the world.

So now remember – next time you see a Nano on Pune Streets (traffic jams not withstanding), it is as ‘Puneri’ as the ‘Puneri Pagdi’ or ‘Chitale Bakarwadi’!

Reblog this post [with Zemanta]

SIMC Seminar: Cyber Media Conclave – 28th March

What: A day long seminar on issues in internet as a communications medium, with Kiruba Shankar, Atul Chitnis, Rajesh Lalwani etc.
When: Saturday, March 28, 10am to 7pm
Where: Symbiosis Knowledge Village, Lavale, Pune
Registration and Fees: This event is open to all. For details contact Hamsini +91 90110 21853, or Deepali +91 97658 97445

Details:
The Symbiosis Institute of Media & Communication (SIMC) is organising National Cyber Media Conclave ’09, a media seminar on the 28th of March, in its campus at Lavale. The event will explore various aspects of the cyber medium and its vast potential. A first of its kind initiative by any educational institution, NCMC aims to bring together stalwarts from the cyber world on a common platform where they can address enthusiastic young minds interested in cyber media.

The National Cyber Media Conclave will host two panels of speakers on the potency of cyber media for knowledge sharing, social change and networking; and the emergence of the web as a medium for branding and marketing. This would be followed by a workshop conducted by Mr. Rajesh Lalwani (Founder and CEO, Blogworks.com), and ‘Web Wunderkind’, a contest on the presentation of a business plan for the cyber medium. The winners of the contest would get cash prizes worth Rs. 15,000/-.

The following speakers are expected:
Kiruba Shankar, Co-founder, The Knowledge foundation
Namit Bhimbhat, CEO, Switch Media Services
Atul Chitnis, Senior VP, Geodesic Information Systems
Jasmeen Bhateja, Founder, www.blanknoise.com
Rajesh Lalwani, Founder and CEO, blogworks.com

See the event page for more details.

Also, remember that there are 6 tech events competing for your attention this weekend, including Dhananjay Nene‘s talk on strengths and weaknesses of programming languages, and Atul Chitnis on How the world is changing, and what startups should do about it. For details see the PuneTech calendar.

Reblog this post [with Zemanta]

TiEPune Seminar: My Story – with P.P. Chabbria, Chairman, Finolex Group – 26 March

What: TiE Pune invites you to spend time with P.P. Chabbria, who built the Rs. 3000 cr Finolex Group from the ground up. He will talk about this journey
When: Thursday, 26th March, 6pm
Where: ICC Towers, Hall #4 and #5, Wing A, Senapati Bapat Road, Map
Registration and Fees: This event is free for all to attend. Register by sending an email to namita[dot]shibad[at]gmail[dot]com

Details:
A self made man, Mr. Prahlad P Chhabria started his life as a door-to-door peddler of electrical supplies. As a child he began his professional life as a cleaner in a cloth shop and later taught himself to read and write as he worked as a bill collector. But the future as Chabbria saw it, held greater promise. He followed his dream to create India’s leading cable manufacturer. Today Finolex is a Rs3,000 crore group with diversified interests. Mr Chabbria will share his experiences, insights and trace his path from being a door-to-door salesman to the Chairman and Managing Director of Finolex.

The event is open to all with no fee applicable. However as seats are limited, it is preferred if you register your presence by sending an email to: namita[dot]shibad[at]gmail[dot]com

For other tech events in Pune, check out the PuneTech calendar.

Reblog this post [with Zemanta]

Seminar: Strengths and weaknesses of various programming languages – 28th March

What: A presentation on the strengths and weaknesses of various programming languages, and how to choose one for your application, by Dhananjay Nene
When: Saturday, March 28th, 4pm
Where: SICSR – Symbiosis Institute of Computer Studies and Research – Map
Registration and Fees: This event is free for all. No registration required.

Details:
Confused about whether to use C/C++, or Java for your application? Or unsure of whether to go with Python, or Ruby, or PHP, or one of the many other “new” languages? Are you wondering whether it is worth the trouble to learn a hot new language?

Popularity of programming languages, or the number of jobs being offered for some programming language are not really good indicators by which to make your choice. It’s time to get some data on the fundamental technical differences between the major language groups today. It’s time to get some useful insights on the business implications your choice.

Dhananjay will discuss the relative merits and weaknesses of the major classes of modern programming languages and they reasons why you should choose one over the other for a specific application. He will cover both – technical issues in choosing a language, and business reasons.

This is targeted towards both – developers as well as managers who want to go past the religious debates over programming languages and want to be able to take decisions based on technical/business reasons as opposed to faith.

To get a primer for the material to be covered, check out the article Dhananjay wrote yesterday about how to improve your web based software development and maintenance ROI with dynamic programming languages

About the author – Dhananjay Nene

Dhananjay is a Software Engineer with around 17 years of experience in the field. He is passionate about software engineering, programming, design and architecture. He did his post graduation from Indian Institute of Management, Ahmedabad, and has been involved in Senior Management positions and has managed team sizes in excess of 120 persons. His tech blog, and twitter stream are a must read for anybody interested in programming languages or development methodologies. Those interested in the person behind the tech can check out his general blog, and personal twitter stream. For more details, check out Dhananjay’s PuneTech wiki profile.

Reblog this post [with Zemanta]

Improve your web based software development and maintenance ROI with dynamic programming languages

After we carried a few quick articles on why you should learn more about Ruby and Ruby on Rails (take 1, take 2) last month, we decided that we wanted to give people a much deeper article on why these new languages (Ruby, Python, PHP) and frameworks (Rails, Django) are setting the web world on fire. We invited Dhananjay Nene to write an article with an in depth discussion of the technical reasons how these new languages differ from the older ones and when to choose one over the other. He responded with this article which, as an added bonus, also includes the business reasons for your decisions. At the request of the community, Dhananjay is also giving a talk on the relative strengths and weaknesses of different programming languages on Saturday, 28th March, 4pm, at SICSR. All those who found this article interesting should definitely attend.

Introduction

Programing language selection is often a topic that elicits a lot of excitement, debate and often a bit of acrimony as well. There is no universally superior programming language that one can recommend, so I tend to generally disregard most language opinions which say ‘X language is the best’, without specifying the context under which it is superior. Finally most language debates often deal with the technical issues and not the ROI issues. Hopefully I shall be able to address this topic without being guilty of any of these problems.

So what languages are we referring to here ?

Official Ruby logo
Image via Wikipedia

The range of languages that fall under Dynamic Programming Languages category is rather extensive. My experience is primarily limited to Python and to a lesser extent PHP, Ruby, Javascript, and Groovy. For the rest of this article, I shall be primarily referring to Python or Ruby when I use the word dynamic languages, though many of the references may continue to be applicable and relevant for a number of other dynamic programming languages.

As I describe the technical characteristics, I shall also continue to attempt to address the business aspects as well, so you might find this article at a little techno-business level. Assuming I am able to excite their interest, the tech guys would not find sufficient technical details and would be hungry to hunt for more, and while the business guys would get a little teased with the possibilities, they will not quite get the ROI served in the traditionally formatted excel spreadsheets. Being aware of that, I continue down this path with a feeling that this perhaps will be the most appropriate level for me to abstract this article to.

Characteristics of Dynamic Programming Languages.

Let us quickly review some of the characteristics :

CPython
Image via Wikipedia

Object Oriented : Many dynamic languages support full object orientation. There are many who don’t necessarily buy the benefits of Object Orientation, but it is my strong belief, that once a piece of software grows beyond a certain threshold of complexity and / or size, Object Orientation starts delivering very strong dividends. There are a few areas such as highly complex, algorithmic processing which might be better suited for functional programming. However a majority of the medium-to-large sized web applications are better served by OO. The empirical evidence at least bears out the fact that most of the most popular languages today (except C) are Object Oriented. However this still is a very very large class of languages which in them include C++, Java, PHP, Python, Ruby etc. The one area where some dynamic languages separate themselves from the others is in the notion of “everything is an object”, ie. primitives such as numbers, functions are all objects by themselves.

Business implications: OO code well designed and implemented allows for a substantial reduction in maintenance costs. When working with a team which is up the curve on OO, it is likely to lead to lower costs and time on inital coding as well. On the other hand, both training costs and skill requirements are higher for fully OO languages. If you are already using partialy OO / hybrid languages such as PHP, C++ or Java, and are convinced about OO, using fully OO languages such as Python or Ruby will help you leverage the OO capabilities even further.

Duck Typing : In very loose terms, duck typed languages do not require you to declare an explicit interface. You send an object a message (ie. invoke a function or access an attribute) and if it can respond to it, it will, and if it can’t it will result in an error. Duck typing is a specific typing system which is a subset of a broader system called Dynamic Typing, which often makes for an interesting debate with its counterpart – Static typing : Static and Dynamic Type checking in practice. For people well grounded in static typing alone, this can sometimes seem to be sacrilegious. I am convinced that duck typing makes writing code much much faster for two reasons – a) You now require to write fewer lines of code and b) You often don’t have to keep on regularly waiting for the compiler to do its work. There is also a substantial capability enhancement that dynamic typing makes to the language type system, which allow the frameworks to build dynamic types on the fly. This in turn offers the framework users many more capabilities than frameworks written in other languages. That is why it is nearly impossible to write frameworks like Rails or Django in Java (You can modify the class loaders and use byte code generation to generate the new types, but the compiler can’t see them so you cant use them). That is also why there is a lot of anticipation of using JRuby, Jython and Grails on the JVM since the languages underlying them (Ruby, Python and Groovy respectively) bring the dynamic typing capabilities to the JVM platform.

Business Implications :Writing code is much much faster. Maintenance depending upon the situation can sometimes be more or less difficult in case of dynamic typed languages. Refactoring is usually a lot more difficult in case of dynamically typed languages since the underlying type system is not able to infer sufficiently about the code to help the refactoring tools, as is possible in case of statically typed languages. It is my opinion that a skilled and trained development team using dynamic languages can generally substantially outperform another equally capable team using static languages. Insufficiently or poorly skilled development teams however can lead to very very different kind of pitfalls in these class of languages. In both cases the code becomes difficult to change or maintain due to a) cryptic code in case of dynamically typed languages and b) extremely large code bases in case of statically typed languages. Both are undesirable situations to be in but if I had to choose between one of the two, I would go for being in the cryptic mess since it is at least manageable by bringing in external skilled help.

Metaprogramming : Metaprogramming is in loose terms the ability of programs to write programs. A large proportion of developers may not use this capability too frequently. Specifically in web application development it gets used as a mechanism to transform one set of datastructures which a programmer specifies into code at runtime. As I point out later in this article, it in fact is a very important element in designing common frameworks and libraries which in turn offer substantial capabilities including small code and easier maintenance. A quick note to state that metaprogramming is not code generation. In case of code generation, one uses the generator to generate code which is then compiled. A big limitation with this is the fact that often people modify the generated code leading to really tough maintenance nightmares and the fact that it is a two stage process which is prone to more errors. Metaprogramming results in new code “coming to life” so to speak while your program is running.

Business Implications : Read on, they will get covered in the final roundup. They are large and they are positive.

Function blocks/objects, iterators, closures, continuations, generators: I will not go into any substantial details of this issue except to say that small pieces of code logic can be handled in a much much more concise way than if these weren’t supported. While many situations may not need closures support, you will be glad to have them on your side when needed.

Business Implications : Helps having shorter, cleaner code leading to lesser development and maintenance costs. Another significant positive is that your developers are just likely to be so much happier since they get some truly nice building blocks for concise and elegant expression of their logic. Can’t think of any significant negatives.

There are a full range of other capabilities, but none come to mind immediately as something that have strong business implications as well.

The role of frameworks

Ruby on Rails
Image via Wikipedia

When did these languages say Ruby and Python originate ? Most people are likely to be a little surprised if the answer is in the last millenium. Yet Guido von Rossum started working on Python in 1986 and Ruby was released in 1992. Python has been rather well known within the scientific community and perhaps a bit within the systems / OS utility programming communities for quite some time. However both languages grabbed a large mindshare only post 2005. A big reason for their popularity (especially in case of Ruby’s case) came from the popularity the frameworks which used them. Ruby on Rails for ruby and Django (to the best of my knowledge) for python. These frameworks combined the language capabilities with the learnings of good design practices for internet applications (eg MVC, declarative validations, simple ORM etc) into a simple usable package, which developers could take and build web applications quickly. There are examples of people having built simple web apps within a day and medium complexity apps in 1-3 weeks using these frameworks. The languages are the ingredients, the frameworks are the cooks – a great combination for serving great meals. Now you will find many such frameworks in these languages, including some which have better capabilities for building more sophisticated / complex applications eg. Merb and Pylons.

I am not too sure of how many people are exactly aware of the role of metaprogramming in the frameworks’ successes. I am willing to believe that but for metaprogramming, these frameworks simply would not have achieved anywhere close to the success they achieved. It is metaprogramming which takes the datastructures as defined by a developer and converts it into runtime code implicitly, saving the developer lots of time and effort. So even if most developers don’t actively write metaprograms, their lives are so much easier. Metaprogramming capabilities are also the reason why it is virtually impossible to write similar frameworks in Java. However if you are on the .NET or JVM environments, things are definitely looking encouraging with the possibilities to use IronPython or IronRuby on .NET or JRuby or Jython or Groovy+Grails on the JVM.

Business implications : If you are focused on scientific or desktop or highly algorithmic applications, where python especially is used extensively, you are likely to get benefits from these languages on their own merit alone. For web applications you will see the maximum benefits by using the web MVC frameworks along with the languages. I submit that on the whole you are likely to see very substantial reduction in development, enhancement and maintenance times – sweet music for any end user, investor or project manager.

Increased Business Agility

There is one more reason why I believe these languages are especially helpful. They help by increasing development agility to an extent where it now allows for the business to be more agile. You can get a first prototype version up in weeks, take it around to potential users, and gather feedback on the same. Incorporate elements of this feedback into the next release of working code quickly. The business benefits of such a scenario are tremendous. You might wonder that this is a process issue, so what does it have to do with a language selection. I would submit, that languages which allow changes to be made faster, help support this process in a far superior way. Another equally important facet is the superior risk management. Since you are able to build features with lower investments, you are able to get a series of customer feedbacks into your decision making process much faster. This helps being able to come up with a product that really meets the customer expectations much earlier. This happens by allowing the better features to come in earlier and also by allowing the lesser important or lesser relevant features to be decided to be deferred earlier. That’s precisely the reason why the dynamic languages have found a strong acceptance in the startup world. I believe the increasing agility which is often required in the startup world, is and will continue to be increasingly required of established enterprises. Precisely the reason why I believe these languages will continue to do better in the enterprise space as well. Finally, these languages make it relatively easier to tell your business sponsor – We will work with you on imprecise requirements rather than spending months on nailing down requirements which anyways are likely to change later. This has both a pro and a con especially for outsourcing situations. It is likely to allow for tremendous customer delight in terms of a vendor that works with him in such a flexible manner, yet it does introduce challenges in terms of how the commercials and management of the project are handled.

The reason I would like to especially point out increased business agility is because programmers don’t often visualise or evangelise it much, but when I wear a manager’s hat, it is perhaps the most compelling benefit of these languages.

Concluding

As I said earlier, there is no single universal language which is the best for all scenarios. There are some scenarios where using dynamic languages will not be helpful

Programming language book sales 4Q2008

A Treemap view of sales of programming language books by O’Reilly Media in 4Q2008. The size of a box represents the total sales of a book. The color represents the increase or decrease in sales compared to same quarter in 2007. Green = increase, bright green = big increase, red = decrease, bright red = large decrease. See full article at O’Reilly Radar for lots of interesting details.

When not to use these languages

  • You are building a simple / small application and don’t have the available skill sets. One exception to this is where you decide to use it in a simple application to allow yourself a non risky mechanism of building these skillsets.
  • Extremely High performance requirements. However please make sure that you really need the high performance capabilities of say a C, C++ or Java. In my experience 80% of developers like to believe that they are building highly performant applications where the maximum speed is a must have. Yet the top 10% of them are facing far far more critical performance requirements than the remainder. Unless you are convinced you are in the top 10%, you should certainly consider dynamic languages as an option. Moreover in case of most high performance requirements, these can sometimes be boiled down to a few inner loops / algorithms. Consider implementing the same in C, / Java or other .NET languages (depending upon the choice of your dynamic language interpreter implementation)
  • You have an architecture standard in place which does not allow using these languages. If you are convinced your applications are better served by using dynamic languages both from your individual application and an overall enterprise perspective, consider taking the feedback to your standards setting body to see if you can pilot a different approach. Also evaluate if the .NET or JVM versions can help you comply with the architecture guidelines.
  • You are unable to commit to the retraining requirements. While these languages are easy and powerful to use, leveraging that power can require some amount of retraining. If that does not fit your business plans, since the retraining effort could impact immediate and urgent requirements, that could be a reason to not use these languages. However in such situations do consider investing in building this skill sets before you get to another similar decision point.
  • You need a very high levels of multithreadinging as opposed to multi processing support. While this is not a typical situation for web applications, you should be aware that most dynamic languages have some limitations in terms of multi threading support. This actually is not necessarily an issue with the language as with the implementation eg. the C implementation of python has the notorious Global Interpreter Lock which constrains you from being able to use more than a handful of threads per processes efficiently. However the same restriction is not present in Jython (the jvm implementation of python). This is likely to be an issue for a miniscule percentage of the web applications market for the primary reason that multi process / shared nothing architecture styles often work quite well for many web applications and they don’t really need multi threading.

So where’s my return on investment ?

First of all lets talk of the investment part. If you get into it in a paced approach, the investment may not be that great. Start with a team size of anywhere between 2-6 people (depending upon your organisation and project size). Think of 15 days of intensive training followed by a 2-6 months coming up the curve effort (more likely 2 than 6). Make sure your first project is not a critical one under tremendous business pressure. This can be subsequently followed by more people getting retrained as necessary. In the longer term it might actually help reduce your incremental investment, since it might be much easier to ramp up new programmers in Ruby or Python than say Java or C#.

Secondly lets look at the incrementally higher costs. You are likely to need people who are a little bit more capable in terms of understanding and debugging the same logic expressed in fewer lines of code (that sometimes can be a challenge) and then be able to modify and enhance the same. This may increase your testing and fixing costs in the earlier days. Finally while the fewer lines of code can make refactoring easier, you could find that your total refactoring costs are a little higher.

Now the returns part. I am convinced that the increased business agility is the strongest return in business terms. Immediately after that is the substantial reduction in development, enhancement and maintenance times. If neither of these benefits are appealing, when contrasted with some other issues that you might perceive, maybe considering dynamic languages in your context is not such a great idea.

One more factor that I would of course encourage you to evaluate from a business perspective are the implications for you if your competition (assuming it is not already using them) started using these languages. The implications would vary from case to case, but it could also help you decide how important this issue is for you.

About the author – Dhananjay Nene

Dhananjay is a Software Engineer with around 17 years of experience in the field. He is passionate about software engineering, programming, design and architecture. He did his post graduation from Indian Institute of Management, Ahmedabad, and has been involved in Senior Management positions and has managed team sizes in excess of 120 persons. His tech blog, and twitter stream are a must read for anybody interested in programming languages or development methodologies. Those interested in the person behind the tech can check out his general blog, and personal twitter stream. For more details, check out Dhananjay’s PuneTech wiki profile.

Reblog this post [with Zemanta]