Sunday, May 07, 2006

10 Big Choices

1. Specialty / Title choices (that is, if/when you have choices ;-)


Desktop
Network/Server
DBA
Special System Support/Developer
Support
Developer (“previously” a.k.a. Programmer)
Architect
Business Analyst
Tech lead
“People” Manager
Change-Configuration Manager
Project Manager
Product Manager
Tech writer
QA Tester
Power User

Titles have different meanings in different places and contexts. However, in almost all places, a good developer is also a level-3 support, level-3 analyst, level-3 tester, and a level-2 DBA. Note that a developer should not deal with production specific DBA issues, hence “level-2”.

The only “exception” is that some software is for “peer” developers, for example, a compiler development team; especially, if such a compiler, for some reason, is only for internal users. In such a situation, a programmers can be closer to a “pure” programmer. However, even in that situation, your statement is still valid – it is just not that obvious or meaningful anymore.

In other words, sometimes, a few “genius” developers can give the impression that they never do support. I guess that is because they have “earned” it by supporting their fellow/peer developers.


Here are two very interesting blogs:
http://www.ericsink.com/No_Programmers.html

http://joelonsoftware.com/items/2006/04/11.html


Interestingly, I agree with both whole-heartedly. They are from different sides. the boss/management and the developer. In an ideal world, of course, we can have both sides.

More practically, since I am not a boss, I would like to be a developer, not a “pure” programmer.

2. IT or not IT, esp. for Some Industries

Some industries are, by their very nature, special kinds of information technology. For example, Education is a kind of information technology. Accounting is a kind of information technology. Banking is a kind of information technology. To an extent, Healthcare is very much also a kind of information technology.

As a result, in those industries, IT is not just IT, they are at the very core of their businesses.

This is especially important for developers. Developers must realize that they must learn the classic (or “traditional”) concepts in those industries, in a critical way, knowing that those concepts are likely to be replaced by computerized new concepts within next decade. Note that I am talking about core (you may say “academic”) concepts. For example, relational database concepts can and should be applied to the very core of accounting.


3. Windows vs. Linux: I always miss the feel of freedom when I use Linux and its siblings. However, most of the time, in my work place, Windows is the king. So, setting up a Linux server in my garage is always at the top of my new-year resolution list. I do try to prevent it from getting cold by keep using vim and cygwin.

4. C/C++ vs. "pointless" "other" languages: I do not really miss C/C++; however, I really miss the feel of freedom and omnipotence when you can change and recompile a compiler, the OS, a driver, a database, a web server, a browser, or the runtime of Java or .Net. You leave C and you leave all those excitements behind.

5. "Other" languages that is not VB-Java-C#--Lisp: C#'s anonymous method enable us to appreciate some power of Lisp in C#.

6. "Other" languages that is not VB-Java-C# -- TCL: It is so elegant, a good reference for a “small language”.

7. "Other" languages that is not VB-Java-C# -- Perl: I miss the spirit of perel – at the heart of it, it is the feel of freedom (just like C), and the feel of being empowered to provide immediate business solutions (you do not have that in C). Also, I must mention regular expression, which will always be the legacy of perl -- we certainly had regular expression before perl; but for all practical purposes, perl has “defined” regular expression as it is today. I always keep regular expression at my finger tip, by using vim, which has a similar syntax like perl’s regex. Yes, I always follow news of perl, Python, PHP, and Ruby. Their real weakness? I believe it is that they pretty much depend on web to have a “face”.

8. Classic VB: I have to been using its various versions for more than 10 years. It improves productivity; but encourages not-easy-to-maintain coding. However, believe it or not, we can do a lot of right programming with classic VB, from VB3 to VB6. For example, we can do database accessing wrapping, separation of UI and business logic, and even unit testing, http://www.vbunit.org/ and http://www.devx.com/vb/Article/21529/1954?pf=true



9. Java: Finally, this is my first love – admittedly that I fell in love very late in my career ;-). In all other things, I felt the excitements; I felt the awe and powerfulness; I even felt freedom; but no love. I felt in love with Java. The reason, I guess, is that the language matches my thinking almost perfectly; as a result, I can think and code, nothing else. You are not distracted – that is how you fall in love.


10. C# vs. VB.net: Currently I use both. I prefer C# more, simply because most open source packages are in C#. We need VB.net, because when we use classic VB, we need VB.net for side by side copy/paste; when we do not use classic VB anymore, we need VB.net so that we do not forget VB.

1 Comments:

Blogger Vikas said...

This explains why our views are similar. I also had mid life crisis and fell in love with Java.

Love C sharp and agree with your comments on VB.

5/09/2006 06:10:00 PM  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home