Learning Programming

Here are a few suggestions if you want to learn to program, especially if you are a student.

The first programming language you learn should be fun. It should be something that is easy to learn, easy to create things with, easy to iterate and does not dumb you down.

This language should help you get your feet wet in programming and interesting enough for you to persist through early challenges. It needs to have a thriving community that is helpful and lots of open source projects you can learn from.

I suggest Python or Ruby to start with.
If you dig programming, then you can try to intern for startups. You will  learn from more experienced people, build stuff others can use. You will learn other important aspects of software development like testing and usability.

This is your skill development phase. You may end up with Java/Objective C if you are doing mobile apps. Or PHP/Python/Ruby if you are building webapps.  If you do web development you may be learning a bit of HTML/CSS and Javascript.

During this phase, you will learn to work with others and also learn to explore and do research. This best part of this phase will be your increased confidence.
If you decide to make software development as your career choice, you need to learn a language used by businesses. These tend to be Java, C and C#,  PHP, Ruby or Python. Don’t worry about learning multiple languages. After a couple of languages, learning new ones will be fun.

When you work for a company, the software you develop will be used by others. You will r have different set of responsibilities. In addition to programming, you may need to learn testing, estimating, maintaining code written by others and several other skills.

After you get your job and you are kind of settled into a rhythm, you may want to continue learning. Take a look at Programming competency matrix and decide where you want to be. 

Once you are confident and start enjoying programming please start a blog and share your discoveries with others. Participate in the community and help others who start. Find some time and contribute to the open source community in anyway you can.

Discussions on First Programming Language


My Blogs – 2013 in Review (Thanks to WordPress)

Thanks to WordPress for sending me this nice report. I was going to do it manually  and they saved me time.

Here’s an excerpt:

This blog was viewed about 33,000 times in 2013. If it were a concert at Sydney Opera House, it would take about 12 sold-out performances for that many people to see it.

Click here to see the complete report.

Have a Great 2014. Let us start more conversations.


I will add some of my own analysis about some of my finding from my own posts and views.

Unanticipated Collisions

How we create the new from Dancing About Architecture.

We create the new not generally through some mad moment of inspiration in fictionalised accounts of ancient Greeks in baths (though the conditions for this can be forced into existence), but by putting things together that do not normally go together; from taking disciplines (or curriculum areas) and seeing what happens when they are forced into unanticipated collision.

Webb Young’s A Technique for Producing Ideas suggests that to create a new idea of value you merely take two disciplines that do not appear to belong together and force them through a blender, because ‘an idea is nothing more nor less than a new combination of old elements’,10 and that a person with a propensity to produce ideas will be someone who sees the relationship between things; relationships that are not necessarily obvious on first sight.

The mind, at its best, is a pattern-making machine, engaged in a perpetual attempt to impose order on to chaos; making links between disparate entities or ideas in order to better understand either or both. It is the ability to spot the potential in the product of connecting things that don’t ordinarily go together that marks out the person (or teacher) who is truly creative.


A Blog Worth Reading

From @sharads tweet, I discovered JP’s blog. I would like to share a couple of snippets from his About This Blog page.

I believe that Moore’s Law and Metcalfe’s Law and Gilder’s Law have created an environment where it is finally possible to demonstrate the value of information technology in simple terms rather than by complex inferences and abstract arguments.

I believe that simplicity and convenience are important, and that we have to learn to respect human time.

I believe we need to discuss these things and find ways of getting them right. And I have a fervent hope that through this blog, I can keep the conversations going and learn from them.

I agree  – we do need to discuss these things and find ways of getting them right.

Most Popular Tech Jobs in 2013 According to LinkedIn

LinkedIn Analysis of job activity in 2013.

LinkedIn took a look at the skills and employment history of over 259 million members to determine what the most popular skills were this year. Based off new jobs added by people with select skills and recruiter search activity, the company found that social media marketing led the way followed by mobile development, cloud and distributed computing, Ruby, Python and Perl coding languages, and statistical analysis.

Some thoughts on the analysis.

  • Skills and employment history – I can understand skills, but missing the point on employment history.
  • New jobs added – Probably from employment data? Or is it based on their own product usage patterns
  • Recruiter search activity – This is probably one of the most relevant indicators. Wonder what percentage of recruiters search on LinkedIn?

If you’re looking to pick up a new skill or job in the New Year, tech might be a good place to start. See the full list of LinkedIn’s most in-demand job skills of 2013.

If you are a developer, start investing some time on the skills mentioned in the article. If you are a company with a certain amount of IT, you may want to look at what your peers do. If you are an IT staffing company, you may want to build a knowledge base of some of these skills.

In addition you may want to proactively research some of the emerging trends.

LinkLog: Internet – An Engine of Convenience

From Twitter founder Ev Williams

the internet is “a giant machine designed to give people what they want.” It’s not a utopia. It’s not magical. It’s simply an engine of convenience. Those who can tune that engine well — who solve basic human problems with greater speed and simplicity than those who came before — will profit immensely. Those who lose sight of basic human needs — who want to give people the next great idea — will have problems.

