I am a 28-year old software developer in Toronto, Canada and I was let go from my job in Jan. 2020. My superiors (direct manager and HR manager) told me it was a business decision. It was my first job after I finished my thesis-based Master's in high-performance computing and I worked there for a little over a year. I gave several interviews after losing my job and I have routinely failed in online assessments and onsite technical interviews. I am too slow in coming up with a solution and coding it or I cannot come up with a solution at all in these situations. One year has passed and I think I have only become slightly better than I was a year ago.
My bachelor's degree was in a generic engineering stream where I had no course on DS&A. This is why it took me three years to finish my thesis-based master's program which is typically 2 years long. I only started to connect the dots in my third year and began to understand how "good software" should leverage the underlying hardware. I did okay and managed to publish a conference paper. However, I still did not know enough about DS&A.
In my first job (till Jan. 2020), I did not have a specific role but I mainly worked on UI development for desktop applications (Windows Forms, WPF, VB.NET). I was mostly fixing bugs and enhancing features of the existing software products. I had no prior experience with working on desktop applications and I struggled a little with the first few assignments but I became comfortable with the tools and the code-base after that. My manager stated in my annual performance review that I am independent, can understand and work with complex code-bases but I am not efficient and fast enough and should be 2-3 times faster than I was at that time. After losing my job, I had a few interviews, failed them and studied DS&A. Since my unemployment gap was becoming bigger, after a few months I volunteered for an organization as a backend developer where I worked mostly with AWS and python. I had no prior experience with AWS but I thankfully I found it to be straight-forward and did my tasks mostly independently and comfortably.
From my first job and the AWS tasks I did, I feel I am fairly comfortable working with frameworks. I enjoy coming up with high-level solutions for problems, breaking them down into pieces and using Google to find code that matches those pieces. I can then tweak those pieces enough and fuse them back together to create the final and functional solution. I really enjoy this process but I have time and an interactive IDE to solve and debug my solutions. During interviews, I always run out of time before I can come up with an acceptable solution for a coding problem and most questions I faced and struggled with were straight-forward enough to finish within the allotted time.
As I wrote earlier, my ability to do whiteboard coding and online coding tests hasn't improved much since my job loss. I believed I was good enough to clear interviews at FAANG companies but my progress has made me skeptical. What are your suggestions for me? What shall I do so that I do not remain unemployed forever?
PS. I have not had a good work ethic since I lost my job. I was solving one or two problems a day (and sometimes none at all) throughout the year.