Saturday, October 17, 2009

My Information Environment

Information technology encompasses many aspects of computing and technology. The information technology covers many fields. IT professionals perform a variety of duties that range from installing applications to designing complex computer networks and information databases. A few of the duties that IT professionals perform may include data management, networking, engineering computer hardware, database and software design, as well as the management and administration of entire systems. Information Technology (IT) is a general term that describes any technology that helps to produce, manipulate, store, communicate, and/or disseminate information. Presumably, when speaking of Information Technology (IT) as a whole, it is noted that the use of computers and information are associated.

Information environment is the aggregate of individuals, organizations, or systems that collect, process, or disseminate information; also included is the information itself. If I were to choose an information environment, I would choose to work in an environment of programmers or database administrators. I can’t really pick any of them because I like them all and I would like to work in this kind of environment.

Programmer

Programmer is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to programming may also be known as a programmer analyst. A programmer's primary computer language (Lisp, Java, Delphi, C++, etc.) is often prefixed to the above titles, and those who work in a web environment often prefix their titles with web. The term programmer can be used to refer to a software developer, software engineer, computer scientist, or software analyst. However, members of these professions typically possess other software engineering skills, beyond programming; for this reason, the term programmer is sometimes considered an insulting or derogatory oversimplification of these other professions. This has sparked much debate amongst developers, analysts, computer scientists, programmers, and outsiders who continue to be puzzled at the subtle differences in these occupations.

Computer programmers write, test, debug, and maintain the detailed instructions, called computer programs that computers must follow to perform their functions. Programmers also conceive, design, and test logical structures for solving problems by computer. Many technical innovations in programming — advanced computing technologies and sophisticated new languages and programming tools — have redefined the role of a programmer and elevated much of the programming work done today. Job titles and descriptions may vary, depending on the organization.

Programmers work in many settings, including corporate information technology departments, big software companies, and small service firms. Many professional programmers also work for consulting companies at client' sites as contractors. Licensing is not typically required to work as a programmer, although professional certifications are commonly held by programmers. Programming is widely considered a profession (although some authorities disagree on the grounds that only careers with legal licensing requirements count as a profession).

Programmers' work varies widely depending on the type of business they are writing programs for. For example, the instructions involved in updating financial records are very different from those required to duplicate conditions on an aircraft for pilots training in a flight simulator. Although simple programs can be written in a few hours, programs that use complex mathematical formulas whose solutions can only be approximated or that draw data from many existing systems may require more than a year of work. In most cases, several programmers work together as a team under a senior programmer’s supervision.

Different programming languages are used depending on the purpose of the program. Programmers generally know more than one programming language, and because many languages are similar, they often can learn new languages relatively easily. In practice, programmers often are referred to by the language they know, such as Java programmers, or by the type of function they perform or environment in which they work—for example, database programmers, mainframe programmers, or Web programmers.
Programmers also update, repair, modify, and expand existing programs. Some, especially those working on large projects that involve many programmers, use computer-assisted software engineering (CASE) tools to automate much of the coding process. These tools enable a programmer to concentrate on writing the unique parts of a program. Programmers working on smaller projects often use “programmer environments,” applications that increase productivity by combining compiling, code walk through, code generation, test data generation, and debugging functions. Programmers also use libraries of basic code that can be modified or customized for a specific application. This approach yields more reliable and consistent programs and increases programmers’ productivity by eliminating some routine steps.
Programs vary widely depending on the type of information they will access or generate. For example, the instructions involved in updating financial records are very different from those required to simulate flight for pilot training. Simple programs can be written in a few hours, but some programs draw data from many existing systems or use complex mathematical formulas. These programs may take more than a year to create. In most cases, several programmers work together as a team under a senior programmer’s supervision.

Programmers test a program by running it to ensure that the instructions are correct and that the program produces the desired outcome. If errors do occur, the programmer must make the appropriate change and recheck the program until it produces the correct results. This process is called testing and debugging. Programmers may continue to fix problems for as long as a program is used.
Programmers working on a mainframe, a large centralized computer, may prepare instructions for a computer operator who will run the program. Programmers also may contribute to the instruction manual for a program.

