All posts filed under “Workaholics Anonymous

Tentang Profesionalisme Guru

Tulisan ini adalah tanggapan untuk blog post sahabat saya yang mengkritisi sikap profesional guru. Ini bukanlah sanggahan, bantahan, apalagi cacian. Saya hanya berusaha memperjelas apa makna “bersikap profesional”.

Menurut saya, seseorang bisa dikatakan bersikap profesional ketika ia mampu memenuhi tuntutan profesinya, dengan mendapatkan imbalan yang layak, dan dengan memerhatikan kode etik dan standar perilaku yang berlaku di lingkungan kerjanya. Dalam konteks profesi seorang pendidik, sikap profesional ini misalnya: datang ke kelas dan membubarkan kelas tepat waktu (tidak korupsi waktu), datang ke kelas siap dengan materi, dan bisa mempertanggungjawabkan pekerjaannya, termasuk menjaga integritas anak didik dan diri sendiri dengan sikap yang tegas terhadap ketidakjujuran dan kegiatan contek-mencontek.

Lebih lanjut, seseorang bisa dikatakan mempunyai dedikasi terhadap pekerjaannya apabila ia mau memberikan lebih daripada apa yang dituntut darinya secara profesional. Seorang guru bisa dikatakan berdedikasi terhadap pekerjaannya apabila ia rela menggunakan waktu pribadinya di luar jam kerja untuk mengajar (atau lebih baik lagi, mendidik) anak-anak didiknya, baik itu formal ataupun non-formal. Yang satu ini memang tidak ada sangkut pautnya dengan imbalan apapun, dan lebih dekat pada kecintaan seseorang atau panggilan hatinya terhadap pekerjaannya.

Bentuk lain dari dedikasi adalah ketika seorang guru tetap mau menjalankan tugasnya secara profesional walaupun ia tidak menerima imbalan yang layak.

Nah, dalam tulisan yang saya baca, dan dari diskusi hangat di twitter kemarin, tampaknya belum dijelaskan apakah yang didiskusikan itu sikap profesional dan/atau berdedikasi. Tetapi esensi diskusi dan tulisan tetap sama, yaitu keprihatinan bersama bahwa banyak guru masa kini yang tidak lagi profesional, apalagi punya dedikasi terhadap pekerjaannya.

Guru yang tidak mau lembur demi acara bedah buku adalah guru yang tidak punya dedikasi terhadap pekerjaannya (meskipun apabila kita mau adil, harus dipahami juga bahwa untuk mau memberikan lebih daripada yang dituntunt secara profesional, ia harus lebih dulu mampu). Dalam hal ini, ia tetaplah guru yang profesional.

Di sisi lain dikatakan ada banyak guru yang membayar orang untuk mengerjakan karya ilmiahnya demi kenaikan pangkat (dan pada akhirnya kenaikan gaji), dan ini adalah sikap tidak profesional. Banyak contoh lain untuk perilaku tidak profesional, antara lain memberikan bocoran soal ujian kepada anak didiknya, yang berlawanan dengan tujuan pendidikan itu sendiri. Contoh yang lebih sederhana: sering tidak hadir di kelas karena “kepentingan pribadi”.

Bagaimana mungkin seseorang bisa punya dedikasi terhadap pekerjaan yang dilakukannya dengan tidak profesional?

Sekali lagi saya tegaskan bahwa ini adalah opini, bukan fakta, dan saya tidak menganggap semua guru itu tidak profesional apalagi punya dedikasi. Masih banyak pendidik yang bermutu dan patut kita sebut “Pahlawan Tanpa Tanda Jasa” (walaupun sebenarnya tidak masuk akal, karena sebutan itupun sudah merupakan suatu tanda jasa/bentuk penghargaan).

Guru itu memang sudah seharusnya profesional, tetapi kalo ia mempunyai dedikasi, itulah “Pahlawan Tanpa Tanda Jasa”.

Nah kalau sudah begini lalu menjadi jelas, apa sebenarnya yang bisa kita haruskan, dan apa yang kita harapkan dari para guru.

Punya integritas, tidak korupsi waktu, dan bertanggung jawab terhadap anak-anak didiknya; itu semua harus. Jika tidak, berarti ada masalah dengan si guru itu.

Tetap mau mengajar di pelosok desa walaupun tidak digaji atau mungkin digaji sangat kecil, atau mau bekerja di luar jam kerja; kalau kita mengharuskan itu, masalahnya adalah kita sendiri.

Ideals vs. Reality

In this world, nothing is perfect. We are not perfect. None of us can be. It’s just human nature.

One must define for oneself the threshold between principal values and hyper-idealism. We are told to not lie. This is our principal value. But everybody else lies; the whole world lies for a living. Where does that leave us? Will we go with the flow and lie just like everybody else? Or will we preserve our values and be honest even if it means challenging the whole world?

Holding on a value we believe in is something that we should do. But, we do have to make compromises from time to time. In fact, life in a community depends on compromises. Almost everything is negotiable, and non-negotiable issues can be made negotiable to some extent.

The question then becomes: How far are we willing to negotiate?

