Wednesday, March 31, 2010

Hitting the High Notes..====>>By Joel Spolsky

Journy of building a software company:

In March, 2000, I launched this site with the shaky claim that most people are wrong in thinking you need an idea to make a successful software company:

The common belief is that when you're building a software company, the goal is to find a neat idea that solves some problem which hasn't been solved before, implement it, and make a fortune. We'll call this the build-a-better-mousetrap belief. But the real goal for software companies should be converting capital into software that works.

For the last five years I've been testing that theory in the real world. The formula for the company I started with Michael Pryor in September, 2000 can be summarized in four steps:

Best Working Conditions       →        Best Programmers   →        Best Software →        Profit!


It's a pretty convenient formula, especially since our real goal in starting Fog Creek was to create a software company where we would want to work. I made the claim, in those days, that good working conditions (or, awkwardly, "building the company where the best software developers in the world would want to work") would lead to profits as naturally as chocolate leads to chubbiness or cartoon sex in video games leads to gangland-style shooting sprees.

For today, though, I want to answer just one question, because if this part isn't true, the whole theory falls apart. That question is, does it even make sense to talk about having the "best programmers?" Is there so much variation between programmers that this even matters?

Maybe it's obvious to us, but to many, the assertion still needs to be proven.

Several years ago a larger company was considering buying out Fog Creek, and I knew it would never work as soon as I heard the CEO of that company say that he didn't really agree with my theory of hiring the best programmers. He used a biblical metaphor: you only need one King David, and an army of soldiers who merely had to be able to carry out orders. His company's stock price promptly dropped from 20 to 5, so it's a good thing we didn't take the offer, but it's hard to pin that on the King David fetish.

And in fact the conventional wisdom in the world of copycat business journalists and large companies who rely on overpaid management consultants to think for them, chew their food, etc., seems to be that the most important thing is reducing the cost of programmers.

In some other industries, cheap is more important than good. Wal*Mart grew to be the biggest corporation on Earth by selling cheap products, not good products. If Wal*Mart tried to sell high quality goods, their costs would go up and their whole cheap advantage would be lost. For example if they tried to sell a tube sock that can withstand the unusual rigors of, say, being washed in a washing machine, they'd have to use all kinds of expensive components, like, say, cotton, and the cost for every single sock would go up.

So, why isn't there room in the software industry for a low cost provider, someone who uses the cheapest programmers available? (Remind me to ask Quark how that whole fire-everybody-and-hire-low-cost-replacements plan is working.)

Here's why: duplication of software is free. That means that the cost of programmers is spread out over all the copies of the software you sell. With software, you can improve quality without adding to the incremental cost of each unit sold.

Essentially, design adds value faster than it adds cost.

Or, roughly speaking, if you try to skimp on programmers, you'll make crappy software, and you won't even save that much money.

The same thing applies to the entertainment industry. It's worth hiring Brad Pitt for your latest blockbuster movie, even though he demands a high salary, because that salary can be divided by all the millions of people who see the movie solely because Brad is so damn hot.

Or, to put it another way, it's worth hiring Angelina Jolie for your latest blockbuster movie, even though she demands a high salary, because that salary can be divided by all the millions of people who see the movie solely because Angelina is so damn hot.

But I still haven't proven anything. What does it mean to be "the best programmer" and are there really such major variations between the quality of software produced by different programmers?

Let's start with plain old productivity. It's rather hard to measure programmer productivity; almost any metric you can come up with (lines of debugged code, function points, number of command-line arguments) is trivial to game, and it's very hard to get concrete data on large projects because it's very rare for two programmers to be told to do the same thing.

The data I rely upon comes from Professor Stanley Eisenstat at Yale. Each year he teaches a programming-intensive course, CS 323, where a large proportion of the work consists of about five programming assignments, each of which takes about two weeks. The assignments are very serious for a college class: implement a Unix command-line shell, implement a ZLW file compressor, etc.


There was so much griping among the students about how much work was required for this class that Professor Eisenstat started asking the students to report back on how much time they spent on each assignment. He has collected this data carefully for several years.

I spent some time crunching the data; it's the only data sets I know of where we have dozens of students working on identical assignments using the same technology at the same time. It's pretty darn controlled, as experiments go.

