Careers: Interviews
Master of .NET, VB, C#
This week, Stephen
Ibaraki, I.S.P., has an exclusive interview with the internationally
respected writer, author, speaker, and talented developer, James
Foxall.
James is vice president
for development and support for tigerpawsoftware.com, a Microsoft
certified partner specializing in database applications. Together
with his many responsibilities, James manages the award-winning CRM
product, Tigerpaw Business Suite, and is an expert on
application interface and behavior standards of applications.
He has authored many
reader favorites such as Sams Teach Yourself C# in 24 Hours,
Practical Standards for Microsoft Visual Basic .NET, and his
recent, Sams Teach Yourself Microsoft Visual C# .NET 2003 in 24
Hours. His widely read articles have appeared in
Access-Office-VBA Advisor and Visual Basic Programmer’s Journal.
James holds a degree in
MIS and the Microsoft Certified Solution Developer (MCSD)
designation.
Discussion:
Q: James, it’s a pleasure
doing this interview with you—thank you!
A: It’s me who should be
thanking you - I really appreciate the opportunity!
Q: Please provide a
profile of your career leading to the present. What motivated you to
get into computing and writing? What challenges and lessons can you
share with our audience?
A: I’ve been professional
coding full-time for about 15 years now. We have a family company
that my father started about 20 years ago. My first tasks were to go
in after school and perform backups of critical data to 5.25 floppy
disks! No fun there – usually just jockeying disks for hours on end.
As I went through high school, and then for a while after that, I
pretty much worked in every area of the business: sales, support,
documentation, graphic design, etc. For a while, the graphic
design-side of the business took up most of my time, and I even had
my own graphic design company on the side. I was really still
noodeling in life. About that time, Windows 3.0 just came out. Of
course, everything we were doing was DOS based, and I was constantly
harping about how we needed to move to Windows. Finally, I think my
father just got tired of hearing me complain, so he came in one day
and dropped a box on my desk: Access 1.1. He said: “you want a
Windows program, you write a Windows program”. Well, that did it!
There was no Internet back then, so I got on CompuServe and read
every post and downloaded every sample file I could get my hands on.
I also went to the bookstore and literally bought every single book
available on Access – and read them all! I moved back into my
parent’s house and pretty much wrote code for 14-18 hours a day for
about a year and half. We actually released that product using
Access 2.0, and I’ve been in development ever since.
As for writing…One day,
we were at Comdex in a special section Microsoft had set aside for
Certified Office Compatible products (our product was certified).
This man came by our little booth on his way to meet someone and
stopped for a moment. He was amazed by some of what he saw in our
Access product – and rather surprised that it was written by some
Midwest ‘kid’ of 24 that no one had ever heard of. When he turned to
talk with me, I saw on his name badge that he was Cary Prague. As a
geek, this was a cool thing for me because I knew who Cary was from
his books and his company. I mentioned that I had a small image
editor called Button Designer Pro (written in VB4), and he was
interested in selling it. He made arrangements to come by our hotel
room that night for about 15 minutes. He stayed for well over an
hour. For the most part, he sat on an end table and showed me
screenshots of one of his applications, telling me how they worked
and asking me how he did what he did. Some of my answers were better
than the actual approach he used in the program! He then said to me
“do you want to write a book with me”? Well, duh! It took about six
months to get a contract and there were many times I was afraid it
wouldn’t happen – I just didn’t want to get too hyped up about it. I
flew down to TechEd in New Orleans and we signed the contracts. That
was it – I was off and running as a book author. Of course, that’s
when I learned how much work it is and that you don’t actually get
rich (or even eat sometimes) as a tech author.
I could ramble on for
hours, but that pretty much sums up how I got my start! I worked
VERY hard for quite some time, and then things just started to pop
for me. I’m a firm believer in ‘luck comes after you earn it’.
Q: Who should read your
latest book? Why would someone want to carefully study this
book—what makes this book particularly unique and special?
A: The Teach Yourself
books are interesting in that they have a very specific structure
and are aimed at a very specific group of individuals: those new to
a technology. The books are broken into 24 chapters, each taking
roughly an hour to complete. My book isn’t designed to make you an
expert, but it is designed to make you productive. I’ve tried
to distill a LOT of information down to useable information. I truly
want a reader to be able to write programs – albeit not commercial
applications, as soon as they finish the book. The format of my book
teaches you the material much in the same way you’d use the
knowledge. First, you learn about the Visual Studio .NET
environment. Then, you move on to designing an interface, then
adding code, debugging, using databases, and then finally how to
distribute a .NET application. In the last chapter, you actually
build a complete working application using all the skills covered in
earlier chapters – it’s a great way to end the book. The information
in the book is practical and approachable. I think a lot of readers
get turned away when an author talks down to them, or when an author
tries to show off to the reader. When I write a Teach Yourself
book, I have to operate under the assumption that a reader doesn’t
know much or anything about the topic at hand. This doesn’t mean the
reader is an idiot, however, and I don’t treat them like one. I try
to clearly and concisely cover a topic without being condescending,
and without too much technical fluff. When you read my book, you
should feel that I really want you to learn the material, and you
will find an organization and cohesiveness of thought that will help
you move through what can often be a confusing topic. That’s my goal
at least!
Q: How have your
experiences contributed to the writing of this book?
A: For starters, I
actually write commercial software applications for a living. Many
authors are consultants, popping from project to project. I write a
suite of applications that go through regular revisions and get
distributed to thousands of users. By ‘doing it’, I believe I’m
better able to sift through the material and determine what is
important and what is fluff. I’ve also taught programming at the
college level, so I’ve seen the looks on student’s faces when I
cover something using too complex of an approach. This experience
has helped me enormously when it comes to writing my books.
Q: What are the pros and
cons of using Visual Studio .NET?
A: On the plus side, once
you learn the Framework it’s amazing how easy it is to accomplish
some tasks. I like strict typing, and some other improvements that
either force or encourage better coding practices. The forms engine
is awesome too. For me personally, the biggest con is the really
poor success rate of migrating VB6 projects to .NET; this is keeping
us from moving our flagship products to .NET. I’m also not a fan of
the distribution tools that come with .NET. Another drawback is the
lack of good sample code. There are literally hundreds of thousands
of lines of sample code available for languages such as Visual Basic
and C++, but they aren’t portable to .NET in most cases, and this is
a shame; there’s a lot of good code out there available for free
that just can’t be used in .NET. There are a lot of pluses and
minuses to using .NET, depending on how you use the product.
Q: Discuss the
application interface and behavior standards of applications.
A: This is a big topic –
a book’s worth! I don’t think I can do it justice with just a
paragraph or so. Essentially, it all boils down to the user
experience, which usually means ‘give them what they’re used to’.
There’s a fine line between being creative and giving your users
some slick new interface, vs. giving them a tried and true interface
that they’re used to. For example, most Windows applications use the
same image for the Print button on a toolbar, and most use Ctrl+P to
print. You might come up with a better design for the button, but
why? A user is used to the standard print button. They know what to
look for, and where to look for it, and changing this just causes
unnecessary stress for the user. The appearance, position, and
behavior of the controls on an interface should mimic the same
properties in a widely accepted application, such as a Microsoft
Office application. That isn’t to say you can’t be creative, but
when it comes to designing interfaces, this usually isn’t a place to
show off. Obviously, specialty applications such as MP3 players or
skinnable apps have their own set of rules, but for business
applications, adhering to acceptable policies is usually the best
route. Remember, it’s all about the user. No matter how much you
love your project, it’s still just a tool to the user. The user
shouldn’t have to think much about using the tool. Using the tool
should be as transparent as possible so the user can think more
about the task that he or she is trying to accomplish.
Q: What are the most
important factors to consider when creating robust applications
using modern exception handling?
A: Protect every line of
code with an exception handler, and centralize as much as possible!
It’s easy to think that a certain code statement will never fail,
but some of those statements will – protect them! Also, using a
central error handler will allow you to enhance the functionality of
your application. For example, you might add an email function to
the exception handler. We do this – if our application generates an
exception, we’re emailed details about it, including the files
loaded in memory, file versions, how long Windows has been up (very
good to know when trouble-shooting resource issues in 9x machines),
and more. The better your exception-handling mechanism, the better
you’ll be able to make your code, and your product, in the long run.
Q: What are the main
advantages and disadvantages of using C#?
A: C# is a very strong
language that is gaining popularity at a fast rate. It seems to be
Microsoft’s preferred language (over Visual Basic .NET), so you’re
more assured of not getting screwed in the future like VB6 users
have been regarding migrating to .NET. Personally, I hate all the
semi-colons and the curly braces, so I prefer the syntax of Visual
Basic .NET. Other than a few differences, choosing your .NET
language is largely a matter of preference.
Q: Do you have a few
particular little known secrets to share?
A: No specific secret,
but something that people really need to do is study the
Framework; that’s where all the power (and goodies) is hiding!
Q: What do you see in the
future for the .NET framework?
A: My magic 8-ball says
to ask again later. In all honesty, I would imagine that we’d see
more and more added to it so there will never be a need to go to the
Windows API. Obviously, this is the core of Microsoft’s initiative,
so they’ll be constantly improving it. Perhaps we’ll even see
cross-platform capability – I really don’t know.
Q: Describe in detail
your current work?
A: We have a CRM
(Customer Relationship Management) suite that we market
internationally. I’ve always tried to stay on the bleeding edge, but
at the moment I’ve taken a step back from the technology and I’m
focusing on ROI for our clients and prospects. In this economy,
getting sidetracked by the latest technology can bury you. We’re
adding new features and improving our products, but we’re using
Visual Basic 6 and SQL Server 2000. I’ll be re-evaluating a move to
.NET later next year, but for now we are focusing on adding more and
more value to our products, using our current skill-set and proven
technologies.
Q: Can you describe
future projects, books, and articles?
A: I’ve paired down some
of my commitments for the first time in years. I have three books in
print and I plan on keeping them current, but I don’t plan on
writing any new ones. The technical book market is depressed right
now (so are many tech authors). It still takes as much work to write
a book as it always has (more in some ways), but the payback isn’t
where it used to be. I have two children, so you can imagine there’s
not a lot of ‘free time’ to write. We’re planning on next year being
a growth year for our company, so that’s getting my professional
attention. At the moment, I’m quote happy with the status quo – I
think that’s one of the advantages to writing part-time.
Q: As a renowned
developer and IT expert, can you share your views on the major
competing technologies today, the nature of these technologies,
similarities and differences, their strengths and weaknesses, market
penetration, and where you see them in the two year and five year
time frame?
A: Actually, I can’t.
Other than .NET, I haven’t spent any time with competing
technologies. I think a lot of people are in the same boat.
Everything in IT has slowed down the last few years, and people are
more focused on the bottom-line right now. It used to be that
everyone had oodles of resources (and the revenue) to absorb new
technology. Now, it’s more about getting done what you can with what
you have. There are some really great new pieces of technology out
there, but if they can’t demonstrate a real positive ROI that’s
achievable in a relatively short period of time, I’m just not
interested at the moment.
Q: Any additional
predictions about specific technologies, future trends, winners and
losers; “killer apps?”
A: If I knew this, I’m
not sure I’d be sharing! Actually, I’m constantly amazed at what
become ‘killer apps’ for me. For example, I use Google’s Internet
Explorer toolbar – what an awesome little application! I love how it
places your search words on the toolbar as buttons (clicking a word
finds the next appearance of the word), and how you can click a
button to have all of your search words highlighted in the document.
It’s these types of programs that make you go ‘why didn’t I think of
that?’ I think that if you can pay attention to what you’re doing,
and start noting the areas in which you find yourself doing the same
or similar things over and over, you’ve got a candidate for a
‘killer app’. For example, how many of us used to filter through our
in-box, manually deleting SPAM every day? How many of us recognized
the need for a product? How many of us ever took the time to write
some code to solve this problem? I, for one, recognized the need for
such a piece of software but never took steps to address it (duh).
The most successful people not only recognize the need for a new
solution, they actually go to work fulfilling that need. I think
there are opportunities available every day; we just don’t often
recognize them. When we do, we often dismiss them as good ideas but
never pursue them. For what it’s worth, I think there’s a huge
market for $15 applets that improve the overall user experience.
These are the types of applications a lone developer can write and
make money on –just a thought.
Q: What are the hottest
areas in IT? Which skills and knowledge sets must businesses and IT
professionals have to remain competitive? How will these evolve over
time?
A: I’m not really sure
anything is ‘hot’ at the moment, at least not compared to how it was
4 or 5 years ago. We’re in a weird time right now, and I’m not sure
how everything will shake out. I’m in the process of trying to hire
a programmer, and I’ve been trying to separate the wheat from the
chaff – it’s hard. Certainly, having some sort of relevant
certification helps. It may not get you the big bucks it once did,
but it will help you stand out when you’re being compared to 50
other applicants or people vying for a similar promotion. As for
businesses, technology is important but not more important than what
you do with the technology. In my case, we’re using older technology
(i.e. Visual Basic 6), but our customers don’t care – they want a
robust feature set that works. As we create more web extensions,
using .NET makes a lot of sense; we try to use technology to solve
problems. If you can create a killer .NET web service that improves
your product (and therefore your bottom-line) – do it! However,
migrating all of your code to .NET web services just to stay
current with technology may not add to your bottom line, and may
side track you from other important tasks such as adding real value
to your products. I think the key to your question is ‘remain
competitive’. Sometimes that means acquiring and incorporating new
knowledge and technology, sometimes that means something as
‘mundane’ as using resources to reduce clicks in your application. I
think companies and individuals need to stay fluid, but shouldn’t
change just for change’s sake.
Q: What are your top ten
recommended references and resources for business people and IT
professionals?
A: I’m not a good one to
ask on this. I’ve been doing this for so long, I don’t frequent too
many specific spots anymore and I’ve cut back on my subscriptions.
You can probably tell from many of my answers, I’m trying not to be
so ‘in the thick of it’ if I can help it; digesting every tidbit of
technology information you can find can lead to indigestion! I
currently subscribe to Maximum PC, Computer Gaming World, and Guitar
One. When I need a technological answer, I Google.
Q: Where do you see
yourself in two, five, and ten years?
A: Older. Seriously, I
hope to continue to help our company grow. I would like to double
our development staff in the next five years. I’d love to have more
resources to accomplish some of the cool periphery things that we
can’t always get to. I’d like to spend more time researching the
application of new technologies, but I can’t do that much now
because I’m still writing a lot of code.
Q: Describe your computer
setup?
A: My personal computer
at home is a 2.4GHZ Intel proc with 1GB RAM. I use a GeForce4 ti4400
as my main video card along with a GeForce2 PCI to run a second
monitor. Both monitors are these incredible 19” Hitachi monitors I
picked up a few years ago. I have a few hard drives in there – a
60GB and a 40GB. I run an Audigy2 sound card for gaming and
listening to music, and a Delta 44 for my audio recording (I play
guitar and write music). I have a home studio, so I have LOTS of
music gear hooked up to my PC. I use a Logitech optical mouse (the
funny looking one you can’t find anymore), and I use the full-size
Microsoft Natural keyboard. My case is aluminum with a side window,
and it’s lit up by liquid neon – yes, I’m a geek! Surprisingly, my
work setup is very similar to my home setup, except for the music
peripherals and neon! I’m very particular about my gear, and I like
to use the same mouse and keyboard on both setups. I tend not to run
lots of garbage applications and I keep a pretty clean system.
Q: If you were to do it
all over again?
A: I would eat better and
exercise more!
Q: From your work and
experiences, you must have many stories to tell including humorous
ones?
A: OK, here’s one. I went
into a video store one day to rent a video. When I showed my ID to
the clerk, he said: “Are you the James Foxall that worked at
Tigerpaw?” Something about his tone made me a bit uncomfortable. I
said, rather sheepishly, “yes.” He then replied “you’re that guy
that always locked up our computers! We used your software, and
someone was always bitching about James Foxall locking up their
computer!” Remember how I said our first Windows project used
Microsoft Access? Well, the default user in the Access database was
me, “James Foxall”. Heck, I was the only guy working on the project
at the time. Access was constantly experiencing contention issues,
and you’d get an error that someone else had a lock on a record so
you couldn’t update it. The problem was, it would display the name
of the Access user, not the name of the software operator. So, the
message “Can’t update, currently locked by user James Foxall”
appeared on screens all over the country! So much so that this guy
recognized my name years after the product retired. Needless
to say, I’ve learned to NEVER code your name into ANYTHING. I was
pretty mortified by the experience; fame might be cool, but infamy
sucks!
Q: If you were doing this
interview, what two questions would you ask of someone in your
position and what would be your answers?
A:
This is tough; you’ve asked some good ones! I would ask if I have a
personal web site, which conveniently enough I do. The address is
www.jamesfoxall.com.
I
might ask if I have any recommendations on software that I really
like. A few of the little lesser-known gems that I’m fond of are
HyperSnap-DX for screen captures, AWIcons for icon design, Ad-Aware
for removing spyware, and of course, the Google toolbar!
Q: James, you have a
multitude of valuable experiences and knowledge. Thank you for
sharing with our audience.
A: Thank you – it’s been
fun to re-think some things that I now take for granted.
|