Getting Old Is A Big Problem!

Today is not the best day of my one-month-old career as a programmer.

My boss told me that he was planning on initiating a new project that was to be written in PHP. That means we have to build, test, and implement a brand new PHP-based framework. So, the big guy told me to review some of the most popular open source PHP frameworks available on the net. I looked into CakePHP, CodeIgniter, PRADO, and some other stuff. But he was more interested in the Zend Framework. “Okay… I’ll take a look into it”, I said to him.

He also told me that I was now in charge of the HP ProLiant server he had right next to his desk. I can do whatever I want with it. It already had openSUSE in it, but I was given permission to format the hard disk and put anything I want on it, anything that suits me best for the development process of our newly established project. After struggling to find where everything was in openSUSE’s desktop, I immediately found out that the postgreSQL server installation on it was flawed, mainly because it was installed twice. Once from an RPM package and once from source. What a mess. I was faced with the daunting task of finding out where the two installation’s configuration files conflict and resolve them.

But I had a better idea: format the darn disk and install Ubuntu Server!

So I did it. I installed Ubuntu Server 8.04 with LAMP and postgreSQL, added user profiles for my colleagues, put them on the sudoers list, enabled Samba and added user profiles to it, mirrored the postgreSQL documentation site and aliased it to the Apache server. Next, I tried to access the postgreSQL with pgAdmin3 from my laptop. This is the part where I say “Houston, we have a problem”.

The pgAdmin popped up a message that the server is not listening. **is it deaf?** So, I tried to tweak the settings here and there, but then I stopped cold because I couldn’t find where the postgres.conf and pg_hba.conf files were. After an extensive search using locate and a misleading googling session, my colleague told me to install postgreSQL server from source. So I did what he said: I downloaded the source tarball, installed it with him first thing this morning (I need him to guide me with all the confusing configuration parameters), and got the server up and running locally. After that, I redefined some parameters so that the server would accept incoming connections from other machines. Done.

Next, I opened up my pgAdmin again and tried to connect. Voila! It connected. But right after the connection was established, pgAdmin complained about some error that it found on the system database scheme. So I started to think: WTF???

After consulting with my colleagues, I decided to erase the source installation and installed again from source. I did this about 3 or 4 times before finally giving up. The two error messages that kept popping up were:

ERROR:  column op.oprlsortop does not exist
LINE 12:   LEFT OUTER JOIN pg_operator lso ON lso.oid=op.oprlsortop

ERROR:  column "opcamid" does not exist
LINE 3:   JOIN pg_am am ON am.oid=opcamid

So, I searched for these two errors on the net and came up with zero results. Okay, so installing from source solved the problem but introduced a new one. So I opted back to searching the Ubuntu repos for an apt-get possibility. Then I did apt-get install postgresql-8.3 postgresql-client postgresql-contrib. This did not solve the problem. I fell back to installing postgreSQL 8.2, but it didn’t do any good. Fine. I give up. This is enough troubleshooting for one day.

So, I went home without any progress whatsoever…

Just now, I looked deeper into postgreSQL.org and elsewhere searching for the word “oprlsortop” (what a funny name, can you say it without twisting your tongue and your brain?). I read the first entry that came up on Google and immediately found out that the pgAdmin version I was using was too old. Yes, too old! What a silly mistake! Some guy at Nabble was pondering about the same trouble and another guy said that pgAdmin 1.4.3 is way too old for postgreSQL 8.3. Okay, I got the source of the problem, but I’ll have to wait until next Monday to fix it. I will not risk compromising my own development environment. I’ll do it on my PC at the office.

By the way, this brings out another question: Will the JDBC driver work with postgreSQL 8.3? We’ll have to see for ourselves next Monday.

I guess getting old is a problem, especially with pgAdmin…

Struggling to Get Out of A Three-week Overdue

Last week I took three days off to attend my graduation ceremony. It turns out that the project I’m currently assigned to isn’t making any milestones during that time. When I came back, everybody seemed so stressed out. We were already almost three weeks overdue and the pressure was eating everybody’s nerves.

This brings out a question: Where have we taken the wrong turn?

Possibility #1:
We did not take into account the absence of our System Analyst during the first two weeks of the design phase due to an illness. From the staff’s perspective, the staff was forced to continue development with very limited manpower. With only three team members at the time (one Project Manager, one System Analyst, and one Programmer), the aftermath was quite horrible. The one-and-only Programmer was given the responsibility of taking over system analysis, while he still had to do the prototyping.

Possibility #2:
The programmers assigned to this deadline-infested project is not suitable. My senior had joined not sooner than a month before me, and I was a complete noob about Java itself. Even now we are still struggling to comprehend the framework as we work, and many of the mistakes we made are actually simple and silly ones. Our performance is still way below standard, and we have a long way to go before we can work effectively using the new framework.

Possibility #3:
This project uses a new framework. Although not entirely different than the old one, it still has quite a few major differences. This made the task of building the project a daunting one, as me and my co-workers could not ask any of the staff assigned to other projects about the framework itself. The fact that the framework itself is still quite messy adds up to the already overwhelming deadlines.

