Depending on the context, assuming can be a negative or a positive. In my opinion I see assumptions as something that can be very helpful, if you do so correctly and carefully.
Working at iO1, the first thing I learnt about assuming is the it makes an a** out of u and me (ass-u-me). As an example, you wake up in the morning and you need to catch the bus to work. You assume that the bus will eventually get to the bus stop and you will be on your way. Then you soon find out that there was a 24 hour bus strike the very same day you wanted to catch the bus… while you were at the bus stop! What let you down is that you *thought* the buses were in service.
Here is an example from a technical point of view. You need to build a new server somewhere at a locked down location where the server is only accessible from that location. You are given information about what type of server it is, like the OS, how much RAM, CPU etc. You get to the location and find out that actually the OS does not have the necessary package repository with the necessary packages needed to install your applications. So that would have been a whole day wasted building a server because you did not enquire about the software repositories available to you.
I know the technical example may seem unlikely but it does happen and it shows that making careless assumptions can cost.
Why it can be positive?
The positive aspect of assumptions comes when you do so with care. So you want to catch a train but before you leave you check your train times. You notice that there are major delays with your service, so you leave earlier than normal. If you had got to the station without checking the train times, you would have been a lot later than expected.
From a technical side you should assume at the very beginning of any project,evenbefore you begin requirements gathering etc. This is an advantage because you are basically stating what would be required for you to work effectively on the project. As an example this would have been an assumption you would include at the begining of a project – The server has a package repository that allows us to install and update the following packages – Apache2, MySQL, Varnish, PHP, Memcache… etc. This would have saved you time and therefore, money.
To summarise, you should be very careful when making assumptions as they can have a negative affect in the long run. You will find yourself working on a project that will run longer than anticipated. Making assumptions right from the get go helps to raise questions and potential bumps in the road early, and aligns expectations from all angles of a project or task.