The first thing I did with this data was to calculate the average, minimum, maximum, and standard deviation of hours spent on each of twelve assignments. The results:Project         Avg Hrs          Min Hrs           Max Hrs            StDev Hrs
CMDLINE99 14.84   4.67     29.25   5.82
COMPRESS00           33.83   11.58   77.00   14.51
COMPRESS01           25.78   10.00   48.00   9.96
COMPRESS99           27.47   6.67     69.50   13.62
LEXHIST01   17.39   5.50     39.25   7.39
MAKE01        22.03   8.25     51.50   8.91
MAKE99        22.12   6.77     52.75   10.72
SHELL00       22.98   10.00   38.68   7.17
SHELL01       17.95   6.00     45.00   7.66
SHELL99       20.38   4.50     41.77   7.03
TAR00            12.39   4.00     69.00   10.57
TEX00            21.22   6.00     75.00   12.11
ALL PROJECTS        21.44   4.00     77.00   11.16


The most obvious thing you notice here is the huge variations. The fastest students were finishing three or four times faster than the average students and as much as ten times faster than the slowest students. The standard deviation is outrageous. So then I thought, hmm, maybe some of these students are doing a terrible job. I didn't want to include students who spent 4 hours on the assignment without producing a working program. So I narrowed the data down and only included the data from students who were in the top quartile of grades... the top 25% in terms of the quality of the code. I should mention that grades in Professor Eisenstat's class are completely objective: they're calculated formulaically based on how many automated tests the code passes and nothing else. No points are deducted for bad style or lateness.

Anyway, here are the results for the top quartile:
Project Avg Hrs          Min Hrs           Max Hrs          StdDev Hrs
CMDLINE99 13.89   8.68     29.25   6.55
COMPRESS00           37.40   23.25   77.00   16.14
COMPRESS01           23.76   15.00   48.00   11.14
COMPRESS99           20.95   6.67     39.17   9.70
LEXHIST01   14.32   7.75     22.00   4.39
MAKE01        22.02   14.50   36.00   6.87
MAKE99        22.54   8.00     50.75   14.80
SHELL00       23.13   18.00   30.50   4.27
SHELL01       16.20   6.00     34.00   8.67
SHELL99       20.98   13.15   32.00   5.77
TAR00            11.96   6.35     18.00   4.09
TEX00            16.58   6.92     30.50   7.32
ALL PROJECTS        20.49   6.00     77.00   10.93



Not much difference! The standard deviation is almost exactly the same for the top quartile. In fact when you look closely at the data it's pretty clear there's no discernable correlation between the time and score. Here's a typical scatter plot of one of the assignments... I chose the assignment COMPRESS01, an implementation of Ziv-Lempel-Welch compression assigned to students in 2001, because the standard deviation there is close to the overall standard deviation.



There's just nothing to see here, and that's the point. The quality of the work and the amount of time spent are simply uncorrelated.

I asked Professor Eisenstat about this, and he pointed out one more thing: because assignments are due at a fixed time (usually midnight) and the penalties for being late are significant, a lot of students stop before the project is done. In other words, the maximum time spent on these assignments is as low as it is partially because there just aren't enough hours between the time the assignment is handed out and the time it is due. If students had unlimited time to work on the projects (which  would correspond a little better to the working world), the spread could only be higher.

This data is not completely scientific. There's probably some cheating. Some students may overreport the time spent on assignments in hopes of gaining some sympathy and getting easier assignments the next time. (Good luck! The assignments in CS 323 are the same today as they were when I took the class in the 1980s.) Other students may underreport because they lost track of time. Still, I don't think it's a stretch to believe this data shows 5:1 or 10:1 productivity differences between programmers.

But wait, there's more!

If the only difference between programmers were productivity, you might think that you could substitute five mediocre programmers for one really good programmer. That obviously doesn't work. Brooks' Law, "adding manpower to a late software project makes it later," is why. A single good programmer working on a single task has no coordination or communication overhead. Five programmers working on the same task must coordinate and communicate. That takes a lot of time. There are added benefits to using the smallest team possible; the man-month really is mythical.

But wait, there's even more!

The real trouble with using a lot of mediocre programmers instead of a couple of good ones is that no matter how long they work, they never produce something as good as what the great programmers can produce.

Five Antonio Salieris won't produce Mozart's Requiem. Ever. Not if they work for 100 years.

Five Jim Davis's -- creator of that unfunny cartoon cat, where 20% of the jokes are about how Monday sucks and the rest are about how much the cat likes lasagna (and those are the punchlines!) ... five Jim Davis's could spend the rest of their lives writing comedy and never, ever produce the Soup Nazi episode of Seinfeld.

