If I ask you, ‘What is the first program you ever wrote in any language?’, you are probably going to answer ‘Hello World, what else?’, unless you are a superbly talented programmer and a wrote a recursive routine to find the Nth Fibonacci number as your first one. I don’t fit into that category either. But I am talking about the first software, not the first program. Now if you ask what differentiates a program from a software, I won’t be able to answer. You better ask your software engineering professor, cause this article is not about that topic. In my definition, the first software I ever wrote was a program bigger in lines of code than any other I wrote earlier, served a purpose, and of course had a deadline. I am talking about my first software project as an undergrad computer science student. That was the year 2003. All sophomores were supposed to submit a software project for C Programming Lab course at the end of the term. So I wrote this thing called ‘Digital Periodic Table‘. It displayed a picture of the chemical Periodic Table, identifying all the chemical elements, groups and periods in colorful blocks. It served other purposes to. It had a graphical interface, through which the user can search for specific elements by their names, atomic number or chemical symbols. It provided suggestions in case the user misspelled the name or symbol in his query. It also had sections on chemical, physical and other properties of different chemical groups. I used the native graphics library of C to draw the periodic table, the graphical menus, some cool animations at start up(such as a ‘Loading’ bar, although nothing was being loaded), and finally my name, roll number and other stuff scrolling slowly from the bottom to the top of the black screen at the credits section. I used a tab spaced text file to store the data of the chemical elements and used simple linear search algorithm to search through them.
You guys are laughing, right? You gotta be, it doesn’t sound like much of a fancy software to brag about in a blog. I admit, but thats not the point. I writing about this not to share my technical genius(of which I have little or none) but the great joy I felt while developing this silly piece of code. My classmates were doing very complicated stuffs, like image editing program, tool for analyzing and comparing sorting algorithms, or SQL parser etc. But I still took a distinctive pride in my creation, because it was entirely my own. Most of those other programs have been ‘borrowed’ from senior students, or more capable friends in other schools, or Google. But every line of code in my program was written by me. I was its customer, because I proposed the idea at the first place. The professor was amused at my interest in chemistry. I wasn’t that interested in chemistry. I was keen to develop a program that will help studying some topic I learned in high school, in an interactive way. Periodic table was the obvious choice. It is a graphical database, where each entity is placed with a definite purpose. You can assume the behavior of an entity by just looking at its position on the table. I picked up my high school chemistry text book and started drawing the grid on a black background, using the library graphics functions of the only programming language I knew, C. Internet was not that cheap and available back then, all I had was a book on C graphics programming written by Kanetkar. As it was the first project I undertook, estimation was inaccurate. I planned for too many features, spent too much time on simpler matters, leaving the critical things to be attended later. There were chunks of code being repeated in several modules. And don’t ask me about the code quality, I even forgot to indent in some of the places. I spent a sleepless night before the final submission. And I crossed my fingers during demonstration, hoping the bugs would not creep up.
Still it was great fun. As Frederick P. Brooks have pointed out, the joy of programming lies in the great pleasure of creating something, seeing it being useful to others(it was useful to me at the least), watching its interlocking inner components working together in complex fashion, and finally the joy of learning. I had them all! My professor was impressed. I enjoyed demonstrating the piece to my friends, even non-programmer ones(of course, who would want to see a boring sorting algorithm analyzer?). Some of the guys even took my code in floppy disks!
That was a beginning of a wonderful journey. There is a lot of it ahead, many things to discover. And I am enjoying every moment of it.