College Break

This college break, I read and finish The Calculus Lifesaver and The Mythical Man Month book. After all these years, I finally understand the basic concepts of calculus. The Mythical Man-Month have a lot of principles that still apply to current day software development project management, but some of the details in it (the computer systems used as a case study, for example) are really old.

Back to College

I read a lot of general topic books in college this period (aside from the textbooks assigned to me), such as How to Win Friends and Influence People, Talent Code, and Problem Solving 101. I also started reading the famous 7 Habits of Highly Effective People book. This may not relate directly to programming, but I believe having some basic general knowledge and skills will help me with my programming.

Internship

I got an internship at a web design and branding agency. Everyone is confused: why the hell is a business graduate taking internship from a web company. Well… It is what it is.

My job position is technically a front-end developer. The job is not that challenging, so I have a lot of free time. I fail big time on the interview using Bootstrap, but somehow I still get the job. I figure that this is because my job mainly involves dragging and dropping things on WordPress, no real codes involved.

I use my free time to read the Pragmatic Programmer book, read CompTIA A+ and Networking Study Guide, learn Bootstrap, do the SQL challenges on Hackerrank, implement basic CRUD on Ruby on Rails, and read some more of the 7 Habits of Highly Effective People book.

When trying to implement basic CRUD on Ruby on Rails, I realize that, sooner or later, I’d need to use either Linux for my development jobs (Mac is not an option since I don’t have the money). I tried to use Virtual Box VM with many Linux distributions. I tried to use Cloud9 online IDE. But, I end up with bash on Windows 10 Subsystem of Linux. You don’t know how happy I am when I finally get my hands on this bash on Windows thing. Though it’s still buggy for some edge cases, it clearly beats trying to set up a Virtual Box VM.

Dropping Out and Hunting Job

In early August, my internship is over. I’m getting ready again for my last semester of college. However, on 18 August, something happens that made me seriously consider the option of dropping out. What happens doesn’t really matters. What matters is that it made me realize that continuing my education won’t be useful (See my “Why I drop out?” post to get the details).

So, I started creating an online CV and sending it out to a few tech companies and startup starting in late August. From the process of online test with one fintech startup, I learn quite a lot about Node.js and asynchronous programming in just a few days. I also learn more about algorithms and testing by testing with another company.

I stopped attending classes on 27 September. And after about a month of anxiety (which I use to push myself to learn more), I get an opportunity at a development shop in my hometown (at PT. Twindo Utama Internasional). I start working there from 12 October (on probation) and get accepted there on 23 October.

I’m glad that my bet to go all in with web development pays off (and I don’t end up being a drop out who have no job).

The development shop there uses Meteor.js. I train there until 28 October and then I start contributing to one project there on 30 October.

Working and learning

Things are going pretty well with my job. There are things that I learn that can’t be learned outside of a professional job. But I’m learning them well. And I’m contributing good enough code to the project.

I keep my habit of reading technical books and I keep learning new things outside of work. I try to focus my learning on the purpose of getting me better positioned for my next job.

I learn Haskell, design patterns, Java, and React.js after work this year. I start to seriously read Clean Code. I also start reading Secrets of the JavaScript Ninja.

I finished learning the basics of Java at the end of the year from reading the online documentation.


Side Notes

I learn to use tmux with vim since I found that having to open a new shell just to run a server is pretty annoying. Though, now I use Visual Studio Code since it’s easier.