I've spent the last year and a half developing the software part of a bigger product as the only software engineer in a startup that I cofounded. It had many benefits but also made me realize these surprising benefits of having more experienced colleagues around.
Way too often, as an inexperienced developer, I just wasn't sure what my experience in working with technology should be like. I'd choose libraries that were difficult to use and spend time with programming languages I didn't enjoy working with.
Some time ago, I had the experience of using TSLint with up to a 2-second delay on changes without knowing that it shouldn't be like that and how important consequences it will have for my productivity and code quality (as I'm writing this, it sounds quite obvious but I'm sure you can think of times when obvious problems or solutions hid from you in plain sight).
If there was a colleague next to me with more experience using TypeScript they would immediately point out to me, how crucial it is to fix this issue.
2. You'll be reminded about taking breaks and inspired to take on different work organization methods
It's way too often overlooked how important it is to have patterns of organizing your work as a developer. And there is no better way of realizing that you're bad at it than by observing your more senior co-workers. Even if you don't realize it yet, you'll at least be reminded to take a break when they do it instead of falling into a 5h coding frenzy and waking up unproductive and hungry on the other side (still happens to me occasionally 🙃).
If you're not doing it already, experiment with the Pomodoro technique to figure out what kind of rhythm of work and breaks makes sense for your body and your mind. For Windows, I recommend this super simple app called Focus 10.
One of the most important policies in life I have is direct and honest communication. And there's almost nothing else that puts it at a test as much as discussions and conflicts with more senior team members. If you don't get to practice communicating your point of view without causing too many negative emotions to your team members, you'll lack one of the most crucial skills to maintaining healthy dev-dev relationships.
A quick tip that used to help a lot in a small team I was a part of: whenever you seem to be heading towards a disagreement, ask each other "how strongly do you feel about this from 1-10?". We'd often find that even though a person gets heated up in the discussion they actually don't mind letting the other one take the lead on the decision - they would answer e.g. 2 while the other person said 9.
Coding can be a very solitary practice. Working alone you might spend weeks or months without much appreciation coming in from the outside world (heck, when you're learning to code it might feel like you've spent years just making mistakes and writing useless code - if you feel like that: hit me up, I'll have some advice of how to structure your learning process better).
But there aren't many moments more rewarding in a programmer's career than the times when someone you look up to reaffirms you with a well-deserved compliment. Coders are often a tough bunch, so if you find a colleague that is a solid programmer, knows how to communicate, and is willing to guide you, sit close-by and learn to listen.
I'm almost joking. But not really. A few weeks ago in the darkness of the pandemic and the Danish winter combined my motivation to program was revived but something as silly as customizing my vscode experience. I changed my vscode font to
Fira Code, started using these cool coding ligatures (special characters that combine multiple other characters, e.g.
=> will become an arrow that looks like 1 character) I saw at my colleagues' screens years ago but somehow never tried myself, and I installed the
Bracket Pair Colorizer extension. Together it made my IDE shine and my brain feel like it's my first day of programming.
Of course, I'm exaggerating a little and the excitement didn't last very long but what did stay with me is the feeling that I am in charge of my own experience. Every time I notice the colorful brackets or the ligatures it reinforces that feeling (I argue in another article for why I think it's so important to take an active part in shaping your coding environment).
Ok, but what if someone just started to learn to code or for other reasons doesn't have access to more experienced colleagues? Well, there are some alternatives: read blogs, attend conferences (when there happen to be no raging pandemics at that moment), watch vlogs to understand better how people with more experience structure their work and coding approach. Here's a cool example of a blogger who put a lot of effort into creating a customized environment that suits his needs perfectly and who inspired me to customize my vscode.
But in the end, I'd say programming is a little bit like music. You can do it alone but in the end, as a social creature that we happen to be, you'll regret not having people around you while on your path to becoming a great coder.