Monday, October 17, 2011

THE IT ROLE PRECISION

Hi,
Its a been quite a good year, a few projects has been whistling at my door but the challenge to get good development role players is very very uncomfy.

It's been almost a few years i've climbed my way up my software architect path. Nowadays, it's seems very hard to find good programmers here(maybe in the whole world). yeah, maybe shots of IT software techies out there says my word is totally BS. but the true fact is i can find thousands of coders but not good programmers, so its harder to find software engineers or even architects.

The differences are very wide, big, enourmous. Coders you can easily google them.. and find millions from the East Asia area, India, pakistan, bangladeshis, iran, arabs, malaysia , singapore and many more. Programmers , slightly heavier on the europe and the America sides. Malaysia?.. i have only found 1 who i can really rely too.


What differentiates them?
Please be noted, i am writing on behalf of my experience for 7 years as an IT enterpreneur. I dont need to boast who are my clients as it wont bring any good in this article.

GUI Coders/Designer.
Any software person will start via coding. Either frontend or backend. Front end means the visual object or anything which the software will display, mostly it engraves the GUI.  A web based application heavily relies on these people such HTML based. when we are talking about PHP/Ruby/CF/ASP.NET web forms, the interface are all HTML based. which needs some tweaking on the html side to put links and many more.


Backend/FrontEnd Coders.

These needs a person to master certain type of languages. The world has more than 200 languages up to date. AS the infamous commercial ones are preferredly PHP, Ruby, ASP, C#, VB, C++, Perl, Java, J# , F#, and many more.
For a start a coder will have to be well versed in a certain type of language. E.g : PHP (the easiest of them all i guess). Back end processes the system function at the back of the system without the knowledge of the user of bothering the GUI designer. As for this market segment of people, most of them are like football fans or pop-fans, one languager might be pro-to his/her preferred language rather than other. What's the difference of these languages? for me... it depends on how you manipulate it, it not a powerful magic tool or whatsoever, it is just about how well you know how to mingle with the codes based on your process flow.

I started with borland C++, i got too hook up with it. but later then i switched companies and the company required me to do VB and Perl. a few years after that, i HAD to learn PHP and java as the business required them, then i got to do Matlab(which is really quite stiff), last but not least i had to master C#. My conclusion, wether the languange uses a post compiler or not, it all depends on the system process design it self. The codes are not magical chants that works by itself, we have to get around it. but if you decide to be CODER, and do not want to understand any type of process design(JIT/ PMI/ EVA etc.) just stick to the codings.

SOFTWARE ENGINEERS & PROGRAMMERS.
These are the people who designs the system process from start-> processes-> end. It requires heavy know how to put the processes in place. Not so much coding knowledge on a particular language are required. Understand what your client wants. think like an engineer...program your brain to solve problems.... ask your analyst to gather the coders and build the system.
 Sound simple.. nothing much .. just solve the problems with your processes. but this is hard work dude!



DATABASE ENGINEERS & PROGRAMMERS
These are the people who make really big difference on the system storage capacity. They design the database tables, function, queries, diagrams and schedules. As most of today systems' uses databases, these people are crucial although they have always been in the lime light. Among of their scope are preparing Input forms, Storing procedures, and report views. Diagrams such as USE CASE, DFD , ERD.. and many more.  In most of my projects and software that i build, my database is my system backbone. The inter-table relationships will highly be committed to your system data capture performance. I have seen many coders trying to build their database by chunking all data in one table, or building tables with no relationships. which has jeopardized a system integrity so much. Make it Informix DB2, oracle, mysql, postgresl, sqlSERVER, Lotus? it all uses the same law to design your database, and the SQL syntax are almost the same, just abit different for their branding markups. Backup plans, replication or HA are all additional features based on your client requirements.

SOFTWARE ARCHITECTS
Layman thinks architect only design the system, but the true fact is the workload is more on human to human contact and turn it into a working system. The scope of work encovers all of those i mentioned above. But on the coding part, it requires them to understand more than 1 language. If you ask me, an architect should understand the structure of a language, not memorizing them like a coder, to do this, try understanding the C languange structure, Electrical gate structure and a few algorithms. Those are technical part. The most challenging part is for the architect to connect with all the people involved in a particular project, PM, Legal, Clients, DB engineers, Risk management officers, Hardware, Software and many more. in a project management hierarchy, and architect will be placed under the project director and above the project manager.
Moreover he/she should be able to verse all the contract clause and scope of work of a particular project for a current software project.

HARDWARE ARCHITECTS
Almost the same as Software architect but the scope of work is detailed on hardware.

SOLUTION ARCHITECT.
These is the highest hierarchy in a system development role.It covers both hardware arch and software arch soundly. It might take more than 10 years to achieve this level.

Conclusion.

So which one are you? choose wisely. This is a step by step process. To achieve up to the Engineer level , one must know Project Management(briefly) to know his/her role as an engineer in a development team. Unlike coders, their responsibility is just to code, just like assembly machines. They just do what they are told to do. Engineers solved problems and minimizes the risk on technical developments. Architects must be well versed in Project Management, best advise is to know soundly on Project Management Process (you can read and practice PMBOK). Architects also must be soundly to be humane rather than a robot, meaning in terms of project liquidity planning on finance, risk management, schedule management and most importantly people management.

Sounds tedious right? but just remember everyday is a learning process, IT is a very fast paced industry, therefore never ever put your learning curve to a fullstop.