Many people in the world of IT have not done this all their lives. They use the skills and techniques they developed at their other jobs to help them. This bit of advice goes for all professions, not just the world of technology. Were you an automotive technician? I was and I use the diagnosis and troubleshooting skills I learned when I am working on a technology problem. Did you work in retail sales? I did and I use the customer service skills when dealing with my users. Did you work in construction? I did and I use those skills when designing and installing physical infrastructure. Everyone has a personal and professional past, use them to your advantage!
This is a very tricky question. Depending on your specialization it can be lucrative but it can also be a handicap. Sometimes knowing an old technology means you can name price - there is still a lot of old Cobol code that is too expensive to replace and Cobol developers are getting harder to come by. When I am looking for new employees I would much rather have someone that is well rounded than someone that only knows one thing, no matter how well they know that one thing. I run a shop that has about 20 IT professionals and we do EVERYTHING IT-related for our organization. We support roughly 7,000 company-owned devices and around 10,000 end-users at any given point in time. Linux, check. Windows, check. Cisco network hardware, VMware environment, NetApp storage, Oracle databases? Check, check, check, and check. I think you get the idea here.
I am lucky enough that my past has afforded me the ability to look at the whole picture and help me troubleshoot issues as they arise. If I, or my employees, were highly specialized it would make that much harder to do. Everyone would just point their fingers at each other and not spend time digging into their silo to see if it may actually be a problem with the system(s) they run. That is not to say that everyone on my team can do every job - the desktop support folks would probably have a hard time developing a new web application. The network administrators would probably have a hard time troubleshooting that specialized software that is only used by 3 people. BUT - the desktop support folks understand VLANs and know, based on IP address, when a computer is in the wrong network segment. The network administration folks know "that" software requires access to specific ports in another VLAN. Everyone speaks enough of the same technology-based language to work together.
Don't ignore the rest of the technology stack! A programmer needs to understand enough about networking to troubleshoot/debug their code in a production environment. They need to understand a real-world network has latency and connections that may not be 100% reliable. They must be able to make their code resilient enough to deal with the real-world issues it will encounter. Likewise, network administrators need to understand that code evolves over time and they may need to adjust their Access Control Lists as part of that evolution. That does not mean that you, as a developer, need to know how to stand up a Cisco network connecting 15 different sites through VPN tunnels with nothing but a laptop and console cable. It also does not mean that you, as a desktop support technician, need to understand the intricacies of java key stores. A developer should understand that IP addresses change over time - DON'T BURY IP ADDRESSES IN YOUR CODE! A desktop support technician should know the difference in the JVM and JDK installations.
Don't spend all of your time focusing on ONE technology unless you already have a job that NEEDS you to focus on that one technology. There is always the next big thing on the horizon. Some companies will want to use that next big thing and some companies will want to use their tried and true stack. If you go to work for an established organization there WILL be mission-critical legacy systems that are too expensive to rip and replace with the hot new thing. There will be push-back from end-users because "this is the way it has always worked."
I might catch some flak for this one... Degrees, certifications, certificates, etc. are great to help open doors but they are not the end-all and be-all of working in the IT field. Passing a test does not mean you can do real-world work. Even with certifications in hand, you should expect to constantly learn new things. That certification is great, but you WILL be hitting up your favorite search engine to help you figure out the latest issue you are fighting with, the syntax for that command you run once a year, or the off the wall error message your code is giving you.
Ultimately it is more important to understand how to find the answer than instantly know the answer right off the top of your head. Being a Cisco specialist is awesome until you run across that odd HP ProCurve switch that has been hiding at the bottom of that network closet for the past 20 years (and amazingly still runs). Knowing every PHP function is great until you find yourself troubleshooting an ASP.NET application written in Visual Basic. Spend time learning how to find the answers instead of trying to learn all the answers to all the questions - it is impossible to know all the answers. The more you know the more you realize you don't know...
Don't expect to work your 8-hour shift and turn your brain off at the end of the day. You WILL spend nights, weekends, and holidays learning about the next version of IOS (no, not the apple iOS), features of that new Linux kernel, how to fix the blank Cortana search bar (curse you Microsoft for embedding Bing in the local Windows search), etc. DO NOT expect your boss to give you a big fat bonus for installing Virtual Box on your home computer and spinning up 5 virtual machines to figure out how to configure that load balancer you have been fighting with. DO expect to progress in your career by taking initiative and learning things outside of your normal business hours. DO expect personal and professional growth when you expand your skillset.
DO NOT get into the IT field expecting to deal with machines all day and not have to interact with people. You will have to work with end-users to determine their needs in order to provide a solution. You will have to ask "silly" questions and you will have to ask the same question 23 different ways before your users will understand what you are really asking. You will get questions about their "adding machines" (yes I have had users submit technology helpdesk tickets asking to plug in a calculator). You will get complaints of no network connectivity when the power is turned off in a building - sometimes this complaint will come from one of your fellow IT professionals. You will find out things about your clients and co-workers that you really did not want to know - who knew that naked gardening was a thing? You will find out that technologically helpless people suddenly know how to clear the cache of their browsers when you take that web filter from monitoring to enforcement.
Ultimately the world of an Information Technology Professional revolves around people and customer service.
Most of this is based on personal opinions and experiences. I would like to give credit for the header image to Markus Spiske on Unsplash.