1 Mar 2011

Thinking, Process and Philosophy behind the new Digicorp website

I am really excited to break this news to you all.

We launched a new Digicorp website on last Saturday!!! No wait...don't go and check it out yet.

I wanted to say something before you check it out. I wanted to explain thinking, process, philosophy behind it.

I did some brainstorming about what we are as a company and where we are heading. Following are some points I came up with. They are in no particular order, so just go ahead and read them. Also not all of them are implemented in the website but still it is worth going through once.

  • Objective of the website is to provide clarity in complex world of Software.
  • We build Simple and Elegant software for our client. (Or at least we would like to from now on...!)
  • Our development philosophy is to "Get Real" and build "Less Software" (Not all of us are following, but that will happen eventually and we have to start somewhere)
  • Most clients do not understand technical jargon and they don't care which platform to use.
  • Most clients do not know exactly what they would like to build.
  • Our job is giving clarity to their thoughts and come up with proper definition of project.
  • Mostly we decide which language, database, platform is best for the solution.
  • In all projects clients do ask for pricing models.
  • We work on hourly rates
  • We work on dedicated developer model
  • We work on fixed price project

  • In smart phone application clients are interested in knowing platforms we can build on. For e.g. iPhone, Android, Blackberry etc.
What should we more focus on?
  • services or
  • technologies we can work on or
  • both

There should be a mixture of services and technologies we work on


Services:
  • develop software for web or internet based on client's requirements
  • develop products / concepts of clients
  • we develop smart phone applications


Don't worry if it does not make any sense so far...it will from here on!

So now what was the need of creating a new website?

Recently we are going through lot of changes, the way we think, we operate, we work. We are becoming mature and we are all the more motivated (At least I think so! ;))


Well, our existing website was not conveying our new way of doing things.

It was really good, but it was just like any other IT service company website, which we don't want to be.

We were throwing lot of jargon around which our customers really don't care and even we don't care.

So there was a disconnect and I wanted to remove that.

Plus we just became 7 years old! and I wanted to do something on that occasion.

Now it has content you would like to read. It has opinion. It has meaning. It wants you to read it.

(Yes now you can go and check our new website and read this post side by side)

Some general comments:

As you can see navigation is almost not there! I did not want to have traditional navigation system and thus long pages but with less contents and something you would like to read till end.

I want user to focus on what he/she is seeing and not to unnecessary elements such as navigation, some news scroll or some fancy image on the page. User should read all the contents and go till bottom for further navigation or exit the website.

We have a website which says something, if you like it, continue else you are free to close it.

I have not included any technology / platform pages or any other such inscrutable content pages. We show what we do and what we have done. The real work. And that is why a dedicated page for each interesting project we have done.

This way we will keep adding project pages in our website and it will keep getting bigger and better. We won't have to give separate presentation of our work from now on. Our work page should say it all!

All pages are plain HTML pages, minimal scripts, minimal vulnerabilities and faster loading time.


Homepage content selection:
Thinking behind sections of homepage.

What do we do? Should be clearly told and that is why the first section. It says we develop web-based software, products and smartphone applications. Essentially this is what we do.

Equal importance should be given to our experience and our clients, so that we don't look naive and new player in the market. Thus second section on homepage.

Philosophy is something which will separate us from rest of the players and thus the third section.

Our products, though they are not the core focus right now but they are unique and generates lot of "wow!" when we let our customers know about them. So one section dedicated to that.

Nothing is worthwhile till people see our actual work. Thus dedicated section to show our recent/major/interesting work. This will keep changing as and when we finish interesting projects.

People should easily reach us, and that is why contact form on each and every page of website. We are just an email away!

Footer also says something. "Now that you have reached here, you know almost everything about us. But there is more to us."

So that's about the homepage.

Rest of the pages are self explanatory and thinking is same. Also I don't want to write a post longer than this!!

Awaiting eagerly to hear your feedback, thoughts, praise, and criticism


27 Feb 2011

Things you should know before you join your first software development company

I know, I have been there. As a fresh graduate you almost don't know anything about challenges you may face in your first software development job. It is not just about programming, it is a lot more.

Our education system simply does not prepare us for that. But fortunately there is internet now!

I am going to talk about things you should know before joining a small software development companies like ours.

According to me following are some of the basic tools you should be aware of.

1) Version Control Systems:

Imagine yourself working in a team on a software development project. Project has hundreds of files having thousands of lines of code.

  • How do you do changes in same file and merge them together?
  • How do you keep track of changes done by you and your team members everyday in different files?
  • How do you roll back to the stable version of code if something goes wrong?

Coding and merging can become a nightmare as the team gets big and collaboration gets stronger. Fortunately there are tools available to get us out of that nightmare.

They are called Version Control Systems

One of the best version control systems is SVN. It's an open source tool with many advantages over its competitors.

Github is another version control system with online collaboration features. It is getting popular amongst hardcore programmers now a days. So try it out if you get a chance.

Also read this article to know more about Version Control Systems.

2) FTP Client

You might have studied about FTP protocol in your college. FTP client works on the same protocol.

You are most likely to use them in your first job for transferring files on a live server or an intranet server.

  • You check-out the code from SVN
  • You work on your code
  • You test the code in your local environment
  • You check-in the code in SVN
  • You make the code live using FTP client
  • You test the code on live sever

This is a very basic routine you may follow everyday at your job. So knowing about FTP client is of utmost importance.

Filezilla is a free and one of the best available FTP clients.

3) Project Management Tool

Now this depends from company to company but any decent software company cannot do away without one. Some build their own project management tools, some use readymade tools from the market.