The Creative Zen team could spend years refining their ugly iPod knockoffs and never produce as beautiful, satisfying, and elegant a player as the Apple iPod. And they're not going to make a dent in Apple's market share because the magical design talent is just not there. They don't have it.

The mediocre talent just never hits the high notes that the top talent hits all the time. The number of divas who can hit the f6 in Mozart's Queen of the Night is vanishingly small, and you just can't perform The Queen of the Night without that famous f6.

Is software really about artistic high notes? "Maybe some stuff is," you say, "but I work on accounts receivable user interfaces for the medical waste industry." Fair enough. This is a conversation about software companies, shrinkwrap software, where the company's success or failure is directly a result of the quality of their code.

And we've seen plenty of examples of great software, the really high notes, in the past few years: stuff that mediocre software developers just could not have developed.

Back in 2003, Nullsoft shipped a new version of Winamp, with the following notice on their website:
Snazzy new look!
Groovy new features!
Most things actually work!

It's the last part... the "Most things actually work!" that makes everyone laugh. And then they're happy, and so they get excited about Winamp, and they use it, and tell their friends, and they think Winamp is awesome, all because they actually wrote on their website, "Most things actually work!" How cool is that?

If you threw a bunch of extra programmers onto the Windows Media Player team, would they ever hit that high note? Never in a thousand years. Because the more people you added to that team, the more likely they would be to have one real grump who thought it was unprofessional and immature to write "Most things actually work" on your website.

Not to mention the comment, "Winamp 3: Almost as new as Winamp 2!"

That kind of stuff is what made us love Winamp.

By the time AOL Time Warner Corporate Weenieheads got their hands on that thing the funny stuff from the website was gone. You can just see them, fuming and festering and snivelling like Salieri in the movie Amadeus, trying to beat down all signs of creativity which might scare one old lady in Minnesota, at the cost of wiping out anything that might have made people like the product.

Or look at the iPod. You can't change the battery. So when the battery dies, too bad. Get a new iPod. Actually, Apple will replace it if you send it back to the factory, but that costs $65.95. Wowza.

Why can't you change the battery?

My theory is that it's because Apple didn't want to mar the otherwise perfectly smooth, seamless surface of their beautiful, sexy iPod with one of those ghastly battery covers you see on other cheapo consumer crap, with the little latches that are always breaking and the seams that fill up with pocket lint and all that general yuckiness. The iPod is the most seamless piece of consumer electronics I have ever seen. It's beautiful. It feels beautiful, like a smooth river stone. One battery latch can blow the whole river stone effect.

Apple made a decision based on style, in fact, iPod is full of decisions that are based on style. And style is not something that 100 programmers at Microsoft or 200 industrial designers at the inaptly-named Creative are going to be able to achieve, because they don't have Jonathan Ive, and there aren't a heck of a lot of Jonathan Ives floating around.

I'm sorry, I can't stop talking about the iPod. That beautiful thumbwheel with its little clicky sounds ...  Apple spent extra money putting a speaker in the iPod itself so that the thumbwheel clicky sounds would come from the thumbwheel. They could have saved pennies ... pennies! by playing the clicky sounds through the headphones. But the thumbwheel makes you feel like you're in control. People like to feel in control. It makes people happy to feel in control. The fact that the thumbwheel responds smoothly, fluently, and audibly to your commands makes you happy. Not like the other 6,000 pocket-sized consumer electronics bit of junk which take so long booting up that when you hit the on/off switch you have to wait a minute to find out if anything happened. Are you in control? Who knows? When was the last time you had a cell phone that went on the instant you pressed the on button?

Style.

Happiness.

Emotional appeal.

These are what make the huge hits, in software products, in movies, and in consumer electronics. And if you don't get this stuff right you may solve the problem but your product doesn't become the #1 hit that makes everybody in the company rich so you can all drive stylish, happy, appealing, cars like the Ferrari Spider F-1 and still have enough money left over to build an ashram in your back yard.

It's not just a matter of "10 times more productive." It's that the "average productive" developer never hits the high notes that make great software.

Sadly, this doesn't really apply in non-product software development. Internal, in-house software is rarely important enough to justify hiring rock stars. Nobody hires Dolly Parton to sing at weddings. That's why the most satisfying careers, if you're a software developer, are at actual software companies, not doing IT for some bank.