“We often think of the internet enables you to do new things,” Williams said. “But people just want to do the same things they’ve always done.”


Some times my blog posts are not my posts or reblogs. They simply link to a blog post I like providing some context through a few snippets. I do this because I know some of you would enjoy the original post. Some times I add my own commentary.


Are You Looking for Interns? Can You Answer a Few Questions, Please?

I posted this in the facebook group but thought of putting it here so that it can reach a wider audience. Can you tell us a bit about your internship program(s)? Specifically:

  1. How many interns do you typically take in your location? How frequently do you look for interns (quarterly, yearly, all the time etc.)
  2. How can students qualify for internships? What prior knowledge or practical experience do you require?
  3. Do you offer unpaid internships (lots of students I talked to want to just get the work experience and willing to work without pay for a few months, initially)
  4. Do you take part time internships? For example, many students would like to work a few hours a week at their convenience.
  5. Do you allow interns to telecommute? (work from their home mostly but come to the location a couple of times a week)
  6. Do you allow students who graduated but looking for jobs as interns?
  7. What kind of work do interns get in your company?

Please leave your answers in the comments section. You can also point us to a page you have about internships (if you do).  Please answer as many of these questions as possible.

You may also want to check out the twenty19.com. They have a more formal internship match making program.


Inspired by A Bot

Can you fall in love with a bot? I know that you can certainly be fascinated by one. I was, when I first encountered AliceBot, several years ago. But here is a fascinating story shared on AIZone (a forum to discuss AI bots) by Richard Wallace

On the Online Origins of the Film
The initial idea came from an article I saw online which talked about a site where you could instant message with artificial intelligence. I think it was called Alicebot. I went to it and said, “How are you?” It said, “How are you?” And I said “Not so good, I’m tired,” and it said, “That’s too bad.” So we had this little exchange and I got this buzz, thinking, “Wow I’m actually talking to this thing!” And then it quickly devolved; you could tell it was just parroting things that it had heard before and wasn’t actually intelligent. I didn’t really think about it for a long time, and then I thought about a man in a relationship with an entity like that and the idea of what would happen if you used that as a way to write a love story.

I have been showing Alicebot to students for a couple of years now.  There are two instances of projects (less romantic than the one described above) inspired by Alicebot.

One was about a student doing his Masters in Computer Science. He was referred to me by one of my friends and I suggested that he look at an AI Bot for his project. He implemented a small Python app using AIML (Artificial Intelligence Markup Language) and built a help application for Sugar CRM.

One of the most gratifying things that happened about 6 months ago was how two students at KCG Innovation Cell, got inspired by Alicebot to rethink their user interface to helpdesk app they were building. They were inspired enough to go and learn a new programming language (Python) and a bit of AIML. I think they will get more time to work this semester and I hope they persist, and share their experience.

Lots of activity in the AI bot space. The best way to keep track is to subscribe and follow discussions at AI Zone.  There is a new version of AIML in the works –  AIML2  and now there is ChatScript. I see quite a few opportunities to make interactions with computers more interesting for both adults and kids. Hopefully I will get to work on a couple of projects, soon.

From a paper on writing a Chatbot

ChatScript is a scripting language and engine for responding to meaning. It has been used to write chatbots which carry on an entertaining conversation. Even a chatbot that pretends to be a patient to help train doctors on diagnostic interviews.

But chat isn’t its only use. ChatScript has planning capability, and could be used to allow a robot to carry out plans it synthesizes in response to verbal instruction. We have also used ChatScript to determine the intent of an Amazon product search and either better reorder search results from Amazon or to perform a more successful replacement search if Amazon’s search breaks down. And ChatScript has been used to provide natural language mapping into appropriate SQL queries on the Dun and BradStreet business database.


Cool Ideas: Trial Week

I was pretty impressed by this hiring secret.

People are often surprised when they hear about trial week, but to us it makes a lot of sense. It’s hard to tell from a few hours of conversation what someone is really like or how good she is at her job. And it’s hard for a candidate to tell what it’s really like to work with us. Everyone preaches culture, but few really have a great one. We’re looking for people who intend to stick around for several years — and that’s a big commitment — so why not take the time to make a well-researched decision?

May not work everywhere, but where it can, it is certainly worth a try.

I Asked – “How Many of You Want Internship?”

I was addressing a group of students yesterday. I walked into the class and my goal was simple – to get them to spend some time learning programming during the Christmas holidays.

I asked them “How many of you want internship?”

Almost all the hands went up.

I asked “How many of you know how to get an internship?”

None did.

I asked “Why do you want internship?”

A few mumbled “to learn”. Surprised that no one said “to earn”

At least they have the right focus. I spent the next 30 or so minutes talking about various opportunities to learn and some time earn. I promised to set up a page with links to some starting points – Resources for Students.

Finally I threw then a challenge:

If before summer, this year, you can learn one programming language and build a small app (webapp, mobile app, game app or any other kind) that is useful, I will find you an internship.

I have no idea, how I was going to do that (finding the internship part) if every member of that class performs. But that will be a good problem to have.