Picking a correct transistor isn't very easy, since there is a large number of available variables, such as cost, availability, different types of performance specifications and so on.
What I do instead is try not to pick the correct transistor, but one that will just work and then try to improve the choice if it is necessary to do so (keep in mind that none of the stuff I do is professional).
So what you should do is get familiar with the basic specifications of transistors in general and then get the minimal performance your circuit needs. After that, try to find a transistor that will fulfill what you need.
For example, let's say that you're trying to switch a motor whose current is 500 mA and nominal voltage 12 V from a microcontroller.
Let's see what we can get just from those simple specifications:
We know that when the motor isn't working, we need a switch that will be able to block 12 V indefinitely.
Next, we know that the switch will need to pass 500 mA through it.
After that, we remember that motor is inductive and that we need something that will survive the high voltages generated when motor's power supply is switched off. So we thing a little bit about that. We could get a transistor that will be rated to survive that or we could use a freewheeling diode to solve the issue.
Next, we know that transistor needs to be controller using a microcontroller. That microcontroller will have some output voltage and current ratings. We need a transistor that can be operated by that voltage or current.
Now this is already a lot of useful information and it will eliminate some easily obtainable components from the list of potential candidates for your use.
After that, we research a bit about transistor types and see what type would be most appropriate using what we know and the list of components we can easily get. At this point, it would be a good idea to start reading datasheets for potential candidates. To do that you need to know where to start. What I do is determine how much I'd like to spend for the component and see if any components in the price range are suitable. If they are not, I expend the price range. This is also where experience comes into play. You need to be comfortable reading datasheets and know how to extract useful information from them. You gain that ability by practice.
Now let's say that we want to use a bipolar junction transistor. We know that the transistor should be capable of passing at least 500 mA. Then we see what our microcontroller can source. let's say that it can source 10 mA from a pin. To get the current gain we divide the input current by base current and get 50. That means that we'll need a transistor of current gain that is at least 50. Now in order to avoid any problems with manufacturer tolerances and to make sure that the transistor is fully saturated, we should pick a larger current gain than 50. A 100 would be great, if we can find it. Also we need to know how to calculate the base resistor for the transistor in order to set the current to needed value.
When we get the minimum gain figure, we need to look further in the datasheet to see how much heat would the transistor generate when running at 500 mA and see if the transistor would survive that. If it won't we look or one in larger case to which we can attach a heatsink or we look for a different type of transistor that will dissipate less heat. For example, a field-effect transistor may dissipate less heat if properly selected.
The story goes on and on and on and is quite complicated. For example, I wrote all this under assumption that you only want to turn the motor on and off. If you wanted to use transistor for speed control using pulse-width modulation, that would complicate issue even more, since you'd need a transistor that is fast enough for the frequency you will be using.
Now, since this is a bit complicated, one thing some people do is to get partial specifications that will hopefully prevent component from burning and then hope for the best. For example, if get a transistor that can dissipate large amounts of heat, you can try "experimenting" with it to see if it will work correctly.
Basically it's you who needs to decide when you got a component that's working good enough.