Programmers in software development companies may work directly with experts from various fields to create specialized software—either programs designed for specific clients or packaged software for general use—ranging from games and educational software to programs for desktop publishing and financial planning. Programming of packaged software constitutes one of the most rapidly growing segments of the computer services industry.

Increasingly, advanced software platforms are bridging the gap between computer programmers and computer users. New platforms, such as spreadsheet, accounting, and enterprise resource planning applications, have created demand for computer specialists who have first-hand knowledge of a user-base. These workers use such platforms to develop programs that meet the specific needs of this base. Computer programmers often are responsible for creating the software platform, and then fine-tuning the final program after it has been made.

Computer programmers often are grouped into two broad types—applications programmers and systems programmers. Applications programmers write programs to handle a specific job, such as a program to track inventory within an organization. They also may revise existing packaged software or customize generic applications purchased from vendors. Systems programmers, in contrast, write programs to maintain and control computer systems software for operating systems, networked systems, and database systems. These workers make changes in the instructions that determine how the network, workstations, and central processing unit of a system handle the various jobs they have been given, and how they communicate with peripheral equipment such as terminals, printers, and disk drives. Because of their knowledge of the entire computer system, systems programmers often help applications programmers determine the source of problems that may occur with their programs.

Database Administrator

A database administrator (DBA) is a person responsible for the design, implementation, maintenance and repair of an organization's database. They are also known by the titles Database Coordinator or Database Programmer, and are closely related to the Database Analyst, Database Modeler, Programmer Analyst, and Systems Manager. The role includes the development and design of database strategies, monitoring and improving database performance and capacity, and planning for future expansion requirements. They may also plan, co-ordinate and implement security measures to safeguard the database.

The duties of a database administrator vary depending on job description, corporate and Information Technology (IT) policies and the technical features and capabilities of the DBMS being administered. They include disaster recovery (backups and testing of backups), performance analysis and tuning, data dictionary maintenance, and database design.

Job description:

A database administrator (DBA) is responsible for the performance, integrity and security of a database. Additional role requirements are likely to include planning, development and troubleshooting.

The database approach incorporates the following principles:

• data remains consistent across the database;

• data is clearly defined;

• users access data concurrently, in a form that suits their needs;

• there is provision for data security and recovery control (all data is retrievable in an emergency).

Database administrator (DBA) roles are increasingly identified by the databases and processes they administer and the capabilities of the database management system (DBMS) in use.

Typical work activities:

The work of a database administrator (DBA) varies according to the nature of the employing organization and the level of responsibility associated with the post. The work may be pure maintenance or it may also involve specializing in database development.

Typical responsibilities include some or all of the following:

• establishing the needs of users and monitoring user access and security;

• monitoring performance and managing parameters to provide fast query responses to 'front end' users;

• mapping out the ‘conceptual design’ for a planned database in outline;

• considering both 'back end' organization of data and 'front end' accessibility for end users;

• refining the ‘logical design’ so that it can be translated into a specific data model;

• further refining the ‘physical design’ to meet system storage requirements;

• installing and testing new versions of the database management system (DBMS);

• maintaining data standards, including adherence to the Data Protection Act;

• writing database documentation, including data standards, procedures and definitions for the data dictionary (‘metadata’);

• controlling access permissions and privileges;

• developing, managing and testing backup and recovery plans;

• ensuring that storage, archiving, backup and recovery procedures are functioning correctly;

• capacity planning;

• working closely with IT project managers, database programmers and web developers;

• communicating regularly with technical, applications and operational staff to ensure database integrity and security;

• commissioning and installing new applications.

Because of the increasing levels of hacking and the sensitive nature of data stored, security and recoverability or 'disaster recovery' have become increasingly important aspects of the work.

Roles of the DBA:

• Installation of new software — it is the job of the DBA to install new versions of DBMS software, application software, and other software related to DBMS administration. It is important that the DBA or other IS staff members test new software before it is moved into a production environment.

• Configuration of hardware and software with the system administrator — in many cases the system software can only be accessed by the system administrator. In this case, the DBA works closely with the system administrator to perform software installations, and to configure hardware and software so that it functions optimally with the DBMS.

• Security administration — one of the main duties of the DBA is to monitor and administer DBMS security. This involves adding and removing users, administering quotas, auditing, and checking for security problems.

