I was recently challenged to define the single most important thing needed to conduct programming as a career. I wasn't able to scope it down to one answer, but I got it down to 2 things: genuine motivation and a solid programming support network. Both of these things will allow you to make a living from programming but having both is the ultimate goal. Genuine motivation is something a lot of programmers have from the get go, it is normally produced via curiosity or passion for the art. Without the support network however you will be programming in a vacuum; other ways of doing things lost, possible answers missed and efficiency is certainly not optimal.
The same can be said for genuine motivation. If you only enjoy programming due to the network of those around you then you are in for a rude shock when you can't reach them. No amount of help dragging you through some issues will teach you how to solve problems - you simply have to have the drive to figure it out yourself. In terms of career growth however, I think the support network is much more useful then genuine motivation. Even if you dislike programming I would argue that you could make it much further in your career if you have a good support network. This is a shame of course, ideally all people in senior IT roles would have a a genuine motivation for IT however anyone who has actually worked in the real world knows this simply isn't the case.
So having a support network is important, but what actually constitutes a support network? Unlike genuine motivation the definition for a programming support network is not as intuitive. A programming support network is a collective group (or groups) of people that serve multiple purposes:
- You can go to them for general advice or about abstract issues you are having with your professional life. This could be technical or human resource related.
- They are a hub and sounding board to share and discuss the latest news, cool new technical products or ideas or the newest job postings.
- You can showcase your work and ask for honest feedback from them. Consequently you are exposed to the work of others and can be inspired by (and possibly learn from) their creations.
A support network should be a safe place that exposes you to constant stimulus and learning.
Of course programming support networks come in all shapes and sizes. You may have multiple groups that as a whole cover all the bases, such as a slack group for some parts and a discord channel for the rest. You might be able to cover all the bases from a single collective, such as a Meetup that you frequent.
If you happen to have some friendly colleagues at work they could form part of the support network. Worst case scenario a single mentor could be even be your support group. Having any support network is better than programming solo - however I would urge you to diversify to a plethora of minds to form your network. Every truly great programmer I have ever met has always had a solid programming support network that they can simultaneously fallback on and be motivated by.
Chances are if you work in IT then you already have some people in your life that make up parts of the support network, however this might not be the case if you are just starting out in your career. Building up your network can be done in a variety of ways. I recommend going to Meetups (if your city has active user groups), sourcing people you respect in your industry for the workplace or education institutes or trying to find a group online (Reddit, Discord or Slack). Getting involved in open source projects is another great way to meet like-minded programmers with a variety of experiences.
Ideally you would feel comfortable enough in your support network to discuss any professional matter (technical or otherwise) however there are other concerns that you need to look out for. If you are going down the online route then make sure to properly abstract out any details that might cause distress to your company (or your career!) if it becomes common-knowledge. There should be a certain degree of restraint and discretion when discussing company related matters to any outside parties, online or otherwise. The last thing you want is to let some company-only knowledge slip that may land you in hot water. This is especially important if your support network is purely online where everything is permanent.
Of course if you lack the genuine internal motivation from the get go then it doesn't really matter how good your programming support network is. Eventually you'll have to face the reality that you need to move jobs, either to management or to a different domain entirely.