Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Atlixco 105-302
Col. Condesa, Del. Cuauhtémoc, México, D.F.
55-3663-2011 (mobile) & 55-5212-1582 (home)
raka.angga@gmail.com
http://jananuraga.blogspot.com
http://tinyurl.com/resumeraka
Analytical Thinker
I consider myself an analytical thinker and always try to get to the core of the problems. I
consider it is more effective and less costly (in the long run) if we fix the root of the problem,
instead of trying to deal only with its symptoms. I'm fully aware that my career choice
demands analytical thinking, therefore I consciously try to hone that particular skill / trait
every step of the way.
I have always been curious about how to design and implement software such that it is
structurally and logically sounds. I found it more satisfying if I also have firm grasp on the
context and the use of the software I'm developing. This led me to getting myself familiar
with concepts such as domain-driven design. I am convinced that neglecting the aspect of
“making the design communicable” leads to a software that has a poor abstraction and
disconnected from the reality it is supposed to model.
Working for Microsoft in Shanghai during 2007 convinces me even more of the importance of
analytical thinking. The task designing, implementing, executing test-cases, and analyzing
problems for the software developed by Microsoft demands that one investigates various
aspects of the software in detail, from the ways it is supposed to be used, the ways it can be
misused, its design, etc., all to identify ways to break it.
I found software testing work fascinating, and I believe the drill of the work made me see the
framework for analytical thinking. Designing test plan and test cases for software requires
structured thinking, in order to increase the probability that the tests cover as much area as
possible in the software, in less time.
This has been very useful in my later career, including the current one where there's a strong
emphasis on safety, thus risk analysis is formalized in the process.
Solution-oriented Creativity
I read it somewhere, years ago, that “good programmers are lazy programmers” (but not the
other way around). I take that “philosophy” to the heart. What I understand from the
expression is that good programmers tend to look for ways to get more jobs done faster, with
less or diminishing effort (that's the laziness). Consequently, good programmers have to be
creative; a solution-oriented, practical, creativity.
One of the occasions I put that principle into practice is when I was working in an
implementation of rating & billing project in Nextel Mexico, where I had to examine a large
set of data in the rating & billing system, in order to detect problem / potential problem.
Many of the issues had to do with inconsistency in the database. The challenge: the database
contains hundreds of tables. At first I did the checking manually. However, as soon as I have
identified the pattern, it occurred to me that significant part of the task can be done more
efficiently with a program. So I wrote the tool (later published in http://tinyurl.com/rakadb),
which is basically a tool that lets one to define a subset of inter-related tables from which the
data will have to be extracted (for further analysis).
As another example, during the project in Baktun where, in order to be able to build
simulators for doing some tests, we had to understand the communication mechanism
between elements of a proprietary web-conference system that belongs to the client
(InterCall). I decompiled the relevant parts of the system, identified the places in the code
where data is sent / received from the network, print out the data, and tabulate them in a
spreadsheet document where the action of application users is mapped with the data. Based
on that document, and additional analysis, we successfully built the simulators.
On top of that, I developed a tool that allows us to automatize some scenarios involving
communication between the simulator and some server-side components of the web-
conference system. The tool helped us reduce dependency to experienced programmers for
writing test-scenarios in a format that can be executed directly by computers. The tool is
later published in http://tinyurl.com/rakatest .
Finally, also in my current work, we have to devise a new design for the software of a
medical-device that was written several years ago by another team of programmers, without
any trace of documentation. We have to reverse engineer the software, to begin with. That, I
think, involves some creativity and analytical thinking that manifest especially in the way we
effectively debug the software and walk through the source code. Through proper and
efficient debugging, we can see how the state of the application changes based on certain
input or condition. We then make some educated guesses, and confirms in one way or
another before reaching a conclusion.
I go extra miles to make sure what I present can be easily understood and engage my peers
or the target audiences. I understand the value of context, structure, and presentation in
communicating technical information. This has been proven in various publications /
presentations I have made.
1. In my current work I have written tutorials for some technologies used for software
development in the company. I am also responsible for defining the technological &
education roadmap for the software-development department of the company.
2. Introduction to Java Programming (2000): this was the first book published in
Indonesia on Java programming that was not a direct translation from foreign books in
English. I believe the book has been a door-opener for my career, which started in
Indonesia; it gave me national recognition in the IT circle, and it was gratifying to find out
my book has been used by my colleagues and younger programmers.
3. The courses I gave (as paid trainer) on Java programming during my university
years, following the publication of the book (2000 to 2003).
5. Video series I wrote in 2008, consolidating the knowledge and skill I acquired up
to that point in development of IP Multimedia Subsystem using VoIP protocol named
Session Initiation Protocol (SIP). This video series also have received great response from
audience around the world, as can be observed on the blog where I published it :
http://tinyurl.com/rakaims