• Data analysis — The DBA analyzes data stored in the database and makes recommendations relating to performance and efficiency of that data storage. This includes the effective use of indexes, enabling "Parallel Query" execution, or other DBMS specific features.

• Database design (preliminary) — The DBA can be involved at the preliminary database-design stages, eliminating many problems that might occur. The DBA knows the DBMS and system, can point out potential problems, and can help the development team with special performance considerations.
• Data modeling and optimization — by modeling the data, it is possible to optimize the system layouts to take the most advantage of the I/O subsystem.
• Responsible for the administration of existing enterprise databases and the analysis, design, and creation of new databases.

o Data modeling, database optimization, understanding and implementation of schemas, and the ability to interpret and write complex Structured Query Language (SQL) queries.

o Proactively monitor systems for optimum performance and capacity constraints.

o Establish standards and best practices for SQL.

o Interact with and coach developers in SQL scripting.


There are many challenges in performing these roles. As an IT student, you should prepare more for the real world scenario when dealing with these roles.

Challenges surround programmers each and every day, both as motivators and demotivators. While not necessarily a driver of success in every programmer, some prefer to keep it simple and focus on the familiar and ‘what they are good at.’ Nonetheless, leveraging challenges towards positive outcomes is very prevalent where good programmers are found,

challenges that foster …

• personal and career growth,

• new learning, and

• meaning

… represent the best drivers of excitement and reward.

Many programmers will always be able to find fun, productive, and new ways to challenge themselves simultaneously benefiting those around them.

Other programmers may seek a challenge that provides that personal meaning, but require a little guidance. Work with programmers and assist them in finding or building upon challenges that are new and exciting to them. Reinvigorating a common task or a persistently onerous effort through finding that challenging, motivating spark will bring new life and engagement to both the work and the programmer.
Different programmers are motivated by finding different, personally appealing, Challenges in their daily work. These challenges can be anything from …

• Optimizing speed or memory,

• Reducing the total number of source code lines,

• Satisfying the needs of a client,

• Maximizing modularity and reusability, and/or

• Crafting that perfect algorithm.

The DBA`s top three operational database management challenges are: database performance, data recovery/availability and upgrading to new database versions.

Performance means that the database does not cause unreasonable online response times, and it does not cause unattended programs to run for an unworkable period of time. In complex client-server and three-tier systems, the database is just one of many elements that determine the performance that online users and unattended programs experience. Performance is a major motivation for the DBA to become a generalist and coordinate with specialists in other parts of the system outside of traditional bureaucratic reporting lines.

Recoverability means that, if a data entry error, program bug or hardware failure occurs, the DBA can bring the database backward in time to its state at an instant of logical consistency before the damage was done. Recoverability activities include making database backups and storing them in ways that minimize the risk that they will be damaged or lost, such as placing multiple copies on removable media and storing them outside the affected area of an anticipated disaster. Recoverability is the DBA’s most important concern.

Recoverability, also sometimes called "disaster recovery," takes two primary forms. First the backup, then recovery tests.

The backup of the database consists of data with timestamps combined with database logs to change the data to be consistent to a particular moment in time. It is possible to make a backup of the database containing only data without timestamps or logs, but the DBA must take the database offline to do such a backup.
The recovery tests of the database consist of restoring the data, then applying logs against that data to bring the database backup to consistency at a particular point in time up to the last transaction in the logs. Alternatively, an offline database backup can be restored simply by placing the data in-place on another copy of the database.

If a DBA (or any administrator) attempts to implement a recoverability plan without the recovery tests, there is no guarantee that the backups are at all valid. In practice, in all but the most mature RDBMS packages, backups rarely are valid without extensive testing to be sure that no bugs or human error have corrupted the backups.

To address these challenges of a DBA, I must be prepared in these situations in case these would happen and think what the solutions in answering these challenges are.

http://en.wikipedia.org/wiki/Programmers
http://en.wikipedia.org/wiki/Database_administrator
http://www.tri-c.edu/programs/informationtechnology/pages/home.aspx
http://www.bls.gov/oco/ocos110.htm
http://tpgblog.com/2009/04/06/worlds-best-programmer-challenge/
http://www.reuters.com/article/pressRelease/idUS126315+17-Feb-2009+BW20090217
http://www.wordiq.com/definition/Database_administrator

No comments:

Post a Comment