We use Basecamp at Digicorp. It is one of the best project management tools we have used so far. It makes life easier and lets you focus on your core job, which is programming!

This link has list of good project management tools available in the market. Try which are free to use and use it in your college project to collaborate with each other. It will surely pay off in your first job.

4) Bug Tracking Tool

As per its wikipedia article:

"A bug tracking system is a software application that is designed to help quality assurance and programmers keep track of reported software bugs in their work. It may be regarded as a type of issue tracking system"

Any software company you may join will surely use this.

We use BugTracker.NET and BugZilla.

5) Email Etiquettes

In your professional life you will have to write lot of emails everyday. You will write to your team members, to your clients, to your project manager etc. And this is something they really don't teach in engineering colleges. So like all the other subjects (which they teach) you will have to learn this one also on your own!!

Here is the article to help you in learning some Email etiquettes.

6) Writing Skills

Writing skills are THE MOST important asset of a programmer. Some of the great programmers in the world have been stressing on it since long now.

Read this article and all the links mentioned in that article to know what I am talking about.

Ignore my last advise at your own peril.

So aspiring young engineers, let me know what you think of above list. It is not an exhaustive list but good enough to get you started. Let me know if I have missed any important point here.

22 Feb 2011

My digital life!

In my previous article, Paras commented following:

"Hi Abhishek, i have been following your blog for quite a while now. i have just one complain: blog frequently please, if possible!

The best thing about your blog posts are that they point to some of the best resources that one can leverage. Like in this post you have couple of book titles that prompts reader to try on their own.

In your post, how to become a world class engineers - you pointed out to some great resources. For instance, google reader. i had not used it before i read your blog post - now it's one of ma favorite tool."

I was very humbled by his complain about blogging often. I am working on it (and thus this post!)

But it made me realize one more thing as well, which is sharing the resources I use and love. This would be useful for all the under graduate students who are in search for best resources on web and mobile to increase productivity and happiness. Obviously these are my personal choices so may not be "The Best" choice for you, but for me they are.


So here are some of the best Web-based services, iPhone Applications I use and love:

Gmail - Best email application. Works like a charm in iPhone browser too.

Google Reader - The best RSS reader. Superb on iPhone.

Google Docs - Have almost replaced MS Office for me

Basecamp - Best project management tool I have worked with so far. Now it has a mobile site which is simply superb. Just open up basecamphq.com in your iPhone and see the magic!

Evernote - "Your extended brain" as they say it. Store any kind of notes seamlessly from any device. Search notes including text in the photos as well!. Works best when you have it on Mac and on iPhone.

Dropbox - Best file sharing service. Again from any device anywhere. Works best if you have it on Mac and iPhone.

Skype - For audio, video and text communication with clients. Once more works best on Mac and iPhone!

Cleartrip - Although I hardly travel but whenever I book tickets I use cleartrip. Clear, fast and best.

Flipkart - I am a big fan of this site. I can safely call them Amazon of India. They deliver books at your doorstep. I must have ordered around 100 books so far, haven't had a single hiccup till now!

Checkdomain - To quickly check if the domain name is available or not.

Mediatemple - Best hosting provider I have worked with so far. They also have a iPhone compatible website.

Facebook - Needs no explanation. Facebook for iPhone is arguably the best iPhone app out there.

Twitter for iPhone - Alternate love of mine (

Tweetdeck - Twitter client for mac

Filezilla - FTP client for mac

TextWrangler - Text editor for mac

Posterous - Blogging made easy! I am typing this post in my gmail right now. After finishing I will just send an email to post@posterous.com and voila! It will be up on this blog in few seconds and my twitter and facebook status will be updated automatically!. Needless to say they also have a wonderful iPhone app.


Some of the Blogs I follow and love:

Signal vs Noise
Seth Godin
AVC
Paul Graham (He writes essays so you won't get an RSS feed but Google Reader can create it for you)
Joel on Software (He does not write new posts now, but it is worth exploring all of his old articles. Especially for programmers, go ahead and read each and every article he has written so far. Warning: It may take a very long time to do that as he has written great articles for 10 years!!)
Coding Horror
Get Real Column from Inc Magazine


This is not an exhaustive list but contains almost all major things in my digital life.

You might have realized one thing here. These all services give best results and greater satisfaction when you use them on a desktop (or laptop) and on an iPhone. They all have wonderful iPhone apps and work seamlessly with their desktop counterpart.

Now you should understand the reason why I asked you to get a Mac and an iPhone before :)

19 Feb 2011

A good book for Project / Program Managers

There is a great post on "How to be a program manager" written by author, blogger, entrepreneur and programmer Joel Spolsky. One of the few people I have utmost respect for.

The post is excellent and a must read for wanna be Program Manager or Project Manager. But right now I am more interested in the books he has mentioned in it such as "Mythical Man Month" and "How to win friends and influence people"

After reading the evergreen classic "Mythical Man Month" I was on to another evergreen classic written by Dale Carnegie - "How to win friends and influence people"

Now I am not a big fan of the self help books and probably this is the first and only one I will ever read. But I can safely say that I won't need any other now. At least when it comes to dealing with people.

I learned one of the very important lessons of life.

"Its always about the other person stupid!"

If you have to deal with people and not just with machines in your day to day life, this book is a must read.

Some of the principles mentioned in book may sound like flattery but they are not. They will only work if there are sincere and genuine efforts behind it.

Go ahead and read this book. Read it at slow pace and contrast the principles with your actual behavior in reality. Try implementing them in real life. Turn it in some kind of game. Check your score every week and see if you are doing any better.

You will feel better when you see these principles working in your day to day life. At the end it will make you a happier and better person.

All the best!