Possibility #4:
The entire team is not up to it — we might just not have the correct skills and abilities to do the task at hand. The project itself is considerably smaller and very much simpler than its “sister-project”, but still we were making very little progress.

Either way, the staff is subjected to lots of pressure from the beginning. But, that still does not justify the delays. We will have to find a way to speed up development and immediately submit the beta version for User Acceptance Tests. So, what can we do?

In my opinion, the one thing that must be done immediately is get the client to understand that we are currently in desperate need of more time. A person’s illness is not something we had planned, and it is certainly not in the project budget. Nevertheless, it happened, and something has got to be done about it.

On the other hand, the entire team must be brought up to speed. This is, in my personal opinion, something futile to pursue. We are noobs, and, hard as we try, we will not be up to speed within the allotted time. A more reasonable move would be to rewrite the entire framework from scratch, defining code standards and conventions along the way. This is necessary so that in the future any one of us can look into a piece of source code and precisely tell what it does. Using a framework was meant to reduce work, not add to it.

Another personal complain from me would be about the current style of programming. We use Java, and thus we use an entirely object-oriented framework. Everything is an object. But, in my opinion, the way the existing source code looks, we are doing everything so sloppy that it looks procedural. We need to take time and rewrite most of the application logic, break down large tasks into smaller methods wrapped inside a tidy class, and make the source code easier to read. Methods should be made as independent as possible. This way, we can probably use most of our source code for future projects with minimum modification.

Well, that’s enough chatter from me. I’m just a noob anyway. This is — let me emphasize this — just an opinion from an inexperienced programmer. Any constructive criticism is welcome, as well as new ideas.

First Week

My first week was all messy. Here we go…

Day 1
I was 10 minutes late. I didn’t write my time on my attendance sheet. My first assignment was learning about JAVA and every other little things that my team uses for their project. I was assigned to a rather large project. Assignees included one Systems Analyst and two Programmers (me included). The other two analysts and about 3 or 4 programmers were assigned to a larger project. Day one was all about learning: the procedures, the flow, the standards.

Day 2
Being 5 to 10 minutes is already common. No harm done. I spent the first half of the day trying this and that, mostly digging in on the interface’s coding. The second half was a disaster. My PC broke down and restarted four times in a row. I confiscated my friend’s MacBook and found immediately that it was not prepped for development. So much for a second day at work…

Day 3
By the third day, things were getting on track again. I learned a whole lot of new stuff. The framework, the systems, the IDE. But progress was sluggish. I didn’t know where to find what, and I kept bugging my fellow programmer. I could tell that he was really frustrated by his deadline, and the fact that he’s a single fighter in the project held me back when I wanted to ask him for help.

Day 4
Thursday was a relatively slow day. I learned the code piece-by-piece and soon figured out that the framework itself is still so messy. I still had a hard time finding what I needed, and googling was my best escape. This was the day that I did my first commit to the server. Nothing big really, just a few minor interface fixes, a new controller and listener, and some other stuff not worth mentioning.

Day 5
As the interface came together, I totally shifted my attention to the logic. I struggled to find pieces of code that were responsible for fetching data, processing, and then displaying them. I found out that just to add a single query to the framework, I needed to edit at least 4 to 5 class files. But I forced myself to get used to it. I’m gonna be here for a long time…

Day 6
The mood was changing as I approached a long weekend with new hopes. But I was still overwhelmed with the wealth of things that I needed to understand before I start making real progress. My boss already stuffed a deadline on me, and I had to finish my screen by next Tuesday. I guess he expected me to work at home, but I’m not going to. Home is for fun, not work. I’ll just see what happens next…

Dive into Java!

Yesterday was a rare moment for me and my friends at campus, as so many of us from out of town came home to one of our friend’s wedding. Everybody was asking about where I’m going and what I’m going to do, and each time I answered they would tell me how lucky I am.

One of my best friends told me once that choosing a career path is one of the three biggest decisions that a person has to make (FYI, the other two are choosing your faith and choosing your spouse). I decided to apply for this job because I wasn’t aiming to be rich. I aimed to stay close to my hometown and my family. Not because then I could beg and whine every time I got into something I can’t handle, but because the fact that my entire extended family is already some place else is bugging me.

Well then, this job is a perfect one for me (for now, I haven’t really done it yet). It’s close to home (about 50 minutes away by train), it’s something I like to do (I’m an ISTJ — check my personality profile — and ISTJs are supposed to be programmers), and it pays good money (I’m sorry, but I’m not disclosing my first pay). Furthermore, I have 4 friends that are already there, and they will surely be a great help to me — not professionally, but as campus friends when we’re having lunch together or hanging around after hours.

Tomorrow (yes, tomorrow!) I will officially be a Java programmer. This is something I have never done before. I know Javascript, but not Java itself. I know Macromedia Dreamweaver for editing all sorts of web-related source codes, but I haven’t had time to explore Java IDE itself: NetBeans. However, I have every confidence in myself that I will be able to learn.

Well, my vacation ends today, and tomorrow I’m off to a whole new adventure! Yippie kai ye!