I built ContainerSSH at that time too to learn Go (look up the first versions, it's ridiculous how small they are) and then went to work for Red Hat with my new found knowledge.
I can only speak from my experience, but what helped me land interviews ( as a gradually built up over the last 3-4 years) was:
- Having contributions in high profile open source projects name-dropped at the beginning of my CV. (Front-load the interesting stuff. Also, these should be substantial works in case somebody goes to check.)
- Having relatively well-known open source projects I built from scratch (ContainerSSH, gotestfmt, etc) in my CV with well-known users I can also name drop. These projects had nothing to do with my day job and I built them in my free time.
- Having spoken at several conferences. This is the most unfair of all since not everyone can travel and having the conference in there doesn't say anything about the quality of the talk, but it seemed to help get through the recruiter filter.
What helped me get through the interviews (again, from my experience):
- Having experience in diving into unknown codebases and problems. Most companies that are serious about coding will have you do live coding, take home exercises, or read some code in the interview. If you do enough work on open source stuff, you'll develop this automatically as you will be jumping into code that's not yours.
- Being able to do TDD in the live coding interview and still finish on time. Nobody I talked to actually does hard core TDD in the industry and most people are stuck with a ton of legacy code, but this is a magic trick that will get you some eyebrows raised assuming you don't mess up the rest of the interview. Also, forget algorithmic problem solving. While at least knowing algorithms and datastructures helps, most companies don't have deep algorithmic problems in their day to day operations, so encountering these in the interview I found to be a minor red flag.
- Knowing the language basics. If it's Javascript, know your type issues or how the runtime works. If you do Go, know parallelization problems and how to solve them.
- Structure your code! On the interviewing side I had to fail too many candidates for submitting code with an unclear/messy structure for take home exercises.
Big no-nos (when I was the interviewer):
- Do not claim you contributed to a project if all you did was a typo fix.
- If you have a Github profile, make sure it's not full of forked repos you didn't contribute to. I will only look at what you linked in your CV, but others will google your name (no matter if it's illegal or not).
- Clean up or set your social media to private if you don't want interviewers to see that. Google yourself, make sure there are no red flags there.
- Don't use ChatGPT/Copilot without heavy refactoring. This is incredibly easy to pick out and not cleaning it up, not making the code style consistent screams that you have no idea what you are doing. Remember, interviewers only have your code to go by as a signal source.
- If there is a woman in the interview panel, make sure you don't just address the guys. We did interviews with my wife and we noticed this a lot. This may just be a force of habit, but for companies paying attention to diversity, this is an immediate red flag. The people who got flagged for this usually turned out to have a culture fit problem in other areas too, but it's worth keeping in mind.
- Leave your ego at the door. They may criticise your code, but don't get defensive! Stay factual, that will help defuse the situation.
- Don't have typos in your CV. Use a spell checker.
Finally, really, don't give up. My experience is just that of one person, I (probably) don't live in the same country, probably don't have the same amount of time available as you do, and I (probably) don't work in the same area as you. My advice may be complete garbage and not applicable to your situation.
I will have something to show for by the mid-year. I'm sure. Thank you.
It really depends on the position and nature of the responsibilities though. I've had position where at least half my time was meetings, and others where there was just a lot of Slack chatter to work through during the day. Right now I'm on a limited-time contract with a very specific project to iterate on and finish up, so I don't get pulled into peripheral company decision meetings, 1-1s, etc as much. This appears nicely conducive to programming time.
I think I would need a bit more information about your current seniority and skill levels before I could give you more specific direction. There is always the default answer if you want to move up higher that communication skills are important, and that's true but what I don't see as often is developing the skill to let decisions go and to not only find ways to live with them but actually accept those decisions and move forward with them.
Absolutely speak up if you disagree, and communicate clearly the prior experiences that is helping guide your decision. Talk about your assumptions and where you think future pitfalls might be. If your team or manager decides to go down a road you don't agree with or don't think is optimal... Let it go. Work with it. Try and accept that as a path forward and embrace it. You might not have the full picture, it might be a legitimately better strategy, or you might be right. In any of those scenarios though fighting against the current, trying to go rogue to prove your path is correct. Those will only lead to ill-will. If it does turn out to be the wrong path, don't play the "I told you so card", take the high road and just move forward.
A lot of engineers, myself included, look back at prior decisions more than looking forward. Reflection is important, and lessons can be learned but we're there to build things, not be right all the time. The bigger your team the bigger and more intense things you can build, but only if you're all working with the current of development.
The more you work with your team, the more they trust you and as you gain in seniority you will have a peak of silent "I told you so moments", that's usually when I've found it was time for me to go up to the next level of seniority as its probably time to start mentoring the people around you.
None of this is about getting more coding time, but I don't think I've ever really optimized for that. Maybe think about what you're trying to get out of that coding time. Maybe what you're actually looking for is unbroken focus time, that I have optimized for but also involves working with your team. Communicate with your team that you would like more focus time, propose things like protected afternoons (meetings only in the morning) or meeting free days (I've found Tues/Thurs usually work best for this).
If you provide me with a bit more detail I might be able to give less general advice.
I’ve found myself in the I told you so moments in my team and have had an informal heads-up about a promotion. It’s too soon to even be talking about this, but I hope it gives you enough context as I’m looking forward to you advice because your last comment was really really good. Thank you for taking the time.
I’m not in Silicon Valley or any other tech hub, I’m in a small country in Africa and want to put a dent in the engineering world. A cliché I take very seriously :).