[thelist] CF: Advanced? How do you know?
.jeff
jeff at members.evolt.org
Thu Aug 1 02:37:01 CDT 2002
frank,
><><><><><><><><><><><><><><><><><><><><><><><><><><><><><
> From: Frank
>
> If you were looking for a developer to partner with, or
> contract out to, what are the benchmarks that you would
> use to determine whether or not his is advanced? What
> are some of the questions you would ask him or her
> (rather than giving a test. Tests to prove your mettle,
> but tests aren't something you give until you're pretty
> convinced that this person might indeed be advance).
><><><><><><><><><><><><><><><><><><><><><><><><><><><><><
here's a list off the top of my head of things that i'd hope an advanced developer at least understood and preferably had worked with at least once or twice.
- structures
- how would you go about determining all the keys
in a structure and their values? the less than
advanced developer will say something like do a
list loop over the list created by calling the
StructKeyList() function. the more advanced
developer will say he'd either use a for/in
loop in a <cfscript> block or a collection
<cfloop>.
- how would you access a key in a structure
dynamically? if they have some experience with
structures they'll probably either say they'd
use the Evaluate(), StructGet(), or StructFind()
functions. if they're advanced they'll use
bracket notation.
- how would you determine if a key in a structure
existed before trying to access it, thereby
avoiding an error? the less experienced
developer would use the IsDefined() function.
The advanced developer would use the
StructKeyExists() function.
- what scopes are exposed as structures in a
normal template in cf5? cgi, url, form,
session, application, request, cookie (i would
not be surprised if you had folks with fusebox
experience list the attributes scope as being
a scope available in a normal template request,
though it never has been and never will be).
- what scopes are exposed as structures in a
custom tag in cf5? attributes, cgi, url, form,
session, application, request
- what scopes are *not* exposed as structures?
variables, server, caller
- lists
- for performance, what should you do prior
to looping over the contents of a list?
convert it to an array using the ListToArray()
function.
- how would you determine how many words are in a
string? ListLen(myString, " ")
- is there a difference between these two lists --
"a,b,c,,e,f,g" and "a,b,c, ,e,f,g" besides the
space between the commas? the first has one
fewer elements than the second.
- csv string parsing
- name three ways to work with csv string, most
likely to do a mass import into a database
without bulk copy capabilities?
- parse it as a cr/lf delimited list and parse
each list element as a comma or tab
delimited list
- use a custom tag developed for reading csv
data
- use the <cfhttp> tag.
- which of the three methods would you use? when
and why?
- lists -- try to avoid wherever possible
- custom tag -- for fixed width data
- <cfhttp> whenever possible
- <cfscript>
- how much do they use it, when, and why? make
code more readable by doing large groups of
sets in a <cfscript> block instead of a bunch
of <cfset> tags
- do they know how to output a query within a
<cfscript> block?
- can they write a udf?
- database/cf code
- some things you're better off letting the
database do the work, name a couple.
sorting, concatenation, bulk insert, deleting
child data when parent data is deleted,
retrieving aggregate data (avg, sum, max,
etc.), etc.
- you should *never* see the <cfquery> tag
inside of a query <cfoutput> or query <cfloop>
- are they adept enough to be able to know when
to it's better to use a join and not a
subselect and vice versa
- name 3 tags that can create a query.
<cfquery>, <cfhttp>, <cfdirectory>, <cfpop>,
<cfldap>, <cfregistry>, <cfsearch>, <cfwddx>,
<cfscript>, <cfstoredproc>, <cfmodule>. some
of these are trick answers, but nonetheless
can create a query.
- do they know how/when to use stored
procedures, views, and other more complex
database techniques beyond simple select
statements
- can they rationalize when and when not to
use cached queries?
- do they use <cfqueryparam> when using
text strings in queries on publicly
accessible applications?
- do they know how to properly architect a
group of database tables for one-to-many
and many-to-many assocations?
- consistency
- how consistent is the developer in the
things they develop?
- is there a methodology they use when
developing apps? things like indenting,
directory structure for applications,
naming schemes for files, variables, and
database tables and columns should be
descriptive, concise, and consistent.
- are they careful to variabize anything that
gets used more than once or twice in their
applications like datasource names, folder and
file paths, email addresses, etc.?
- function use
- do they use Trim() to force data to it's
minimum length?
- do you see conditionals with checks like
<cfif url.id EQ 0> or like <cfif NOT
Val(url.id)>? do you see conditionals like
<cfif url.keywords EQ ""> or like <cfif NOT
Len(url.keywords)>?
- do they have experience with verity?
- do they have large, complicated conditionals
or neat, concise switch statements?
i know there's a fair amount i'm still missing, but hopefully this, combined with the other responses you've gotten, will give you a start.
good luck,
.jeff
http://evolt.org/
jeff at members.evolt.org
http://members.evolt.org/jeff/
More information about the thelist
mailing list