Compiling Lessons and Success

08 May 2024

Although I am fairly new to the Computer Science field at the time of writing this, one aspect of computer scientists that I have grown to deeply appreciate and admire is the efficiency, practicality, and precision when it comes to problem-solving and the resulting solutions. After learning and studying with that type of mindset, it almost becomes second nature to view other problems through that lens. Seeing as how these are valuable traits for anyone to have, they are able to prove useful in a wide variety of contexts beyond the classroom.

How do you eat an elephant? (One bite at a time)

One common strategy in computer science is the concept of divide and conquer. While this may be a term utilized to refer to a strategy in coding, it also applies to getting tasks done outside the developer context. Agile Project Management (APM) is an iterative approach to software development where projects are divided into small, manageable chunks. After each section is complete, the team will review and discuss feedback and concerns that they may have, allowing them to utilize these insights to determine the next steps of the project. Issue Driven Project management (IDPM) is a style of APM that revolves around issues, or tasks. It essentially works like a checklist. The project is divided into small tasks which are divided amongst team members. Each issue represents work, and the project’s progress can essentially be measured by how many issues have been completed. By making the project more manageable and adaptable, it becomes much easier to stay organized and on schedule while also addressing challenges as needed. This approach not only enhances organization and efficiency but also fosters adaptability and teamwork, essential elements in any collaborative team project. Even when a project or situation may feel overwhelming, it may be beneficial to step back and take things one step at a time. This certainly was critical for me when I worked in healthcare during the COVID-19 pandemic. There was never really a moment where you could afford to perform subpar. With pressures high and an overwhelming amount of work, keeping a clear and calm mind was key to being able to thrive in a fast placed environment and keep up with the demands of the job and maintain my own health.

Picking The Right Tool For The Job

Nowadays, there are a wide variety of development environments available for programmers. A well-configured development environment can greatly increase productivity and efficiency for developers, making the task easier and also helping developers maintain clean and precise code according to best practices. Over the course of this past semester, I mainly worked with IntelliJ. Part of what I really enjoyed about IntelliJ was that its built-in features made it fairly easy to debug code. For example, if I ran into an issue and I needed to check something through a terminal, I could simply use the built-in terminal rather than wasting more time trying to figure out where the necessary file that I want to check is stored in my computer. Additionally, its built in error detection helped me catch some potential issues before they became major issues. Being able to click on an error to navigate directly to the problematic line and being able to mass-fix some coding style errors helped me save a lot of time so that I could focus more on problem-solving and implementing features and less time trying to redo the line indentations by replacing them with individual spaces. Investing time while working on the code saves time problem-solving later on. I feel that it’s much more preferable to try to do something correct the first time rather than trying to hunt down issues later.

If It Ain’t Broke…

As I have progressed in my Computer Science path, I’ve recognized a common theme: use your resources wisely, particularly time. I find myself always looking for the most effective, logical, and efficient possible solution. It’s even one of the few fields where I have actively been told to copy-paste work, and it only further highlights the demand for efficiency. Coding standards are done with the goal of making code easy to maintain and read or understand. Frameworks like React are created, helping developers save time by providing many common components so that they do not need to be individually built from scratch every time. Even design patterns, which are essentially tried-and-true reusable solutions to problems that occur in software design, are done with time in mind. Less time spent on “reinventing the wheel” means more time being dedicated to solving more complex problems.

Whether it’s adhering to coding standards, utilizing frameworks like React, or employing established design patterns, the overarching goal remains the same: to deliver effective solutions in the most clear and efficient manner possible. Developing these skills now can pay off in the long run as these technical skills can build good habits and translate into soft skills for the future.