Mega Code Archive

 
Categories / Delphi / Examples
 

So You Want To Be A Developer

Title: So You Want To Be A Developer? Question: What are the different approaches to programming and application construction, and how can I best develop my skills for both job security and maximum earnings? Answer: Programmers can be broken down into several classifications, ranging from one extreme to another. The first extreme, at the far right side of the spectrum, is a classification of programmers that I refer to as hackers. It's a personal definition, and is not meant in the sense of breaking into things or pirating or such... but a hacker has a passion for pure code. They love to get into the guts of any system, find out how it works, and tinker around with it. Hacker's aren't interested in user interface, reusability, and code readability or maintenance issues. Hackers are focused on doing things in the absolute fastest way possible. They are also are the facet of a programmer that is the most "geek-like". They get their kicks off of solving supposedly unsolvable problems, and constantly reworking systems. This purist approach, however, has its downside. In my experience as both a hacker, and in working with them, their effectiveness on their own tends to be limited to solving one specific problem. The lack of formal structure and design to their strategy causes serious maintenance issues in a larger-scale application. In my own experience with a "coding by the seat of my pants" approach, as I moved from piece to piece of an application, such as multiple forms I was having to repeat several tasks that I had done before in other modules. For example, sorting a list. Calculating 30/60/90 dates for aging purposes. Setting up printer parameters. The problems with this are three-fold: 1. It was unnecessary work. 2. Each time I wrote such a routine, I would invariably do it in a slightly different manner. 3. If the customer requested a change to one of these common routines, I would generally miss one or more implementations of it. On the other extreme side of the spectrum, we have the pure designer. A designer will chart out to their heart's content the logical workflows of an application before it is ever a single line of code. User goes from step A to step B to step C, then has an option for D or E. All of the logic for a system is mapped out, all facets of it well-described and understood, and the entire visual system (user interface) is modeled as a whole to be clear, concise, and consistent. The drawback to a pure designer is that they don't think like a programmer does in raw code. They can give you a clear and concise picture of how the application should function from a user's perspective, but cannot give any technical details about how to accomplish that goal. Now, in a utopian world a team with a pure designer and a hacker on it would be useful, provided they communicated well. The trouble from a personal perspective is that most shops, unless you work for huge corporations, won't hire pure designers. They want coding experience and expertise. Also, a designer's work is effectively done once coding begins, so from a company's point of view there is no need to keep them around after this point. This is not very good for job security. An additional caveat to this approach is that a designer and a hacker have very different views on development. Hackers, in general, do not see the point to spending four days researching and documenting a modification to a system when they can visualize the solution and whip it out in four hours. Hackers, however, can find a variety of jobs, depending on their language skills. The problem with falling into this category is that it doesn't pay very well. A pure coder with no design skills or desires can find themselves being little more than a grunt worker, or "coding bitch", if you'll excuse the crude term. Just about every game you have played, and I have heard from sources even from large companies like Microsoft, are developed and written by teams of these hackers getting paid $10-15 an hour. I wanted to be a game programmer when I started in the industry. Now I have my sights set on designer. The best combination of this, the position that provides both for the most personal success and accomplishment, as well as being able to make nice sums of cash, is a systems analyst. A systems analyst has a good understanding of the concepts of software design and architecture, coupled with familiarity if not proficiency in coding. These are the people that quickly rise to become project leaders. The more an analyst knows about coding and is proficient at problem solving the better, though at the very least they should be functional. Between 2/3 designer to half-and-half, they are at their finest. The design aspects and skills ensure their ability to oversee projects and even conceivably work on projects with languages they are initially unfamiliar with. The understanding of the theory of programing and object-oriented design aspects provides them their strength. Management skills don't hurt either, as becoming a project leader puts you in a position to delegate to other team members different facets of the system being constructed.