The software marketplace, these days, is something of a winner-take-all system. Nobody else is making money on MP3 players other than Apple. Nobody else makes money on spreadsheets and word processors other than Microsoft, and, yes, I know, they did anti-competitive things to get into that position, but that doesn't change the fact that it's a winner-take-all system.

You can't afford to be number two, or to have a "good enough" product. It has to be remarkably good, by which I mean, so good that people remark about it. The lagniappe that you get from the really, really, really talented software developers is your only hope for remarkableness. It's all in the plan:

Best Working Conditions        →        Best Programmers   →        Best Software →        Profit!


Oh, and by the way: My company, Fog Creek Software, has paid internships in software development for qualified college students. They're in New York City. Free housing, lunch, and more. And you get to work on real, shipping software with the smartest developers in the business.

About the Author: I’m your host, Joel Spolsky, a software developer in New York City. Since 2000, I've been writing about software development, management, business, and the Internet on this site. For my day job, I run Fog Creek Software, makers of FogBugz—the smart bug tracking software with the stupid name, and Fog Creek Copilot—the easiest way to provide remote tech support over the Internet, with nothing to install or configure.

                                                                              
 Hitting the High Notes
By Joel Spolsky
Monday, July 25, 2005


System behind the numbering of TRAIN NUMBERS…


During my 5th semester mini project, I have worked on “Indian Railway reservation system” and I was collected more information related to  Indian Railway. The numbering of Trains is also a key feature of Railway system. Now I’m going to tell you about the system  behind the numbeing of trains..?
   I think this article will be useful for those STUDENT who  wants to work  on this field(INDIAN RAILWAY)
And also for those who wants formal knowledge about railway.

For most long-distance passenger trains, the following system is now followed. A train number has 4 digits.

[3/00] The first digit indicates the region or zonal railway, as indicated below:

    0 is for Konkan Railway
    1 is for CR
    2 is for superfasts and Shatabdi trains regardless of zones.
    3 is for ER
    4 is for NR
    5 is shared by NER and NFR
    6 is for SR
    7 is for SCR
    8 is for SER
    9 is for WR

If the first digit is not '2', then the second digit indicates the division of the home shed or station that "owns" the rakes used for the train (the primary maintenance depot). This is usually in the same division as that of one of the end-points of the train's run, but sometimes it isn't. Usually, '0' for the second digit indicates the headquarters of the zone.

[3/00] A listing of the 2-digit prefixes and the corresponding home stations is given below. The "other" notation indicates the prefix is used for other home sheds in the zone that don't have their own prefixes. Prefixes not listed are not known to be in use.


Central Railway

Eastern Railway

Northern Railway
North-Eastern and North-east   Frontier Railways
         
10 is for Bombay, also some       Pune trains
         
11 is for Jhansi
         
12 is for Bhopal
         
13 : ??
         
14 is for Manmad / Nagpur
         
15 : ??
         
16 : ??


30 is for Howrah
         
31 is for Sealdah
         
32 is for Danapur
         
33 is for Dhanbad
         
34 is for Malda


40 is for New Delhi
         
41 is for Allahabad
         
42 is for Lucknow
          
43 is for Moradabad
        
 44 : other
         
45 is for Ambala
        
 46 is for Firozpur
 47 is for Bikaner
 48 is for Jodhpur


50 is for Lucknow (BG, NER)
51 is for Varanasi (BG, NER)
52 is for Sonepur / Samastipur  (BG, NER)
53 is for Izzatnagar / Lucknow (MG, NER)
54 is for Varanasi (MG, NER)
55 is for Samastipur (MG, NER)
56 is for Lumding (BG, NFR)
57 is for Katihar (BG/MG) / Alipurduar (BG) (NFR)
 58 is for Lumding / Alipurduar (MG, NFR)
 59 is for Tinsukia (NFR)




Southern Railway

South-Central Railway


South-Eastern Railway


Western Railway
 60 is for Chennai
 61 is for Chennai Egmore
 62 is for Mysore
 63 is for Thiruvananthapuram
 64 is not in use
 65 is for Bangalore
 66 is for Palghat
 67 is for Madurai
 68 is for Trichy


 70 is for Secunderabad
 71 : other
 72 is for Vijayawada
 73 is for Hubli (BG)
 74 is for Guntakal (BG)
 75 is for Hyderabad
 76 is for Kacheguda
 77 is for Guntakal (MG)
 78 is for Hubli (MG)

