Trying to Improve
I've been doing well, working on the few freelance projects I currently have open. In addition to those, I've been doing a very heavy focus on applying (as always, in and of itself a full time job) and working on the algorithm and interview question focused AlgoExpert.io
As far as the applying goes... I've had one or two step one conversations that I felt went well, and am hoping to hear more from. Besides those, just a whole lot of nothing. It's really tough out there. I see all these posts on reddit's /r/DataIsBeautiful about applications, graphs where people follow the same basic model of showing total applications, responses, second interviews, offers, etc. I feel like I'll be hitting 1k on the total applications fairly soon, and I could count the number of serious responses on one hand.
As I've mentioned before, the AlgoExpert site is excellent. I haven't even dived into the instructional videos yet, just the problems themselves, of which I've done about 1/3. There are quite a few in that number I'd like to revisit to get a more solid understanding of, but I don't want to 'stall out' for too long on any given one. Hopefully, by expanding my overall understanding, I can keep learning techniques and then can revisit ones that I've stumbled on and apply them.
I'm trying to be more aware of my shortcomings in approaching problems, and then trying to improve. One area that needs improvement is definitely recognizing edge cases. I believe I mentioned that before, but I continue to have problems with it.
Another is trying to do too much at once. I definitely feel like I've improved in utilizing my own helper functions, which just add so much to your code's overall readability. Beyond that, though, I think I need to do better at boiling down the problem at hand to one element at a time. What needs to happen first? Then? And so on.
Sometimes, I'll watch AlgoExpert's video walkthrough -- the concept explanation, rather than the code walkthrough. It's so amazing how, once the underlying concept clicks, the code itself is almost trivial.
The only time I've ever looked at code that would align with their 'official' solutions and thought it was convoluted was when it was necessarily so -- tricky methods on tree nodes, or similar.
Otherwise, it's often 50% as many lines as my initial attempt. The logic is elegant. Once the veil drops, its such an 'aha!' moment.
I really hope I can continue to get better with these. I do feel proud of a number of my solutions -- but that number can and should keep getting bigger and bigger.
I do worry that I'm focusing too much on this, rather than working on additional projects for my portfolio. It's definitely a worthwhile venture, though. I will only get better as a programmer by continuing to progress with it. As I've thought a hundred times before -- if only I never had to sleep at all, then I could do everything I wanted to do, all at once, and then some.