Friday, February 19, 2010

Technical IT Skills: State College

One way to get credential in our society is to get some sort of degree, such as a undergraduate degree from a CSU (CalState University).  You can gain a lot of important basic business skills in areas of accounting, finance, economics, statistics, marketing, international business, and information systems.  I think to run your own business or to step into management in IT, these essential business skills are definitely required.

But for gaining hands on skills, I have to question whether you can learn this from the state college,  at least in the exposure I have gained from Information Systems courses at SFSU (San Francisco State University).   You'll get some exposure to programming, database, and networking, but this alone will not be enough to gain employment where you'll have to implement, maintain, and manage information systems.

To gain the hard skills (technical skills), you'll have to find a way to learn this on your own.  You can learn particular systems from community colleges or extension courses, but not at state.  And in any of those programs, you still are required to do a lot of analysis and research on your own outside of any course or training program.  Thankfully, through a well rounded education, you should have the required analytical, objective, and research skills, to gain more out of any program.

Technical IT Skills: Certifications

The certifications are a great way to gain recognition of your skill set, but smart companies, also check whether you have the skills to match the certification.  After all, there are many that can memorize material for a test, but not actually understand the material involved.

I will talk later about certification specifics.  If you would like to research now, Microsoft has MCSE (Microsoft Certified Systems Engineer) for Windows.  For UNIX, you have SCSA (Sun Certified Systems Administrator) and SCNA (Sun Certified Network Engineer) for the Solaris operating system.  And for Linux, there are many, but the one most recognized in the industry is RHCE (Red Hat Certified Engineer) for Red Hat Enterprise Linux (RHEL).  Another one that could potentially become popular, due to the popularity of the Ubuntu Linux, is LPI 199 or Ubuntu 199.  One can become an Ubuntu Certifed Professional if they pass Linux Professional Institute's LPI 101, LPI 102, and LPI  199 (Ubuntu 199).

Technical IT Skills: Basic Hard Skills

In any scenario, a company is going to pay you for some skill you know that enables them to make a profit in some way (whether financial or not).  So you have to ask yourself, what will they pay me for?  In IT for a systems administration role, this will including setting up and maintaining services and networking.  These services would include file and print services, e-mail server, web server, database server and others.  More advance and complex services, and thus more earning potential,  would include security solutions, automation solutions, backup and disaster recovery solutions, and especially single-sign-on solutions.

At the community colleges around the Bay Area, there's tons of courses one can take.  They range from programming, scripting, operating systems (MS Windows, Linux), web servers (Apache), database servers (MySQL, MS SQL, Oracle), e-mail servers (MS Exchange), networking (CCNA), security, etc..  You can learn a lot from these courses, but ultimately real skill is acquired when you apply the knowledge, either at the work, or experimenting at home.

Here's some college int the area that offer IT oriented courses:

Getting Programming Skills

These days at college in education, professors have become religious on programming languages like Java, as it forces theory upon the student.  Thus introductory material exposes students to many advanced concepts that might be way overwhelming.  Before when I was taking programming courses, I went from simple languages like BASIC and Pascal, to C/C++ and then Java, and now C#.  I didn't start my beginning courses with an language that forces good object-oriented design.  That's way too much material for a beginning student.

Over the years, students have asked me, what they should take to learn programming, or how can they learn it on their own.  So I wanted to detail the gradual step or stages to develop programming skills.
  1. Introduction Course: Branching and Looping, Variables, Arrays, Sub-routines (functions), Scope
  2. Intermediate Course: Modular Programming Design (functional decomposition, abstraction), Pointers or References, Binary Operators, Algorithms
  3. Data Structures: Link Lists, Stacks, Queues, Trees, Graphs, etc.
  4. Object Oriented Programming
  5. Object Oriented Design, Design Patterns
  6. Advanced Topics
    1. Real-Time Programming
    2. Network Programing
    3. Remoting
    4. Reflection
    5. Serialization
    6. Concurrency and Threading
    7. Database
    8. Component Based
There will be many that argue you are required to know a lot of mathematics, but I really disagree, Mathematics is not needed to become a programmer.  But to go into really high paid jobs and management, where one is an architect, Math becomes required.  To be an implementer of new things, Math is needed, but to use existing libraries, you do not need the years of Math required for a computer science degree.   And with such a dearth in the market, there's always a strong need for programmers.
For Information Technology, at most one needs Steps 1-4, and at minimum one needs steps 1-2.  Most all IT jobs require some sort of scripting, unless you are a button pushing Windows tech.  The most high paid system administrators are ones that can do scripting and automation, with Perl and Python becoming the most popular languages.

Thursday, February 18, 2010

Embarking on New Technology Journey

After a few years in Korea, I became technology starved, so I decided to pursue some Information Systems courses at SFSU, and a ton of technology courses at CCSF.  This blog will just track my pursuits in information technology and information systems, and related technology and business interests.  I will cover a whole range of research in certifications, programming, security, and stuff.  As I learn new things, I hope that others can learn as well, maybe contribute some thoughts...