Being sometimes a player instead of gm, I know how boring railroading can be, and it happens too much, especially with new gms. Railroading is making a game where the players must follow a set path (or railroad, hence the name), they cannot go outside this path. In this kind of games if the gm has prepared at some point, pcs will have to make this battle at this point, no matter how hard they try to avoid it. Everything is set beforehand, so the players won't have any choices but to follow the path.
This technique of gming has only one good point: since everything is set beforehand, the gm will be able to make easily a consistent story. That good point is why railroading is widely used among new gms (which isn't a bad thing, if they move on when they get the hang of it all) because they don't have to make too much of improvisation. But this is the only good point. Railroading private the players from what is essentially the most fun in rpgs: freedom. It simply anihilate any free will the players could have. If the players don't do as planned, then something will make them do as planned, or in the same situation.
For example: A railroading gm has planned that the pcs will fight a couple of yak physads when they will encounter one of their contacts. The pcs decide to follow another path they thought up, and call their contact to cancel the meet. The gm had prepared this encounter, so he decide that this other path doesn't lead anywhere, or any other path for that matter, so the pcs must encounter their contact, and the yaks. No matter how hard they try to avoid it, the yaks will be there.
That sucks.
In this example the players didn't have any
choices: they had to battle the yaks. Whatever
they did it had the same result, the way they
acted didn't have any impact on the story. That's
boring for the players, if you are not in control
of what is happening you are not having fun
(that's why gming is so fun ;).
So how do you prevent railroading? Quite
simply, don't prepare everything beforehand and
don't be affraid to change what you have
prepared. In life there aren't any plot, the
events simply flow from one another. Shadowrun is
like that too, events are not set before they
happen, so making a plot does not represent
reality. Let your npcs react to the events as
they happen, like they would in real life. The
key to all this is improvisation, with a little
practice it is possible to make entire runs
without anything written, just a couple of ideas
in your head.
Npcs are often played like stupid cannon fodders: guards stand there, shooting till they're dead, like if they didn't care about their life, etc. I used to play my npcs (mostly the not-so-important ones, like guards) like that, but one day I realised that in fact these guards are characters like the players, that they care about their life, they have a personnality of their own and want to see their loved ones tomorrow. This changed my way of gming. Guards no longer shot til they were dead, they began to run away when they were injured, to hide and overall to save their lives (even though my players don't allow them to do that very often): they were acting like human beings instead of cannon fodders.
Thinking of npcs as people made combat more interesting, they weren't acting stupidly anymore. Combat became more dynamic, with npcs running, jumping, hiding, etc., in fact my game were much improved by that. Even more important is the fact that my players now have to stop injured guards from going away, since they will probably ring the alarm.
In the same vein, a fact I've seen often as a
player is gms who play their important characters
stupidly, mainly by letting them get in front of
a bullet. Important and powerful npcs shouldn't
die stupidly because they wouldn't be important
and powerful if they were stupid. So, how can you
make your npcs act with more intelligence? Quite
simply don't get them in front of a bullet (or a
spell), that way they won't die. How? Simply use
surprise elements (the bad guy just have to hide
somewhere, and snipe pcs from there), always give
him some possible exit door (beware of not making
the npc always escape, nomatter what, that would
be railroading) when possible and most of all,
make your npcs at least as powerful as your pcs.
Too often I've seen ridiculously easy to beat
adversaries.
A last word about how to make lively descritpion of people, places, etc.: use the five senses, not just sight. Just adding sound adds a lot to the atmosphere, odor makes it even better, the two others are luxuries for perfectionist mostly useful for special situations.
For example: You enter the old house by going through an old wooden door and enter the hallway that have a wooden floor. To you left you see a litlle kitchen and to the right the living room.
This is a litlle bit bland. Its a good description but it is possible to do better. How? By using sounds and odors (weren't you listening?)!
The example, improved: You enter the old house by going through an old wooden door that creeks when you open it and enter the hallway, where the wooden floor creeks as if it was kin to the door. Mixed odors of spice and vegetables comes from the little kitchen to your left and you can smell the odor of tobacco coming from the living room on the right.
That's better, the setting is more believable, and you can understand how the place really feel when you're there. The first example is nearer to a movie experience: you get to see, but not to feel. The second one is nearer to novels: you see and you feel, that's why novels are still popular. But that's not my point. My point is that you should use sounds and smells to add life to your settings.