CHRISTIAN MONTOYA of ChristianMontoya.com

October 23, 2007, Categories: Web design, Web standards
Back

YOU'VE GOT A DEGREE IN ELECTRICAL AND COMPUTER ENGINEERING. HOW DOES IT HELP/INTERFERE WITH YOUR WEB DESIGN CAREER?

When I started college I was convinced that I would be an Electrical Engineer. I didn't get involved in web design or web development until right before my junior year and it wasn't until my senior year that I decided to make it a career. Sometimes I feel at a disadvantage since I didn't study too much of the high-level programming concepts that computer science and information science students are exposed to, but I still did a lot of programming in ECE. It might sound crazy that optimizing a C compiler or building a super-scalar processor in Verilog prepared me for the code I write now, but it's true. I learned a lot in my courses about writing maintainable code, programming for execution speed, and finding small, elegant solutions to complex problems. Plus, my engineering degree taught me how to learn and how to solve problems; every day I am learning new things in programming and my advancement of my own skills didn't end when I graduated. As for the courses I took, I did take some courses in the Information Science department and I have to say that Cornell University has a very forward-thinking and standards-oriented Info. Sci. program. Valid, clean code and usable interface design were requirements on all the projects we did. It was through these courses that I realized I was very capable with CSS, something that is confusing to a lot of people, and that I could hold my own as a web developer. Even with an ECE background, I'm doing just fine now as a web developer. I don't regret the major I graduated with and I definitely don't regret my engineering background.

montoya herald

OBJECT-ORIENTED PROGRAMMING IS ONE OF YOUR SPECIALTIES. SIMILAR TO WEB 2.0 TREND, OBJECT-ORIENTED PROGRAMMING DOESN'T HAVE A CONSENSUS DEFINITION OR THEORY BEHIND IT. HOW WOULD YOU FORMALIZE THE CONCEPT OF OOP? DO YOU CONSIDER IT A SUPERIOR WAY TO PROGRAM? WHAT ARE THE OOP LANGUAGES?

I learned computer programming in my first year at Cornell. They taught us Java because they wanted us to learn OOP early on. It took me more than a year to really understand OOP but now I see it in web languages all the time. I'll describe what I find useful about it in web programming: you can use objects to combine core functionality and data that's related and keep it all in one place. Using OOP in your development allows you to structure your application logic in ways that are very hard to do otherwise, and once you have that structure you can reuse those objects as many times as you want. Also, you can extend objects to build extra functionality and define your logic more precisely, which you can't do with functions at all.

One of the most important and helpful uses for OOP in my development is in Javascript. I created a game with Javascript recently and one of the concerns I had with this game was that I needed to keep core game data, such as the player's score, private so that hackers would not have an easy way of changing it. I created an object, 'secureGame', which held the private variable for the player's score as well as some methods for incrementing it and retrieving it. When the player starts the game, my code just creates a new instance of the 'secureGame' object and the default data is already defined. When the player dies and restarts, I just throw away the old 'secureGame' object and create a new one; this is very convenient because I don't have to manually reset all of the core data one-by-one.

Most languages have OOP, only the simplest functional languages lack it. PHP, Perl, and Javascript are all languages which I use daily that have it. I could name others but it would be a long list.

YOU BELIEVE IN SHORT, ELEGANT CODE. WHAT DOES IT MEAN TO YOU? BESIDES YOUR OWN ONES, WHAT ARE THE EXAMPLES OF SHORTLY AND ELEGANTLY CODED WEBSITES TO YOU? ARE THEY DESIGNED IN OOP LANGUAGES?

Short, elegant code means that I don't have to write a thousand lines to do something that can be done with ten. One of the principals I follow is DRY (Don't Repeat Yourself). Any kind of functionality that I might possibly need to reuse down the road goes into a function or object method that I can maintain separate from all my template code. This leads to an MVC (Model, View, Controller) pattern of development, in which the functional logic is separated from the generation of the final 'view'. When I am writing code, I structure things so that I process all the data and generate all the content I need before I start displaying HTML. To be even more exacting, I like to handle user input first, then database queries in one place, then functional processing, and finally output.