80 is for Kharagpur
81 is for Chakradharpur
82 is for Bilaspur
83 is for Sambalpur and others
84 is for Khurda Road
85 is for Waltair
86 is for Adra

90 is for Mumbai
 91 is for Vadodara
 92 is for Bhavnagar (BG)
  93 is for Ratlam
  94 is for Kota
  95 : other
  96 is for Ajmer
  97 is for Jaipur
  98 is for Bhavnagar (MG)
   99 is for Rajkot


If the first digit is '2', it indicates a train designated "superfast" or a Shatabdi Express; in this case, the second digit indicates the zonal railway, as shown below:

    20 is for Shatabdis on all zonal railways
    21 is for superfasts on CR
    23 is for superfast on ER
    24 is for superfast on NR
    25 is for superfast on NER and NFR
    26 is for superfast on SR
    27 is for superfast on SCR
    28 is for superfast on SER
    29 is for superfast on WR

These superfasts with numbers starting with a '2' are generally closely monitored by railway officials and the Railway Board to ensure punctuality and operational priority. Special trains run by various zonal railways at different times also usually fall in this category and have 3-digit numbers starting with '2'.

As mentioned above, the division that owns the rakes may not be one of the end-points of the train. E.g., the Tirupati-Mumbai Exp. has numbers 6353/6354 because the rakes come from Trivandrum, and are shared with the Nagercoil-Tirupati Exp. (6351/6352). The Shaheed Exp. between Delhi and Darbhanga is numberd 4649, but 46 is the Firozpur division and neither terminus for the train is in that division. A train between Jammu Tawi and Amritsar, both in the Ferozpur division of NR (45) has numbers 9113/9114, indicating the Vadodara division of WR! In all these cases the rakes are shared with other trains that do go through the referenced division. There are some other such anomalies.

In some rare cases, the division prefixes of the two trains of an up/down pair are differnet. E.g. Tirupati-Trichy Exp. which was 6799/6800 (67 - Madurai, 68 - Trichy). This could indicate the two divisions sharing in rake maintenance, or could just be anomalies in the system.

Sometimes two trains with the same name and same endpoints may have different numbers because they take different routes on different days of the week. E.g. 2303 Poorva Exp. : Howrah - Asansol - Patna - Mughal Serai - Allahabad - New Delhi (Mon - Tue - Fri - Sat); and 2381 Poorva Exp. : Howrah - Asansol - Gaya - Mughal Serai - Varanasi - Allahabad - New Delhi (Wed - Thu - Sun). [8/01].

Some non-mail, non-express, non-superfast trains also use this numbering scheme (e.g., some of the trains with the designation "fast passenger"). Commuter locals, some passenger services, etc. do not follow this scheme. These local trains and passenger services tend to use two or three-digit numbers, which may not be unique across zones.

Some trains that split or merge at various points, or which have sectional carriages ("slip coaches" as they are sometimes termed) might have additional suffixes ('A', 'B', etc.) in addition to the 4-digit numbers to distinguish among the different portions of the train. E.g., the 6635 down Netravati Exp. bifurcated at Shoranur (earlier at Palghat); 6635A was one half of it that went to Mangalore, while 6635B was the other half that went to Cochin.

The 4-digit system with a unique number (the 'universal number') for each train regardless of the zones that it operates in is a new one, adopted around 1989. Earlier, trains were numbered from '1' all the way up to 3-digit numbers within each zone. Numbers were thus not unique across zones, and a given train sometimes changed numbers on the same route as it crossed zonal or other boundaries. In many cases, the final digits of the new number correspond to the old number of the same train service.

Often the "down" train of a pair of trains between two destinations has the lower number (the odd number) and the "up" train has the higher number (the even number) but this is far from uniform. (See up/down note below.)

Holiday specials Usually, holiday specials have 3-digit numbers, where the first digit indicates the zonal railway that operates the train. (Note: This is true only for holiday specials; normal passenger trains that have 3-digit numbers do not follow this rule.) Fast trains among these, and trains that are given priority for various reasons, have a 3-digit number starting with '2'.

