Importance of Algorithm and Data Structures for Kernel developers
When I started programming after enrolling at a local college, I never thought that I would eventually become resource in the programmer community. I wasn’t good at computers and hated everything about the concept of programming especially the mathematical part of it. To be honest with you, I was too poor at analyzing mathematical concepts and models to form any meaningful algorithmic data or structure.
Then there was this professor who was tutoring us, and I always felt his victim because I didn’t quite understand the relationships between the mathematical models used in programming. He was so harsh and good at terrorizing students that I decided to quirt Computer Engineering to pursue a degree in education (sciences). That’s the lowest point I have ever reached in my computer endeavors. I just had to call it quits because everything was too overwhelming to me.
I decided to do what I felt comfortable at. However, since I still had my personal PC which ran on Linux, I’d take some time to acquaint myself with some basic programming while I was idle. I never delved much on the programming thing. I had already given up on it. I’m not even sure what ever prompted me to look at coding from time to time.
However, one summer while we were on school break, a former friend approached me so that I could help her in some coding for a contest that she had applied to participate. She was shocked to learn that I quit studying computer engineering. The sad bit of it, she had no one to turn to, at least to lift up her morale in coding, and all the while she had been counting on me. Not wanting to disappoint her, I promised to help her in her project.
That’s how I found myself back into computer programming after quitting for a year and half. I was determined not to let her down and thus I had to dust myself and get back into the programming scene. How was that possible given my little knowledge?
Knowledge in Linux Kernel is Key in Software Development
One of the best ways to learn and appreciate coding is through Linux. The interface has everything you need and you can have a reference at the hooks to know if you are doing something correctly. This is knowledge that can be easily grasped because of the friendly nature of the Linux kernels. Having been acquainted with the using the kernel, it was easier for me to think outside the box and come up with viable solutions for the project.
The kernels can help you see the various relationships between your coding and the drivers and this is a great step towards understanding what you are doing and helping you to make a positive review of your work hence be at a position to document your coding process.
Learning through Open Source Communities
Any successful Linux coder has to rely on online communities initially to be able to carry out debugs as well as have the necessary skills to have a well-functioning application. I would from time to time go to these communities for help and I always learnt something new. I also taught my friend to rely on the communities for assistance and she realized that massive help could be tapped form them.
Coding in Linux made me Realize that Mathematical Models Weren’t Critical in Software Development
The more I learnt from this project, the much I realized that I had made a mistake by quitting computer engineering. Even though I did so because of what I had to go through the hands of a cruel professor, I realized that I never made the right move. Linux taught me top realize that mathematical models weren’t necessarily a requisite in coding, but I needed to understand the interactions of various compilers and drivers in the functioning of the code.
Realizing my mistake, I decided that learning and having a prowess in C was the best thing that could ever happen to any developer. That made me enroll for a part-time programming lessons in C. Mathematics shouldn’t have been a barrier, I just needed to understand the working of the kernel. Knowledge in C and Linux eventually gave me a ticket to become a Data Storage Admin in a Reputable web-hosting company where I am today.