Jumat, 28 Februari 2014

Weekly Log #4

Hi! It's been quite a time since the last post. Almost every several days I wrote to this blog, but I kept it as a draft. I will publish it until I satisfied with the quality of the writing. So, let's start with my life update. :)

Since early February, I started the MOOC projects that I've been waiting for a veryyyyy long time. It was very exhilarating that I could made something to Indonesia with my own skill. I want to make a dent at Indonesia's problem. It was a very fun project to do and it makes me want to stay at office more and more to continue the project. It is been a while that I really wanted to skip all the holidays in order to keep working on the project. :D. I have never felt so lively. Now, the design is already finished. Just a little enhancement and the engineering team and me could start the development next week. 

This month is very great for me. Every day, is not the same me as yesterday. I learnt a lot from every moment occurred to me in this month. Meeting a lot of old and new people, tried a lot of new things, talking to a lot of people, and read a lot of books. It means very very much for me. This month is all about my MOOC project. Thank you. See you on the next update. :)

Sabtu, 01 Februari 2014

On Being a Good Programmer

I already code for approximately 6 years since the first code I wrote. I have created so many bugs, compile errors, applications, and scripts. In that process, I learnt that programming is really hard. I do not think that a lot of people would let their eyes stares into blocks of code for days or weeks to find the root of the errors and fix it. One of my favorite method to mitigate my stress when fixing bus is to throw pillows to the wall. :D. Even though I have code for not quite a long time, I believe that I have some experience to tell. So, today, I will share some of my perspective on how to be a good programmer. I define programmer are any people that write code. Software engineer that write code is considered programmer.

The first on being a good programmer is that they have "write less code" in their mindset. Do not judge programmer by the number of codes, but the number of solutions. The true purpose of programmers is to create solutions. A good programmer will always know how to reduce the number of codes. One of my favorite way is to find existing solution or third party libraries on the web. I believe if my problem is too general, any other people will already solve it and let people use their solutions. Open source has becoming so far until it can let programmers finish their solution very quickly. You just have to find it.

Another way to reduce the amount of code is try new things. The "things" could be programming language, framework, library, and tools. Unfortunately, not a lot of people would have the sufficient amount of courage to learn new things. The choose to stay with their level of knowledge and stick with it. In my experience, I choose my primary programming language very carefully. When I choose web development as my specification, I tried 6 (Java, PHP, Ruby, Python, C#, and Javascript) programming languages. Then, I tried a lot of web frameworks for each language to see the design between each frameworks. I tried a lot of editor and IDE's to see which one help me the most. I have done that until I choose Python, Django, and PyCharm as my primary web development language, framework, and tools. Even for now, I still actively finding new technologies that could reduce the amount of code.

We do have heard the term "pair programming" where a person doing the code and the other one is reviewing the code simultaneously. Okay, I admit it was hard and expensive to let another programmer review my code while I write it. In real life, I have never done it, but I always seek advice and review of my application architecture, especially in the early stages of a project. Architectural design failure will makes not only the code is bigger, but also unmanageable. Next, in the absence of a partner, I always give my time to review my own code with this measurement from this cartoon. :))


That's it! I comes with a single point of "write less code" mindset and it could go to a lot of ideas. There are still a lot of criteria to be a good programmer, but I think these three are the most important. Do you want to know what is a great programmer? They are people who lead programmer into good programmer or even great programmer. Good day.