Do you call yourself a programmer? Join G2iX University

It would take around 10 years for someone to master a skill/talent according to the book, 'First, Break All the Rules: What the World's Greatest Managers Do Differently.' As such, graduating from a computer-related degree in college does not make you a 'master' in programming unless you started coding when you were still 10 years old. Also, to be a great programmer, you must learn the hacker's culture which you will not mostly get from an academic set-up.

In the book 'Coders at Work' by Peter Seibel, having 'side projects' related to programming is one of the main factor great programmers look at to determine if a candidate is a 'great' programmer. Side projects like a side job, or just any thing you build out of fun or just for the heck of it. This is their way to check how passionate with programming one person is. For example, Livejournal was just built out of fun by Brad Fitzpatrick, and the features that come with it were just made to make fun of his college buddies using his application.

We cannot deny that 'computer science' here in Philippines is still young. Majority of the college graduates here in Philippines of computer-related degrees are not that 'ripe' for the real world hacking. To help out young programming enthusiasts, G2iX University is created by Global Gateway Innovation Exchange (G2iX), a homegrown tech company founded by Winston Damarillo. The G2iX University gives you a chance to master your programming skill, to learn the hacker's culture, and get involved with fun hacking projects.

G2iX University just started accepting applicants for their Exist Code Camp 2010, which is a 6-week training program for graduates of computer-related degrees. To get a feel of what you will be getting from the program, following is lifted from their FAQ page:

The curriculum is comprised of lectures, hands-on exercises, research works, and a project, broken down into 3 parts:

1) Fundamentals of Web Application Development

    * Linux Operating System
    * Object Oriented Programming and Java programming
    * Software development methodologies and best practices
    * Software development tooling

2) Open Source Frameworks

3) Project (1 week)

    * Actual software project development
    * Presentation of working application

Some of us/you wants to dive in to a paying job for financial reasons. But note that the experience and the knowledge you will get from the G2iX University's training program is for a long-term benefit which you might not get in a work place. Also, G2iX University provides you with an allowance during the training period.

I believe you are now itching to get into the program. The Exist Code Camp 2010 will start coding on July 5, 2010 in Cebu, April 5, 2010 in Manila. For the complete schedule, please click here. You can apply online via G2iX University website, click here. They started accepting applicants yesterday, Novermber 23, 2009.

I believe G2iX deserves an applause for this great service.

How to know if you are a great programmer?

I am half-way with the book, Coders at Work, by Peter Seibel. I read Jamie Zawinski, Brad Fitzpatrick, Douglas Crockford, Brendan Eich, Joshua Bloch, Joe Armstrong, Simon Peyton Jones, and Peter Norvig. I still have 7 more programmers to go.

Yeah, I know, you might say, what a tech dodo is doing on a Coders at Work book? When they start talking about these programming languages, their differences and such, I definitely get a nosebleed. But I get interested when they talk about how they started program, how they get to learn it, their funny stories about their projects, and the juicy parts.Their passion for programming is just really amazing!

From the 8 programmers that I read already, they usually come up common set of characteristics when they were asked what makes a good programmer, or what a programmer should have to be a good one. These are:

* Readable code -- I am not sure what does it mean in the programming context but I guess what they mean is that it is easier for your and for programmers to fix a bug or connect to your program if you write it articulately. The programmers most of the time related coding is like writing where one should know the proper places of commas, syntax. One should write a program with a good flow of story.

And, I guess readable code is important for the reason that 'no man is an island.' Another programmer might need to use, and it is important that you make it easy for others to understand it.

* A good programmer can write functional mini programs then paste them all together to complete one whole application or program. The thought behind this is that it is easy to spot a bug if your code can be broken into small pieces. It is easier to check one by one the mini programs than going back and forth a one big whole program. Plus when one mini program gets boinkers, the other parts can still run on their own avoiding for the whole program to crash.

* Side projects -- When asked what is one of their criteria when choosing a good programmer. I think almost 8 of them answered that they would always ask the person what projects they got involved in the past -- either for work or fun. Because this will somehow show how enthusiastic a person is at programming. The side projects a person got involved with is an indication how one is passionate at programming.

* Ability to grasp and hold the whole program in your head -- All of them, one time in the interview, have mentioned that they have the ability to have a mental picture of the whole program in their head. This is important because they would know what this change or new entry they put on the other side of the program will affect the other part or the whole program. Or, they can easily identify which part of the program is broken when they see a particular symptom of problem.

For those times I got to work with programmers, I am always amazed with this particular talent in them. I remember working as a bug tester, I would know that one is a great programmer if when I reported a bug, he or she could easily point out which part of the program went wrong. They always just gave me this absent-minded look, and then after a few seconds would then shoot back to me some answers as to where the bug might be.

This reminds me why I backed out of my first choice as college degree in UP Cebu. I was n 3rd or 4th year when internet was somehow available for users here in Cebu. Naturally, I got hooked to it and thought I should put BS Computer Science as my 1st choice in my UPCAT form. But then I never was good at programming in my 4th year. I just copy and paste a classmate's 'video rental' program for our final project, and just change the names and colors. That was a clipper program we had back then. Simply, I did and do not have the talent of being able to form the whole program in my head.

* The language a programmer is good at does not matter. If a programmer is good in JAVA, then he is mostly will be good at other programs. And, it is mostly how a programmer implements and use a language that makes him good, and never the language. So it is a wrong idea that students or people would study what language is 'in demand' in the industry. Well of course, it might mean their probability of being hired is high, but then it is mostly the same thing to a person who is very good at another language. It is like a good story teller in English is most likely to be a good story teller in whatever language.

These are the common theme that get repeatedly mention by the 8 programmers I had read. Just to add a side bit, not one of them talk about gadgets or what kind of computer they use -- Mac, PC, or junk. They talk about debugger application they used, but not one of them talk that this computer gadget can make you a better programmer. So please, it is not necessary to have the highest end computer to be a programmer. It is all about talent.