I do all this because long script files and messy code scare me. I have to be able to structure the project in my mind in a way that makes sense. My code has to reflect the order I am trying to maintain in my head. Otherwise I lose track and waste time with a mess that I started. That's no way to develop things. I waste a lot of time in my day-to-day working with files written by other people who don't appreciate clean code like I do, and it's a huge pain. I never want the code I write to cause other people to waste time. Code should make sense, and it should read like poetry.

Short and elegant code doesn't necessarily mean using OOP, though the two might go hand-in-hand. I can't tell you which sites are coded elegantly because I can't see the code myself, but I know that jQuery is a very elegant Javascript framework which provides developers with the jQuery object, and Javascript code written using jQuery tends to be very concise.

foxymcloud wedding

YOU CALL YOURSELF A CSS EXPERT. TRYING TO GET CSS-BASED WEBSITES TO LOOK THE SAME ACROSS ALL BROWSERS CAN OFTEN BE DIFFICULT. HOW DO YOU MANAGE THIS ISSUE?

I just so happen to know CSS really, really well and I have a ton of experience with it. Chances are, when I see a CSS problem, I've seen it before and I can guess what's causing it. If not, I'll figure it out. Sometimes I might have to work around an issue, but that's just a part of working with CSS. When I first started out with web design, I joined the CSS-d discussion list and followed the discussions there daily. I learned a lot about CSS from reading the threads where other people had their problems solved and it was only a couple of months before I started helping people myself.In the process of getting so much experience with CSS, I have learned a lot of defensive techniques that allow me to anticipate how browsers will render my pages. I know a lot of things that don't work with Internet Explorer and how to get around them. I've gotten to a point where I can create an entire site design with CSS and know that it will work fine in all the browsers before even looking at it for the first time. I also have a lot of experience making flexible designs; using fluid width and height containers with design elements such as rounded corners, shadows, and other decorations that cause a lot of difficulty for most people. I think the reason I have learned so much so fast is that I challenge myself to attempt difficult techniques and still maintain the flexibility of my layouts. It's when you attempt to solve complex problems with CSS that you learn about all the layout concepts behind it and actually begin to understand how things work.

I would be lying, however, if I said it was all me. I use the Firefox Web Developer Extension all the time and it is invaluable in working with CSS.

WEB ACCESSIBLE WEBSITES IS NOW A REQUIREMENT IN MANY COUNTRIES. WHAT ARE THE ADVANTAGES/DISADVANTAGES OF USING CSS INSTEAD OF TABLES WHEN DESIGNING A WEB ACCESSIBLE SITE?

I wouldn't say it's a matter of CSS vs. tables, but tables can be a huge hindrance to accessibility when they are used incorrectly. At the same time, a site could be built with nothing but divs and it would be very inaccessible too. What does make a site accessible, among other things, is semantic markup, and it's not hard to do. If something is a list, you put it in a list, if it's a table, you put it in a table, and if it's a heading, you put it in a heading. With semantic markup, the webpage makes sense without any styling at all. Then, you can use CSS to design around those semantics, and this is where the power of CSS really comes in handy. You can use CSS to give almost any appearance to you content and add any amount of decorative elements without getting in the way of the semantics you have already set up. This is something that designers couldn't do in the days of table-based layouts; they would eventually make their markup bloated and messy with all their nested tables and spacer GIFs.

WHAT WOULD YOU ADVISE THE BEGINNING CSS LEARNER?

Don't make the mistake that 99% of designers have already made. The mistake I'm talking about is this: most designers just take whatever popular CSS methods they find online and use them at face value. They do nothing but cut-and-paste. The problem with this is that most CSS techniques that people have been using for years are horrible. For example, most designers remove the text from their headings and replace it with background images to use fancy header graphics on their pages and implement rollovers on image-links. This is horrible because the text is gone when images are turned off, but very few people seem to care. There are, however, better ways of doing image replacement and image rollovers, ones which allow the text to still be displayed when images are turned off. I came up with one improved technique for image rollovers and I learned a lot about CSS when I was developing it. If you can challenge yourself to actually learn CSS instead of copying-and-pasting it from other people, then you will understand it too, and you'll know how to use it right.

