Showing posts with label web programming. Show all posts
Showing posts with label web programming. Show all posts

Friday, November 28, 2008

Characteristics of a True Programmer

While programmers come in all shapes and sizes and from just about any ethnic group with no gender, race or age boundaries, there are common characteristics all programmers share. These are:

1. Works long hours
I have not come across a competent programmer that doesn’t work extra hours. Even the weekend programmer puts in a lot of time on weekends. This one seems always to be true. Ask the spouses and friends of real programmers. Even though this one is a pity in some ways – it seems that a “programmer” that does not follow this characteristic will not be much of a programmer even after years of training.

2. Does lots of research
All real programmers I have encountered spend a significant amount of time researching. They are always looking for new and better ways to do things or simply finding out how to do some task he/she doesn’t know how to do.

3. Is curious
Programmers are constantly curious about new things and techniques.

4. Tries to solve own problems
Sometimes, irritatingly so, programmers don’t want to be helped. They only ask for clues to a problem. After that they want to solve it themselves.

5. Experiments with new ideas and techniques
True programmers frequently have something new to show. The programmer might be a show-off or not. You might have to prise the idea out of him/her – but it will be there. Even new programmers show this characteristic early on.

6. Problem solver
A true programmer is a problem solver. While this may not extend into his/her personal life, it is certainly true for his/her programming challenges. The problem solving is not always in a straight line. Other techniques like lateral and predictive thinking are crucial techniques in a programmer’s life.

By the way, the above is true even for the week old programmer. If these characteristics don’t show up early on, then you don’t have a real programmer in the making.

Wednesday, October 22, 2008

Summary of skills needed to produce a good web site

I have been giving some thought as to what a designer/developer needs to know in order to produce a good web site. Here is a summary of my thoughts.

PS: You are welcome to comment on this.

A. Static Content Site
(Often referred to as a Brochure or an HTML site.)
  1. HTML/XHTML
  2. CSS
  3. Graphics manipulation and conversion
  4. Graphics creation
  5. Layout design
  6. Writing for the Web utilizing keywords
  7. SEO factors (make/keep pages search engine friendly)
  8. Web site marketing (includes social networking and how to convert visitors to the web site)
  9. JavaScript
  10. Web hosting fundamentals and related Internet and environmental factors
  11. Optional: XML
  12. Optional: Flash
  13. Optional: Silverlight
  14. Imagination and bright ideas
  15. Web authoring tool (Expression Web, Dreamweaver, etc.)

B. Dynamic Content Site
(Often, incorrectly, referred to as database site. Also referred to as an ASP or PHP site amongst other names.)

  1. All of the above skills listed in Static Content Site, especially points 1, 2, 3, 10 and 11
  2. Excellent programming ability
  3. Logic (being able to work out the logical flow and sequence of events and things)
  4. Understanding data and the relationships between data and types of data
  5. Understanding the Web environment very well (e.g. the web programming is stateless – storage wiped out for each client – server – client round trip)
  6. Know and understand the web platform technology (e.g. ASP.NET or PHP)
  7. Know at least one programming language that can be used in the environment chosen (in ASP.NET choices are C#, VB and others)
  8. Know Object Oriented Programming (OOP)
  9. Optional but key: Know the appropriate IDE (Integrated Development Environment – in ASP.NET it is Visual Studio or Visual Web Developer)
  10. Fundamentals of databases
  11. SQL (Structured Query Language) and T-SQL if using SQL Server or equivalent
  12. Database table design
  13. XML and at least four related technologies like XSLT, DTDs, XPath, Schemas
  14. Research ability
  15. Advanced: Security issues and how to handle them
  16. Advanced: Any feature that could be left out but would make for better performance, maintenance and stability
  17. Regular Expressions
  18. Project planning and management
Quite a list of diverse skills.

In some large companies specialists are employed to deal with specific skills. But, I know quite a few ASP.NET developers who know the whole gamut of skills presented here.