How did I get there?

It's quite complicated. I don't really think we could get a concise answer on this one. Like every single programmer around 2012, I've been gluing bits and bobs of JavaScript and HTML together. Member of my distant family (interested in IT) suggested me trying out FreePascal around 2013. I've done so, but it didn't quite cut it for me, because every single installer they made, simply bailed out on my machine, so I didn't get to try it.

Then, I've been lurking some websites suggesting programming languages to start. Albeit very young, I've managed to learn basics of C++ (the procedural style, didn't touch OOP unless required). It was very hard time for me, because I didn't have knowledge to solve all of my problems myself, and didn't have a welcome community to help me out.

It sounds stupid, but the person that drew my attention to C was my IT teacher. I've talked to him, and said, that I've "learnt" C++. He proceeded to ask Which header files would you include to make a command-line calculator? I've been prepared for this question (as I've made a few cli calculators before). I replied <iostream> and <cmath>. His reply was Oh, I really don't have an idea, because I just program C. One of issues with my early carrer was lack of people willing to help me out. I decided then, why not learn C, if so many people know it? I had no idea back then, that they have been forced to learn C on the university. So it all rolled down.

At the first stage of my transition, I've started to simply use C functions (like printf(), instead of using << overloaded operator for std::cout known from C++). The code seemed like some kind of a frankenstein, because I didn't really know how to get without simpler to use C++'sisms like std::string.

Time has been flowing. In 2015 I learnt basics of Java, and gone even deeper into C. In summer of 2016, I've downloaded and built FreeDOS, and tweaked it a bit. I've been adding a few (useless, eh) routines written in pure Assembly. I didn't really learn it, because I had trouble with understanding the online guides and the way they required to remember so much, I couldn't make it through. So I learnt by reading and writing, simply speaking, by doing. I spent too much time on learning Assembly. But I loved it. As I've finished my custom distribution of FreeDOS, I came into realisation that I don't really want it public, so it stays probably on my hard disk upon this day.

In Winter of 2016, I've picked on developing my "own" operating system. I've followed a few guides, but I had really no idea on understanding them (to emphasise it, I lacked knowledge of what segment is back then), so the project ended quickly on a brainfuck kernel that would read the code from the keyboard, execute it, and print out the result.

In 2017 I began doing real stuff. I've uploaded a few (not very high quality) libraries onto my Github. My first project, in fact, was just my 2012 stuff that I've decided to upload after I've discovered Github. I made an archiving library (I'm not so proud of it now, because as I look into the code after all that time passed, I'm really having bad time with doing it).

Me and C now

I've studied C really deep. I've been reading others code alot, trying to get an idea of what is happening there. I've been making some more projects and other stuff with time passing. I can really say that I do know C now.

As I've spent so much time on C and low level, I'm not going to just drop it, it's going to remain with me forever. I've undergone apprenticeship at local business, programming C for two months. It has changed my point of view on programming overall, and probably will influence my future decisions. I've spent on real C just four years (but my programming carrer started around 7 years ago at the time of writing). One might think - Hey, that's not a lot. It's not true. For most of my time those years, I've made a serious improvement. I've been programming stuff for about 5 hours a day, on peak, around 8. For the whole year. This gives around 2000 hours spent a year, and 6000 hours spent for the entire time. Recalculating this to the programmer's workhours, it's about the same as average mid-level developer experience. Given that at the moment I'm quite young, the time spent is just going to grow.

Do I have life