This section outlines some of the projects that I have worked on. I will be including freebies like screenshots, working documents ... even code samples up here as development on this site progresses. Actually do go through this section prior to reading detailed information about any project just so that you know how I have worked to design it.
Since the projects section will be describing my projects, I think I should explain how I work from conception to final product.Reminder: to myself ... `put an image here`. No one likes to read boring text !
- Requirement Analysis & workflow diagrams
- Make screen designs, CSS styles & UI
- Decide coding standards & conventions
- Create prototypes & test shells. Performance tweaking
- Integrate various prototypes, add layout styling & test
- Post-integration performance tweaking
Actually to be really honest ... I dont follow these steps in strict order. I play more agile development rather than procedural development simply because it's more adaptable to change.
Please click each section to read more about it.
I try and understand the entities which are used in the application and try to design the database.
Yes I know this approach could be dicey, but well it has worked for me so far. The reason I do the database design so early, is so that I can anticipate the workflow diagrams which I will work on later. Besides it also tells me what fields to use in the screen designs in Stage 2.
Observe the data flying between requests and then ascertain what should be stored in a session and what should be passed on as parameters. Appropriate controllers are then developed to handle requests and forward them to the respective processing entities. This gives me a more detailed insight into the application from which I can prepare for future enhancements & code modifications. You will agree that time spent here is definitely worth the time saved in doing re-work.
Of course, nothing is ever perfect in the first try, or else perfection would not have existed!!! So I am back to the drawing board (sometimes faster than I expected) to either enhance earlier work or correct & analyze errors with the current design. One always stands to learn more through an iterative process. Lesson of life #34260: nothing is born perfect, it has to be improved & moulded. I am pretty sticky towards my job i.e. if I take up a task, I ensure that I complete it and I complete it either as desired or better than what was desired and that too in the given time frame.
For early stage designs ... I use pencil & paper or probably a whiteboard & marker, some crayons ... & of course my head.That ... IMHO the best way to visualize a mind-concept. Once I have a pretty decent idea of what I am heading into, then I starts the process of architecting the application.
I tend to adhere to naming conventions, inline comments to code. Well, it just helps down the line in avoiding spaghetti code. I dont really like to write a whole bunch of documentation. Why ? ... because it bores the heck outta me. Tweaking the code for maximum performance, efficiency and minimum memory usage is something I keep doing all the time. Shaving those `few extra` bits and bytes of HTML code results in faster downloads and `better-to-maintain` pages. If a web site is being designed, then I adhere to XHTML standards, web standards etc which basically make my site standards-compliant ... wheeee !
Best way to test functionality ... prototyping.I make small test shells before integrating them into the live project. Nothing too complex, just to get an idea as to how the UI might look, what fields will be present on input forms, data flow between screens etc. etc. This is the first place I try to tweak my code where I push for performance in terms of speed, database queries etc.
I integrate a module into the main project once I know the basic functionality for the module works. This obviously saves the whole project from breaking if there is an error in the new module.Of course errors always crop up. Now that the new module has been integrated, we need to spruce it up to meet layout requirements and basically make it look good. Here is where I start styling the page as and how it comes. The style sheets I create give a clean, crisp look to the site.
I am still learning as to how to create really professional looking style sheets & a job somewhere will do me a whole lot of good. I do know basic and middle level concepts of style sheet creation through my UI classes.
Appropriate general & specific sections of the site, elements, selectors, id's etc are identified and styles created for them. I try to maintain a sense of belonging to the site by following UI design principles like usage of colors, font sizes & faces, spacing & indentations, metaphor representations through use of icons. Tooltips are also provided sometimes where a small description of the item is included. I try to avoid including any kind of inline styling information on the page directly to separate the styling from the code.
Since integration creates a lot of inherent problems for performance, I perform another round of tweaking on the code to improve on speed & memory as well. Memory tweaking is done as several modules together tend to hog much more memory than the test shell environment.Everyone likes an application with a small memory footprint !
So if you think my work methodologies will benefit your organization, do shoot me a mail which is listed on the home page and we can talk shop then.