Konkan Railway trains often add a "KR" prefix to the long-distance train numbers, which may be shorter than 4 digits, and do not always use the leading "0" digit in the 4-digit versions. For example, KR 3 / KR 4 service is also given the numbers 1113/1114 (no leading 0's). Similarly, KR5 / KR6 is the Diwa-Savantwadi train, and KR7/KR8 is the Savantwadi-Madgaon train. Variations exist: 0111/0112 Konkan Kanya Exp. is also referred to as the KR1/KR2, or sometimes KR0111 / KR0112. So to some extent the KR trains do not follow the numbering system used by IR trains. Local trains and DMU services on KR use a system where the termini of a service are indicated by an alphabetic prefix. E.g., Karwar is "KA", Kudal is "K", Ratnagiri is "RN", and Madgaon is "M"; so the Karwar-Kudal DMU service was numbered KAK1 / KAK2, the Kudal-Ratnagiri DMU service was KRN1 / KRN2, and the Karwar-Madgaon service KAM1 / KAM2.

Passenger services within a zone sometimes have just two or three digits, not conforming to the pattern above, and sometimes prefixed with codes indicating the station the serve (e.g. "LK21" passenger service from Lucknow; "DK-1" is the Delhi-Khurja EMU; "AD-3" is one of the Aligarh-Delhi MEMUs; etc. SR runs DMU services between Tambaram and Egmore numbered S-2, S-7, etc.). These one-, two- or three-digit numbers may be repeated in other zones.

Before 1989, trains had numbers that were allotted by their respective zonal railways, and which were not necessarily unique across the zones. E.g., 31 Down on WR was the Kutch Exp. and 31 Down on CR was the Hyderabad Exp.; both reached Mumbai -- situations like this caused considerable confusion. To disambiguate these, reservation clerks and others often used extra annotations, for instance '31/WR' for 31 Down on WR, or '31/F/WR' (31 Down on WR, Forward journey booking), or '31/R/WR' (31 Down on WR, Return journey quota).

Reservation system Today, the reservation system is networked to allow most stations with online reservation facilities to offer bookings for almost any train from anywhere to anywhere. Earlier different sections of a train's route, which corresponded to different quotas for reservations, were given different numbers, with ad hoc alphabetic suffixes such as 'A', 'F', 'R', etc., in the reservation systems of each section. E.g., '6635F' for the forward quota for 6635, '6635R' for the return journey quota, '6635A' for the part of the train that went to MAQ after splitting at PGT; '6635B' for the part of the train that went to CHTS, etc. Each booking operator only saw the numbers for which his station had a quota for issuing tickets.




Question: Trains are often referred to as going "up" or "down" -- what does this mean?

Down refers to a train travelling away from its headquarters (i.e., the homing railway) or from its Divisional headquarters, whichever is closer. Up refers to a train travelling towards its headquarters or divisional HQ, whichever is closer. Eg, 2903 DN Frontier mail is down travelling away from its HQ (Bombay) and from the division that homes it (Bombay division) and similarly 2904 UP refers to it travelling back towards Bombay, its HQ and division. Usually the numbers for the "up" and "down" trains differ by just 1.

As for the Shatabdis, the odd number indicates the Down run and the even number for the Up run. E.g. New Delhi - Bhopal Shatabdi (the first Shatabdi) is numbered 2001 DN (away form Delhi) and 2002 UP (towards Delhi).

MILSTONES OF INDIAN RAILWAY….!!!


  • Ø  Indian Railways is the largest railway system in the world under a single management

    Ø  The total distance covered by the 14,300 trains on the Indian Railways everyday, equals three & half   times the distance to moon

    Ø  The first train on Indian soil ran between Bombay and Thane on the 16th of April 1853

    Ø  IR has about 63,028 route kms. of track

    Ø  IR employs about 1.55 million people

    Ø  It carries over 13 million passengers & 1.3 million tones of freight everyday.

    Ø  It runs about 14,300 trains daily

    Ø  IR has about 7,000 railway stations

    Ø  The longest journey on the IR is from Jammu Tawi (North) to Kanya Kumari (South), a distance of about  4,751 kms. covered by Himsagar Express in about 66 hours

    Ø  The longest platform in the world is at Khragpur and is 2,733 ft. in length.

    Ø  Computerized Railway Reservation system started at Delhi in 1986.

                                                                             By…
                                                                                      

                                                                PRAMOD KUMAR KUSHWAHA
                                                               BRANCH- COMPUTER SCIENCE & ENGG.
                                                                YEAR- 3rd YEAR (VIth sem. )