college freeway

YOU SAID YOU LIKED TO WORK IN TEAMS. WHAT IS YOUR EXPERIENCE OF WORKING IN TEAMS? HOW HAS WORKING WITH A TEAM AFFECTED YOUR APPROACH TO WEB DESIGN? TO YOUR OPINION, WHAT MAKES FOR A GOOD WEB TEAM?

I've worked with teams on a number of occasions. I spent most of last summer working with a team of developers on a new startup that launched in August. I like to contribute to team projects because usually the end product is something I could never have accomplished on my own. In a team, I can be responsible for the things I'm good at and know that the things I'm not so good at will be handled by someone else. Working in teams has taught me to think about how my code will be used by others and how I can document my code well so others can understand it. I have developed a habit of commenting my code all the time, because I want other people to be able to use it.A good web team is made up of people with different skill sets and ideas but the same focus on quality code and good teamwork. There's always a lot of discussion and healthy argument and everyone pulls their weight. You can tell when you are seeing a good team at work because everything gets done quickly and everyone has a part in the final result.

AMONG THE PEOPLE YOU'VE WORKED WITH, WHO WOULD YOU RECOMMEND AS A TEAMMATE AND WHY?

I would recommend a fellow Cornellian, Yaowei Yeo, who I have been working with over the past couple months on some Facebook applications. In the projects we have developed, he has focused mostly on back-end programming and Javascript which I have mostly dealt with front-end programming, design and CSS. He and I also know enough about everything we do to help each other out. We both have very busy schedules but as a team, we have been able to complete some projects very quickly that we couldn't have finished working alone.

WHAT INDUSTRY SITES/BLOGS/MAGAZINES DO YOU READ REGULARLY?

To be honest, I don't keep up too heavily with the industry news because there's a lot of noise. I spend a lot of my time creating things rather than reading. Still, I am an active member of the Web Standards Group and that is a major source of my information. I also follow WebProNews which is really good for industry updates and upsets. I have a handful of blogs in my feedreader but I don't go to any of them for industry news.

We're starting the practice of asking a web designer a question our readers wrote us. The following one is the question we recently received: WHAT TOOL-SET DO YOU USE IN YOUR WORK (FROM TOOL FOR MAKING THE GRAPHICS, CODING CSS AND HTML, JAVASCRIPT/FLASH, TO ANALYTICS AND METHODS FOR USER TESTING)? WHAT DO YOU BELIEVE THE BENEFITS ARE?

I write all my code in Notepad++. It's all I ever need. I manage my databases with PHPMyAdmin because I hate going to the command line, as crazy as it might sound. I design all my graphics in the GIMP for bitmaps and Inkscape for vectors, which allow me to do just about everything I ever want to do. I tend to use jQuery for Javascript development unless I'm doing something very simple. I use the Firefox Web Developer Extension a lot for CSS development because it's the one true What-You-See-Is-What-You-Get CSS editor and it has a ton of extra features. I also use Firebug to test my Javascript for errors. Google Analytics always covers my statistical needs and for user testing I have a blog where I ask people for feedback. The benefits? All of these tools are free.

Helen Walker
Go to Top

Leave a Reply  

Name:
  (required)
Email (will not be published):
  (required)
Website URL:
Message:
Enter the code:





Montoya Christian

image
Christian Montoya is a 22 year old web designer and developer working full-time for Investorguide.com in Fairfax, Virginia. Electrical and Computer Engineer by diploma and web designer by vocation, Christian specializes in web standards design and development, user interface design, object-oriented programming, and search engine optimization. Christian is an expert in in CSS, (x)HTML, PHP, MySQL, and Javascript, with knowledge of Perl and XML. About himself he says that programmed everything at one point or another, including web applications, computer games, embedded hardware, a super-scalar pipelined processor, and an optimized C-subset compiler. Christian believes in short, elegant code, standardized conventions and frameworks.
Ask Your Question
Name:
Email:
Website:

 Notify me

Thanks to:

Web Icons Professional Clip art Professiona Clip art Flash CMS Templates