lysts

becoming a software engineer

category: notes

my journey so far

I wrote a lot of R during my degree for data science projects, specifically for statistical analysis and data visualisation. Due to Python and MATLAB being the primary languages the lab I worked for used in their research, I quickly learned just enough Python to help me write scripts for my project and the neuronal data analysis pipelin we used. My workflow, though performed entirely in terminal, was reliant on lunarvim and oh my zsh, which were both immensely useful but wasn't well optimised and took up lots of storage. Installing everything at once also meant that I wasn't able to fully understand useful vim editing shortcuts, as well as the dependencies, plugins, and additional features.

Thus, it never really felt like I knew how to program. Everything I required a LOT more learning, such as algorithms and important concepts that I would otherwise be fed via a computer science degree. My problem solving skils were limited to the needs of data science and the lab itself, so when addressing any question, any task I wanted to accomplish through code, I lacked the skillset to carry it out, even if I was able to come up with a solution.

re-working my workflow

I uninstalled oh my zsh and decided to customise my terminal from scratch, going through zshrc config documentation. I set up ranger as my file navigation system and vim as my text editor alomg with its native plugin manager to manage the essential plugins. This helped me learn how files are stored, as well as properly re-learn the shortcuts and commands I need.

I built my website

Though Notion served me well for note-taking and keeping track of my progress, I needed a place to keep track of anything programming and life-related so I decided to build my own website... From scratch. This took me a while, reading and reading through documentation for GitHub pages, Pelican, and html and css — resources that allows me to build everything from my terminal.

Job hunting?

I tried to look for paid opportunities where I would be able to learn more programming on the job. I thought I knew what I wanted to do and learn, but later realised that my scope was too broad; I was originally searching for both data science and software engineering. Data science, being something I'm more familiar with, I easily felt more competent and comfortable with the idea of pursuing programming in that field. I did pass a number of successful interview stages, but towards the end of each process, realised that the jobs weren't the right fit for me.

Pursuing software development

This is when I started to focus more on software, learning about job specialities, what I enjoy, and what I want to learn. I found roadmaps to help me see the general picture of what these jobs entail and what I need to focus on. This brings me to the present as I write this.

I wanted to deeply learn Python but also pick up Javascript and Typescript as I have an interest in front-end. I finished a Javascript fundamentals course, and began another to help me use what I've learned in a more practical setting. I still need to establish a good Python practice, and also began a full-stack project where my goal is to develop a desktop app.

The process

Steps: 1. focus on learning programming languages 2. learn fundamental concepts and practice problem solving 3. practice is where it all starts; test your learning 4. work on a project to aid your learning 4. use tools that will improve your workflow 5. get feedback, ideally mentorship 6. apply for jobs that have a suitable learning environment

It's important to remember to: - keep a consistent and productive routine - review your curriculum and your goals before each session - productive also means that you're taking adequate and frequent breaks

Funnily enough, I ticked some of these steps off, like learning terminal workflow and such, beginning a project, and beginning more detailed skill building with Javascript and bursts of practice with Python, although this all occurred in quite a peculiar order of events. The goal is to refine what I'm already doing, incorporate what I need to get even more on track, and persevere.