Interview with Thomas Moore: Top-Tier Developer, Consultant, Trainer, Author
Thomas Moore: Top-Tier Developer, Consultant, Trainer, Author
Interview by Stephen Ibaraki, I.S.P. http://www.cips.ca/media/biography/directorStephen.asp
Stephen Ibaraki, I.S.P., has an exclusive interview with Thomas Moore.
Thomas Moore, (MCSE, MCSA, MCDBA, MCSD, MCT, CTT+, Net+, CSE, Computer Programming Technician RPG, Data Processing Technician COBOL, Systems Analyst, Mainframe Chief Operator, Computer Science Coordinator, Tech Education/LAN Manager), has been in the computer industry for more than 25 years. Tom has a wide variety of expertise in all hardware environments and with most Microsoft Server products. His first and lasting love, besides his wife and family, however, is programming. Tom is comfortable in any programming language environment. Tom achieved his MCSD and MCDBA certifications from their inception and his MCSE since NT 3.51. Over the past 15 years Tom has been working for a variety of Microsoft partners (including 3 years as an independent trainer/consultant) and currently is a Developer / Technical Consultant for Diamond Municipal Solutions in Paris, Ontario, Canada, where he has been for the past three years.
Moore's many writing credits include:
- Designing and Implementing Databases 0-7897-3106-1 (Author)
- .NET Solutions Architecture 0-7897-2929-6 (Contributing Author)
- Microsoft Certified Systems Admin 0-7897-2766-8 (Technical Editor)
- SQL Server 2000 Database Design 0-7357-1129-1 (Lead Author)
- SQL Server 2000 Database Design 0-7897-2997-0 (Lead Author)
- SQL 7 Database Design 0-7357-0040-0 (Author)
- Visual Basic 6 Programming 0-7357-0002-8 (Contributing Author)
Tom's latest offering, "MCAD/MCSE/MCDBA 70-229 Exam Cram 2: Designing & Implementing Databases with SQL Server 2000 Enterprise Edition" is attracting considerable attention. This comprehensive reference guide also comes with the popular "Cram Sheet" tear card for your last minute cram sessions, and the accompanying CD includes a practice test engine powered by MeasureUp. Readers will also benefit from the community support at http://www.examcram2.com, which features industry news, study tips, practice exams, and discussion boards.
Tom enjoys staying up-to-date, although like most of us, finds it a challenge to keep pace with the industry.
Q: Tom, you have a long history of demonstrated excellence in many areas. Thank you for taking the time to do this interview.
A: Thank You, Stephen. True with the many projects I have on the go there isn't much extra time, but it is nice to just take a break, sit back and reflect on the past while looking to the future.
Q: Tom with your 25-year background in computing, how did you get into the field and how does one sustain such a long career?
A: I had my first feel for computers back in high school when I was in grade 12. It was an introductory computer programming course using bubble cards that you filled in with pencil. I liked programming right from the start. I was always strong in mathematics and logic and found programming to be the perfect niche in which to exercise the skills I had developed. After speaking to my guidance counselor and reviewing the many colleges and universities throughout Canada, we selected one that had a strong reputation for developing technical graduates.
I have to thank my mother for ensuring that I had strong work ethics and a solid chance at a future through being well educated. My mom raised three kids on her own and all of us finished college with good marks. By the time I was 17, I had given Mom a lot of grey hairs, but I was nonetheless in college after completing high school with top marks.
It was soon quite obvious that I had made the right choice in selection of colleges as the course and my instructors surpassed my expectations. In college I was able to excel finishing in the top 3 percent of my graduating class. Leading our Analysis Team and English Troupe were among the highlights of my studies. I also was very involved in study groups and athletics where the teams that I participated in were very successful.
I entered the industry at a very young age, graduating on the honour role and beginning my first position before my 20th birthday. I have always performed well under stress and particularly well in interviews. Within three months of my graduation, I had a foothold and was well on my way to a long career in IT.
It really isn't that difficult to sustain a long career in any industry. The challenge, more often than not, is to maintain your interest levels without burning out. You have to like what you are doing and be willing to grow and adapt as the industry changes. I am truly passionate about the work I do and throw a lot of emotion into my work and my writing. In my opinion it's really the only way to succeed without becoming used up in the process.
Q: Earlier in your career you taught computers and programming to children. What are five main principles for engaging children and creating passion for IT?
A: First I must say that children are much easier to teach than adults. Adults tend to require explanations as to "Why" they are doing a particular task. Not that the "Why" type questions aren't warranted at times, but with adults it often becomes a barrier to the learning process. Children, however, are like gigantic sponges that always want more once they find a topic of interest. I would have to say that the five principles I would select in engaging children are:
- Work with their natural curiosity. Let the potential results drive their interest forward.
- Allow the use of Imagination. There is really no limit to what can be done. I have always believed that the easiest question to answer when dealing with computers is one that starts with "Can I". The answer, in my opinion, is always YES, though the exact details of the solution may not have been discovered yet.
- Children are very resourceful. Challenge the students to discover a solution on their own before "checking the back of the book for the answers".
- Make learning fun. Enjoyment is the key to developing a relaxed learning environment. Something I live by and always ask my students whether they be children or adults: "If you are not enjoying what you are doing then why are you doing it?"
- Children and others like to have recognition for what they have accomplished. Encourage everyone to share their results, whether a success or something less than perfect. Share what you have achieved with others so that both you and other people can learn from what you have done.
Q: You have a strong background in training, including training instructors. What are the ten top attributes that make for an effective trainer? And, what are the ten keys for effective training?
A: These two sets of elements are very closely related. Let's see how good I am at matching up my personal attributes to what I think the keys to be.
- I always like to think of myself as a very personable individual who gets along well with others and can empathize with the experience of a variety of individuals.
- I like to learn. I heard once that you live longer if you stretch your mind both vertically and horizontally. If that is the case then I may just live forever as I continually drill deeper into my own field and I am constantly delving into projects that require other fields of expertise.
- I believe in the products that I use. I work daily with the technologies that I write and speak about. I am always exploring any areas that are unknown and practice with elements I use less often.
- I am a very confident speaker. I enjoy the work that I do and love to talk about it. I freely share the knowledge I have attained with others. I am always described as a passionate person by the people I work with. I love to "work the audience" talking back and forth and creating a true dialogue in any presentation.
- I am not perfect, far from it. It's true. I am not afraid of failing nor am I afraid to admit when I am wrong. I believe that you only truly fail if you never try. Every failure is simply an opportunity in disguise.
- I am very goal oriented. At every stage in my life I have set goals for myself. Once I reached any particular goal, I reward myself in some manner which I feel is an important aspect of the process. I then set the next goal. Any goal you set should be Reasonable, Exact, Appropriate, Calculable and Honest. When you REACH for a goal you will progress further and faster.
- I am a very focused individual able to use extreme levels of concentration when working. I find at times when studying or working on a project I am able to block out the rest of the world to completely absorb myself in what I am doing.
- I feel that one of the best qualities that I bring to any table is diversity. Over my lifetime I have been involved in many industries and had such a wide array of experiences that I can contribute to any organization on many levels. I am equally comfortable with doing the planning and budgeting for a project as I am with being in the trenches or doing the clean-up.
- Patience is a virtue. You have no doubt heard the expression before. The classroom seems to prepare you for having a family and vice-versa. I don't think I was always this patient but raising three children has certainly helped. Teaching young adults, barely past their teens, has provided benefits. Having been married for 17 years and working through relationship challenges have no doubt also contributed.
- As stated earlier analytics, mathematics and logical thinking are all skills I have possessed throughout my life. These are skills used daily in everything I do. As a programmer they are in essence my life's work. When faced with diversity these attributes help me through any sticky situation.
- Effective training begins with the ability to establish a rapport with your audience. You must be able to analyze the group you are working with and come at the material from an angle they will understand and be able to relate to.
- As an effective trainer you must establish yourself as an expert in the field early in the presentation. Sometimes this is simply an introduction of yourself and what you do but in a classroom where the students are more knowledgeable you will need to go deeper into your background and accomplishments.
- Know the material you are presenting and lay it out in an orderly fashion. If you feel comfortable doing so, practice in front of a mirror or present the material to your peers. Practice your examples and demonstrations so that you know them by rote.
- Being able to think on your feet is an important aspect of a successful trainer. Inevitably things will go wrong in a presentation and you will have to be able to cope with the issues and work through them with many people watching your every action.
- Be honest with the group you are presenting to. If you don't know the answer to a question, admit it. You can always respond with: "I'm not sure but I will check into it". You gain the respect of the audience and establish yourself as a human being, not some kind of hero. Always, however make sure that you DO check into it and that you get back to the individual who asked the question.
- Have a purpose for your presentation. Share your expectations with your audience. Divide any presentation into segments and establish criteria for each segment that you attain with the group you are presenting. Ensure that the subordinate goals are reached by the audience before leaving a section to move on to the next.
- When training you must keep topics on track deviating very little from the scope of what you are presenting. You will receive queries from your audience that will provide for some minor wandering off topic but you must be able to steer the material back to the original content.
- One key to a quality presentation is to have an assortment of examples and analogies. It is often helpful to draw upon your own experience even when in unrelated areas. To illustrate complex concepts you must draw comparisons to a variety of easily recognizable elements.
- In front of the classroom you must be able to express each concept in terms the student can relate. Often this will require restating information using a more elementary perspective. When questioned you may even need to express the thought in a third or fourth manner. A great deal of patience will assist in handling this diversity.
- A strong finish is needed for any delivery to be successful. You must be able to summarize, restate and clarify the entire lesson in a concise manner. Using some posing queries you must analyze the audience to ensure that they have captured the material and will be able to apply the concepts learned.
Q: What motivated you to get into writing? How does one start writing books? Which attributes make for effective writing?
A: I have always been interested in writing. I was fortunate in my high school years to have been mentored by Mr. Frame, an English professor and fabulous educator. I was able to complete two works in my final year that were published along with a collection of works from others in our Creative Writing class. One of the pieces was a lengthy sonnet and the second an original screen play.
I didn't revisit writing until I had been chosen to speak at the First Annual MCPMag TechMentor conference after becoming one of the first 100 MCSD's (Microsoft Certified Solution Developer) in Canada. My presentation was about the MCSD and the skills and requirements needed to achieve the certification. At the conference I was approached by Steve Weiss, the acquisition editor at New Riders Publishing to do some work for a Visual Basic Training Guide. After contributing to that publication I was again approached by Steve to work on a manuscript of my own, in an area I consider to be my "home turf". With that I began writing my first book dealing with SQL Server 7 Database Design.
Starting a book begins with a passion for a subject, a desire to share your thoughts with others and the time to put your thoughts together in a meaningful manner.
You begin the actual process of writing by outlining your subject material and organizing the material into chapters. From this initial outline of the book you can begin formulating the material for each chapter and delineating the points to be covered on each topic. You can then begin the process of researching the content and fleshing out the material one topic at a time.
I find that for me writing is much the same as teaching in a classroom. The biggest difference being that the material you are presenting will be consumed by one individual at a time. A lot of the same attributes of a good teacher are also the qualities that make a good writer.
To write well you have to be comfortable with the editing process and be willing to take constructive criticism. Each topic will be written and rewritten several times before it is ready to be released to the public. It is not uncommon for me to go through the material seven or eight times before producing the final copy.
Q: Choose three of your previous books then provide five unique tips or best practices from these books?
A: 1) From the "Fast Track publication: SQL Server 7 Database Design"
a) Normalization rules govern the efficient design of a database to minimize data redundancy. Denormalization is the process of purposefully adding redundancy to improve system performance and reduce associated overhead. In the implementation of any database model, a balance between normalization and denormalization is required.
b) Business rules coincide with the company's business goals. When you implement a database design, business rules and constraints help you maintain data integrity and focus the system design to meet business goals.
c) The fine-tuning of a database implementation is never completed. Adjustments (tweaking) should be made regularly. Monitor performance during use in a live environment to recognize the areas where adjustments are needed.
d) Views provide a method of controlling what the user sees (how they see it), and the operations they can perform without the need for the full administration of table level permissions.
e) The optimization of SQL Server performance is a combination of hardware, configuration and database design coupled with the appropriate knowledge to utilize the resources available to achieve the optimum results.
2) From the "Exam Cram 2 publication: .NET Solution Architectures"
a) The secret behind users of the system accepting the system is to get them involved early in the development process. Try to implement users' suggestions and above all ensure that the people using the system understand what the system is supposed to do and what it is intended not to do.
b) Training and an education plan should work along with system documentation. While documentation is being prepared, appropriate training materials should be developed.
c) Anything missed in the conceptual design becomes harder to implement further along in the project. Heaven forbid the coding be finished only to find out that major elements need redesign.
d) There are many advantages to using ORM (Object Role Modeling) in a database environment. Major entities stand out and those entities become tables. The relationships that have already been modeled become one of many constraint implementations in the physical database structure.
e) A data model is the result of developing the logical design for a proposed system and ends up being the definition around which all applications in the system must work.
3) From the "QUE Training Guide: SQL Server 2000 Database Design and Implementation"
a) The Master database is crucial to the operations of SQL Server and should be considered as important as the most mission-critical database stored on the server. If it becomes damaged the server ceases to function.
b) You seldom want SQL Server to share a machine with other applications, and certainly a SQL Server should never share a machine with a security server such as a Domain Controller.
c) Joins are the backbone of relational databases; they actually apply the "relation" into the table structure of the database system.
d) Physically, SQL Server performs operations such as joining tables and filtering data in a WHERE clause, in whatever order it decides is fastest.
e) SQL Server is all about reporting, if you think that the database you're designing is for storing data, you are looking at design from the wrong angle. A database should be designed for quick and efficient retrieval of data.
Q: From your latest book, "Designing and Implementing Databases", share with the audience, the top five tips.
A: There are so many tips throughout the book that it is difficult to select the "top" five. My writing has really matured since I began the process several years ago and I really believe that this is my best work so far and I have not nearly reached the pinnacle within me. I can easily select five tips, and though not necessarily the "top" five associated with database design, a few of my favourites are:
- You will want to enable the use of personalized menus to gain the full use of the SQL Server Books Online help facility. One facet of the help facility is the capability to mark favorites and maintain a list of topics you want to revisit. The feature is not available if the option is not set within the Windows taskbar properties.
- In almost every scenario, object ownership within a server should be limited to a single user and that single user should be dbo.
- Caution should be utilized when examining a server with the SQL Server Profiler. The toll can affect overall performance, sometimes significantly, so use it sparingly in a production environment that relies on performance. Remember to turn the profiler off as soon as you feel that the necessary information has been captured.
- In previous releases of SQL Server, you could use triggers to help enforce referential integrity constraints. This was difficult and required that you eliminate other elements, such as Foreign Key constraints. In SQL Server 2000, it is far more efficient to use cascading actions.
- Use Backup/Restore to move copies of data over long distances, particularly when there is a large amount of data to be moved. A CD/DVD can be couriered faster than electronic transmission of data over a slow WAN link.
Q: You have written countless certification exams. What are your ten lessons learned for having exam success?
A: I think I am somewhere around 60 exams. Most of them are Microsoft exams but I have also taken technology exams from other vendors. I am currently working on my Municipal Accounting Certification which really isn't related to technology at all. When asked to provide an example of one of my talents at a recent informal gathering at work, I jokingly stated that if they could dream up some questions, I would demonstrate the talent I have for taking (and passing) exams.
- The first and most important of any advice I could give would be to use the product. There are many individuals who try to shortcut their way to certification through the use of braindumps and other resources that can give the exam answers without providing the knowledge. In the end the truth always comes out. Once an exam is passed, employers and other professionals expect you to know the product and be able to successfully implement the product. You will not hold a job long if you cheated yourself in passing the exam.
- Explore the product documentation. This means that you should be frequently delving into the product's help facility and reading any white paper you can get your hands on. Every answer to every exam question is somewhere within the documentation.
- Make a point-form list of information that you find difficult to remember. Some of the exam material will be based on information that you must memorize. If you review this fact sheet right up until the minute you walk in to start your exam you can make use of your short term memory. The exam doesn't actually start until you click the exam start button on the screen. When you sit down in front of the computer, don't immediately start the exam. Begin writing down the information you had on your fact sheet so that it is easily accessible when you get to a point in the exam that covers the topics. I once spent about 45 minutes recording information for a TCP/IP exam before I actually started the exam. On my exam work papers I had prepared full subnet crib sheets, port assignments and other pertinent information. Not so coincidently it is the highest score I ever achieved on any exam.
- Get yourself a study buddy to help prepare. Quiz each other on the material you are studying. Try to stump the other person. Make a game out of it and enjoy the knowledge you are acquiring. When I first started taking certification exams back in the mid 90's there were three of us preparing simultaneously. Each time we passed each other at work we would throw out a question (or answer). This made the process of studying and taking exams far less stressful and more enjoyable.
- If you are new to a subject then it will often help to take a course from a reputable training center. There is nothing like having the information presented to you in a formal manner where your focus is solely on the topic. You are learning from someone who has already passed the exam, obtained first hand industry experience and for the duration of the course is an open book for any questions you may have.
- Get yourself a good resource manual. (Editor's note: Any of the books Tom has written are excellent choices.) Get a resource that you can easily take with you when you travel. When I study there are publications that I like to have around, you will even find books in my bathroom for when I'm having "private time". It is surprising where you can fit a few minutes of extra studying into the busiest of schedule if you have the materials with you all the time.
- Leave no stone unturned. Every software vendor has a knowledgebase full of information waiting to be read. It's all free and readily available on the internet all you have to do is go look it up. There are many third parties that also have information available that will help flesh out individual topics. A quick Google for denormalization, for example, returns more than 25,000 web sites that can provide information on applying the principles.
- During any exam gauge your time well. Try to leave enough time to review answers at the end. If a question is taking a long time to figure out it is often best to mark it for review and continue with the rest of the exam. You may even want to take your best guess at an answer, mark the question and come back to it later. In this manner no question is left unanswered if the time does run out. C is usually your friend in this case as studies have shown that the more of the answers in any given multiple choice exam will be C than any single one of the other answers.
- Be well rested and prepared. A lot of procrastination often happens when taking exams. The last minute or late cram session the night before does little to help better prepare you for the material on the exam. You are far better off having a good meal the evening before the exam and a good night's sleep. There are many foods that seem to make the mind more alert, salmon and tuna and other seafood seem to be helpful. There are foods the help the brain and foods that drain the brain. A good resource for nutritional foods I have found to be helpful in the past is on the Internet at http://www.askdrsears.com/html/4/T040400.asp#T040405. By having a good meal and being well rested you put your body and mind into the optimum condition to think and work under pressure.
- Keep your studying focused and in scope. It helps to start with an outline of the topics that the exam will cover. All of the exam vendors offer these outlines which will both make sure you cover all necessary topics while also keeping you from straying away from the actual exam material.
Q: Throughout your career, what were your top five challenges and how did you overcome them?
A: It's an odd situation but I respond very positively to challenges. There is something very alive within me that will drive me forward allowing me to succeed and overcome any problems I face.
1) The first challenge that I remember facing that caused substantial stress was when I was stepping in front of the classroom for the first time at 24 years of age. I was to be teaching computer business applications at a private community college and was the youngest person in the class.
I was fortunate that this wasn't a unique experience for me. When I was in college at age 19, I led our Systems Analysis team and completed a substantial project. Once again I was the youngest member of the team. It was my role at that time to present the bulk of the material to the graduating class.
In this and similar situations I draw upon my two secret weapons, humour and honesty. Tell them you are nervous, joke about it a bit, present your credentials and suddenly your age is forgotten and you can continue as an accepted member of the group.
2) One of the biggest challenges I have faced, and in fact still face, is balancing my professional and private lives. It is very important in this respect (in particular if you are a work-a-holic like myself) to set aside family time and try to ensure that your family stays as the highest priority above all else in your life. Sometimes this requires a little reminder from the people that are closest.
I have a lovely wife, Joy, of 17 years who always stands beside me and supports my decisions. Joy knows better than anyone that I have a tendency to say "Yes" to any request that comes my way. Joy will help me organize the schedule and always is there to support the household when I am under a deadline. I consider meeting Joy, the most singular reason for my being successful both in life and in my career. I could have chosen so many other paths to take, but with Joy's guidance and help I have become a better person.
The support doesn't stop with Joy. My eldest son Danny (14) takes on huge amounts of responsibility with very few complaints. Danny will free up his time so that Joy and I can have some personal time of our own. He will also baby-sit and care for our other two children, Maxwell (10) and Chelsea (18 mos) upon a moment's notice. Max helps out as well and doesn't mind amusing Chelsea (and keeping her away from the computers) when dad is working. I truly feel thankful on a daily basis for the family I have been blessed with.
3) It is always a challenge being in a new environment. Whether it be a new place of work or moving to a new city each new setting is like entering into an unknown world. I have found myself in this situation frequently. As a consultant I was essentially in a new city every week. In one 12 month period I had been to clients in 30 different states in the US and three Canadian provinces.
For three years as an independent trainer I was traveling around North America teaching programming, database development and operating systems integration. I enjoyed the travel aspects but it was lonely on the road, away from my young family.
As a family we have moved around a lot when Joy had just graduated from college as a nurse. I am not one to be known for good timing during these moves. We moved to Ottawa, perhaps the coldest city in Ontario, in February. From Ottawa we moved to hot, arid Texas, with no air conditioning in our car, in July. A year later we were moving to North Carolina in the wake of hurricane Bonnie. Comparatively I have had very few full time jobs in my life. Once I find a place I liked to work I seem to stay for a while.
When you find yourself in a new environment, you turn into an explorer. Even finding the local grocery store can be a challenge in a strange city. The best advice I can give is to treat it as an adventure. Enjoy the new experience. On a new job strike out to meet the people you work with. Find out what you have in common with your associates and above all else, have fun.
4) It is odd going into the classroom each week and seeing the next group of complete strangers in front of you. The people I teach come from all walks of life. Some are retraining for a new career, others are trying to move ahead in their current job, some are hobbyists and others are trying to cope with new software and technologies. You have eager pleasant students and as well as people that woke up on the wrong side of the bed (to be polite about it). Occasionally you have the pleasure of teaching a new product to exceptional students who teach you at the same time and on the flip side you have the individuals who can't seem to grasp the concepts.
You face a variety of challenges and overcome them one at a time. Although never having met most of the people I teach, I always seem to make at least one new friend by the end of the week. I try to turn the grumpy ones around and get them laughing and enjoying the environment. It's helpful to pair up individuals with very little experience with someone who is already working in the field. Turn the "smarter" students into the teachers and pair them up with someone who is having a challenge with the material.
5) At Diamond Municipal Solutions, we do a wide variety of implementations. Our programming is strongly influenced by government legislation. Every municipality has different by laws. Customizing the current environment, modifying reports implementing third party tools are all done differently from client to client. Magnetic Ink, bar coding, radio frequency utility meter readers, hand held devices and a wide array of other cutting edge technologies are used. Programming is performed in Dexterity, Transact SQL, Visual Basic and C#. Offices in Fargo ND, Edmonton AB and Paris ON are connected by Cisco routers and there are countess servers, desktops and laptops that constantly need attention.
With all of this variety it is impossible to do everything yourself. It is amazing how our Technical Support helps each other. Technical Support is part of a bigger team, Professional Services, who all operate with an amazing level of cooperation. Profession Services is a member of a larger team, The Diamond Team – all have proven to be an assortment of unique personalities. Any team that works this well together, aiming toward common goals, is truly going to find that the unit as a whole is far greater than the sum of all of the parts.
Q: Describe your current job.
A: To make a long story short and forgo merger details. I began in August 2002 with a Microsoft MBS Great Plains partner, CompuPower Systems Ltd. We were partners with Diamond Software, a VAR Utility Billing, Property Taxation and Municipal Application Software vendor. The two companies merged and became Diamond Municipal Solutions.
I am in a wonderful position where "variety is the spice of life". I am fortunate to work with some very amazing individuals. The management team is like no other I have ever seen at any company; friendly, approachable, understanding and always striving to do the best they can for their employees.
I am continually doing different things and working with state-of-the-art technologies. At the heart of my job I am an SQL / Dexterity programmer. In this position I write code (surprise, surprise). Collectively the Development and Technical Consulting teams write in SQL, Visual Basic, C#, Dexterity (Great Plains Accounting proprietary language) to build solutions that are used by municipalities with some penetration into the corporate market place. Our two main products support Property Taxation and Utility Billing but we have many other related products. (For a complete list you can visit our corporate website http://www.diamondmunicipal.com). I spend about half of my time at work doing coding.
When not writing scripts, there is a vast assortment of duties to keep me from getting bored. I am the technical go-to person when the two-man IT staff in Paris is away from the office. Between the three of us at our office and another individual at our head office, we support a Windows 2003 Domain installation that includes LOTUS, Exchange, ISA, Cisco VPN connecting three remote sites, IIS, SQL Server and a huge array of applications including Business Portal, SharePoint, and CRM just to mention a few. I help plan the yearly client conference; prepare and present material at the conference; prepare documentation and chart out the system processes (as do all the developers).
Periodically they let me out of my cubby hole and I go onsite to client locations to do implementations, training, reporting, troubleshooting, fine tuning and other duties as requested by the clients. This is a very enjoyable aspect as I get to directly interact with the people that use the products I create.
One role that I find rather curious is the amount of accounting I need to know to do the coding, reporting and other duties. This amazes me as I have always disliked accounting though I was capable of doing it having taken five years of accounting courses blended in with my schooling. Through Diamond I am currently working towards a municipal accounting designation that will fit proudly with the technology designations I currently hold.
Q: Illustrate using a case study approach, three solutions you have developed for your clients. What lessons can you pass onto other developers?
A: 1) One of the earliest solutions I had to develop was a system that would produce commission figures for a multilevel marketing system. The client was selling consumable products, mostly snacks, which would be sold by a hierarchy of individuals. Each individual has a down-level line and up-level line that had to be worked into the equations.
At the time this was quite an undertaking, the company was a small one with only a singular PC computer and no other technology. The computer was very slow (286, I think--it was a long time ago). Many of the routines needed were complex and would take hours to process.
I was doing all of the programming using an early version of dBase. After a couple of weeks of agonizing over the situation, I finally decided to rewrite some of the routines into C. I was relatively new to C at the time but found I could produce the same results in about a tenth of the time that the dBase routines would take.
I thought that I could still possibly improve the performance and changed the C compiler I was using. I switched over to Turbo C and was able to achieve the performance goals I was after. This change brought about another improvement in some of my coding routines and the final procedures would now run in minutes instead of hours.
2) I was once presented with a unique challenge that seemed rather impossible given the functionality available to me within SQL Server. SQL Server can fire alerts based on conditions in the data, but what if those alerts need to be audible. It was an opportunity to put to the test, the theory I have always had that nothing was impossible.
The challenge was to have audible alerts identify situations that occurred within the data. As it turned out I was able to derive a solution that could do far more than just perform the alert functionality. My solution reacted to changes in the data and dependant on what the change was would play one of a variety of .wav files on one of the machines selected to receive the alert. You talk about your bells and whistles, on this occasion, there truly was a lot of noise.
3) Another unique solution happened as a result of having to perform specific maintenance routines upon demand in a location where there were no technical individuals capable of handling the tasks. One of the clients I had in Raleigh needed me to be on site to perform activities on a regular basis; something that was not possible with my traveling all of the time.
The solution I derived would allow me to send an email to the server and based on the contents of the email the server would perform a predefined set of tasks. I could even send an email that contained a unique task that was not defined as one of the original routines.
B) As a developer you are never really restricted within a singular technology or software environment. The proper approach to programming should lay out a solution in a logical framework. Using diagrams and models you can plan the elements needed n the system before determining the approach to be taken in implementation.
Use an approach where you design a system without selecting the specifics. Elements of the physical design such as database platform, coding environment, programming language and infrastructure tools should wait until you have a full model of what is needed to be accomplished.
As you work through this process, brainstorm possibilities for different areas of the solution. Try not to come to any preconceived solutions about the products that will be used in the solution. As illustrated in the three solutions I have talked about earlier you can cross boundaries and use technology outside of the standard realm if it is going to accomplish the tasks you set out to perform.
Q: Amongst the many development languages, tools, resources, and frameworks, which are your favorites and for what reasons? How do you see "development" evolving into the future?
A: Funny as it may seem I still feel that the language I know the best is COBOL. I don't know if it is my favourite and I always found it rather hilarious to consider the concept of Object Oriented COBOL (oh please won't you just let it die). I would have to say that my true language favourites would be C (in all of its various flavours) and SQL. I enjoy programming in C because of its efficiency flexibility and speed of execution and SQL because of the unique techniques in which you can command data and provide logic within a singular statement structure.
Of the tools I use daily, I enjoy working with Microsoft Visio. There are so many different possibilities for diagramming a process. There are a variety of other similar tools available but I find Visio to have the toolset that best applies to the work that I do day-to-day. For most of the graphic images found in my books, believe it or not, I use Paint (free and does the trick). I also use Paint to get images into Dexterity, works like a charm.
The most frequently used resource for my development and writing would have to be the Microsoft web site (but only because SQL Server Books Online is also contained within the site). For pure breadth of material available I don't think there are many companies that can boast the amount of information that is at your finger tips through the MS site. Perhaps possibly the US government has as much information but have you every tried to find what you are looking for on a government site? And you more or less understand the material that is presented when you do find what you are looking for. Second would be the MCT Private Newsgroups. I have been involved in the MCT community for ten years now. I am always impressed by the amount of knowledge to be found within that group. I can literally pose a question and have ten individuals respond within the hour.
For frameworks and coding environments, I am really enjoying all of the new technologies about to be released by Microsoft. I have been using the Visual Studio 2005 Beta and the SQL Server 2005 Beta for a few months now and find the direction these products are taking is exciting. One of my favourite technologies within SQL Server is what is being done to support XML. SQL Server 2000 supported XML but it was very complicated and clunky. XML was too difficult to even apply in many instances. Now with an XML data type and new techniques for using XML it is much more realistic to do the coding from the server side. I also like the common language runtime environment that will allow you to code stored procedures in many languages.
Development in the future is likely to become even more modular than it is now. Individual components that can be reused in many systems has always been a winning approach. This will be stretched into areas that have only just begun to be explored. Sharing processing over multiple machines with on the fly calls to other computers on the network in a shard processing environment will definitely be part of this process.
Another thing that developers increasingly have to become part of is environment security and system security in general. As security changes occur over multiple machine systems, the programming required changes as well. What used to be solely the job of a sys admin is now technology that the developer has to be aware of to keep his programs running smoothly.
Q: Which five technology areas excite you the most and for what reasons?
Well, I think for starters I will pick a few Microsoft technologies and applications that I work with day-to-day. Microsoft is often deserving of the flack they receive over unfair competition but almost unanimously in the industry, you have to admit that they have also done more than most companies to push innovation into their products (all be it many of the innovations are rather rough at first). Another area of technology I would choose centers around security, copyright, file sharing and freedom of speech. I am also interested in large scale data operations and have been digging into multiple server configurations to store enormous amounts of data.
A: 1) Something that was "all the buzz" around my workplace within the last couple of years is the changing of the Microsoft Business Solutions products from a set of accounting solutions into a singular solution. Microsoft has traditionally marketed four tools (Great Plains, Solomon, Axapta and Navision) in this area and for several years they have been talking about combining all of the technologies into a singular tool. At the same time they have also released a fifth tool (Magellan) aimed at smaller accounting implementations. It seems rather confusing as to which direction MS is moving in, but it would appear that we are not likely to see a singular product for a few years.
Product improvements within the Great Plains environment will no doubt come fast and furious leading up to an amalgamation of software. A move away from the slow and inefficient Dexterity model and into the .NET model has already begun. It will be very interesting to see the version 9 product coming out in the December/January timeframe.
2) SQL Server 2005 has some real cool features for developers and is equally exciting from the database administrator's perspective. Administrators have been waiting a long time for database mirroring which will now come true in the new product. Equally exciting from an admin's perspective is failover clustering and the new security implementation
From the developer's point of view, .NET Framework and the Common Language Runtime integrations allow developers to exercise a wider variety of options in coding database systems. As I mentioned earlier the XML model has come a long way from the mess it was in SQL Server 2000. A redefined services model for notifications and reporting add to the wealth of new features built in to this new engine.
3) Software copyrights, security and encryption are truly interesting areas of technology that directly affect my livelihood. I have grown to dislike CD keys as they seem to serve little or no use at all. Just about everyone I know has accessed music online or gained a copy of a book or software through less than legal avenues. Digital signatures, file encoding and other new mechanisms are popping up all the time. Every time you see something like this popup about a month or two later someone else comes out with the crack.
The oddest part of this commonplace practice is that you see musicians downloading material from other musicians, programmers trying to get free software that others have developed and writers accessing the written works of others. Most individuals don't seem to stop and think about the practices they are supporting and in fact they are really shooting themselves in the foot.
It is a constant battle for authors, musicians, software vendors and artists to actual acquire the compensation that they deserve. Legislation in most countries are trying to help but it is much too little too late. I feel there is a need for different business models that would help acquire some of the missing revenues, but there will always be someone trying to get something for nothing.
Most users of the Internet have begun some form of file sharing. Peer-to-peer networking is responsible for a large increase in bandwidth use. Currently I am unsure of the solution but I am continually researching the new laws and technologies affecting copyrights.
4) Mainframes and minicomputers used to be the only solution to support any large scale data storage. With today's technology there are amazing things that you can accomplish at a fraction of the budget that will support large scale operations. VLDB (Very Large Database) technologies include those traditionally supported platforms as well as a few new "kids on the block". Still the big three database platform players in this category remain Oracle, Microsoft and IBM.
The hardware available these days far outperforms what was available only a few short years ago. Processing methodologies have also improved so that this topic isn't just about the database engine but it really involves four main components; the database engine and design of the database itself; the hardware supporting the database engine and data; the infrastructure surrounding the system and the application design that will interact with the system.
This topic covers the complete gamut of data technologies. XML, Stream-based Processing, Data Mining, Web Services, Database Design, Advancements in Hardware and many others. A data aficionado like myself is always enthusiastic by bigger, better, faster systems.
5) For my last selection I will take a little bit of a different approach. After all technology is a broad topic and it most certainly isn't all just for work. I enjoy working with graphics. I have an obsession for music of almost any origin. I am always rewiring my house to get music into every room and allow computers to be connected together. I would like at some point to have my whole house automated through computer systems. Joy will never let me get away with it but it's a nice dream. I minimally will unify all of the entertainment equipment so that entertaining can take on a more multi-media flavour.
A little bit of networking, some advanced equipment. Throw in some of the latest pieces of technology and every level of the house and the outdoors too will be at my disposal. Wireless has come a long way in the last few years so as I move toward the automated house, Joy will at least be pleased that I can do so without wires running through all of the duct work.
Q: Here is where we turn it around. Pick five topic areas of your choosing and provide commentary.
A: Area 1:
Microsoft will soon be changing all of their certifications. I have mixed feelings about this but I suppose overall I am in favour of the move. The MCSD and MCDBA certifications are at the end of their cycle. When support for the current development and SQL Server platforms cease to exist so will these two certifications. With the release of Visual Studio 2005 and SQL Server 2005 comes a new set of certifications. The MCSE will also fade away with the release of the next generation of Microsoft server operating systems, Windows Vista (code named Longhorn) in late 2006.
The first news of the changes came in the form of the announcement of the Microsoft Architect certification. Of the set of the new certifications this is the one that least excites me. The Architect program, in my humble opinion, will be an elitist club of people close to Microsoft. I don't see the average person who has the qualifications even being the slightest interested in it. (I certainly am qualified but have no interest). The way I understand it from a break out session at Tech-Ed conference, the certification people listed some of the criteria for MCA candidates:
- 8 to 10 to 15 years experience in the field (depending on who you ask).
- Experience with an infrastructure solution in the $50,000 to $500,000 range that lasted 9 months to a year.
- A detailed knowledge about a wide variety of technologies not just in the Microsoft arena.
- At least initially, candidates will be admitted to the program only by referral from an existing MCA or in rare cases by filling out form on a website.
- Here is the kicker, 4-5 figure cost. Minimum $9,000 to get into the program with no guarantee you will actually pass through the board review.
Information about the other certifications has been sketchy at best but there will be a lot of information in the news soon. I can't help but think that Microsoft is still working through the details as they have been very guarded about the amount of information being released.
Haven't you had just about enough of viruses. Some companies are seriously trying to eliminate the presence of these annoyances, while others seem to be just going through the motions. On one hand Microsoft offers up a large reward to apprehend the Sasser author. Microsoft established a 5 million dollar fund to apprehend the creators of viruses that attack computer systems. A $250,000 award was given to the informant that led authorities to the arrest of the individual. On the other hand, here is a young, mischievous adult who cost companies an incredible amount of money and the only punishment was to complete 30 hours of community work and a suspended sentence.
How are we to ever nip this type of activity in the bud if there is essentially no punishment for the crime? You might argue that the young man did not have a criminal record, or that "he will never do it again". But this was not a penny ante theft of a chocolate bar while the clerk wasn't looking. This act was a carefully planned and executed attack that was put together to inflict the most damage possible.
I would like to minimally see the individuals brought to justice and made to pay for the crime. Jail time isn't necessarily going to help but put the fellow to work paying back the millions in damages caused and you might get somewhere. Surely someone who can create such a destructive masterpiece can create something beneficial.
Closely related to viruses (and in my opinion there is almost no difference) is the presence of adware and pop-ups everywhere on the Internet. Again you have companies who are trying to do something about it but you also have conflict of interest defeating the purpose of the programs being marketed as removal tools.
I hate to focus so much on Microsoft but for a company that is trying to clean up their image they seem to have faltered somewhat on this plain. Arguably one of the biggest offenders when it comes to redirecting traffic and populating your computer with worthless adware software is Claria, formerly Gator. If you run any reputable product against a computer infected with this garbage you will see several objects recognized and removed. For some unknown reason, Microsoft has deemed these products to be alright and not malicious. Maybe it is because Microsoft is thinking of buying the company. If you do buy it Microsoft, fire all of the management and burn all of the code!
In this day and age we are all able to communicate better. Think of all of the avenues you have available to you. Write a letter, use the phone, email, Instant Messaging, chat rooms, newsgroups, and the list goes on. I never associated much with my older sister, in fact like most siblings we fought daily. Now thanks to IM software I can talk to her everyday. I am actively involved in many technical newsgroups and it is quite enjoyable having conversations with individuals around the world.
Through the miracles of modern communication I have been able to make countless new friends and keep in touch with family and friends all the time. Sometimes, however I lose sight of the pleasures of face-to-face dialogue. Do yourself and others around you a favour, turn off the computers and TV's for one night a week. Socialize with your family, visit friends and enjoy Mother Nature. I sometimes find that the more tools at our disposal the less quality communication actually occurs.
As I have stated in the interview, I am a big music fan. I must say I am pleased to see what musicians are trying to accomplish with the charity events they have sponsored over the years. The recent Live 8 concerts took some flack in the media but the individuals making the criticisms seemed to be missing the point.
Shouldn't everyone in the world have food on their table and a roof over their heads? Can't we share some of our wealth to make someone's life a little better? These ideals are potentially reachable but it has to come from the top. It always makes me feel a little better about mankind when we do something to help others. I would urge everyone to share a little of the extra they have to the charity of your choice. Live 8, the Tsunami relief, Red Cross; there are so many beneficial projects. If money is a little tight, remember that your time and talents are as valuable a donation.
Q: This is a staple in our interviews. If you were doing the interview, which three questions would you ask; also what would be your answers?
Q1: Are there any particular individuals who inspired you in your life and career? Who were they?
A1: There are many individuals I could list off. In almost every acknowledgement I have ever written, I first think of my mother. Barbara Rose Moore, truly my hero. Mom faced an enormous amount of diversity in her lifetime and always bounced back and faced her challenges head on. Mom was a sensitive individual who could always be found smiling, with energy that could warm up the entire room. My father died when I was two and my younger brother was still in diapers. I also have an older sister who was four at the time. My mother supported the three of us by herself and ensured we had every opportunity to succeed in life. Mom finally succumbed to Scleroderma after an eight year battle and died at a rather young age.
Another person that immediately comes to mind is Ken Rumble a fellow Canadian IT professional who now lives in Pennsylvania. Ken was responsible for me getting started in the certification realm. He also provided me with the lead that inevitably found me a speaking engagement at the aforementioned TechMentor conference in San Diego. Ken, whether at the office or at home could always be found working, studying or both. He constantly strives to bring innovations into the classroom and is always a good friend and supporter.
Q2: If you had not chosen to enter into Computer Programming as a career, what would you be doing now?
A2: As far back as I can remember as a child I wanted to be an airline pilot. The thought of soaring around the sky with the birds is something that tweaked my imagination at a young age. I suppose that is why to this day I like to travel and in particular enjoy flying. The aspects that many people don't like about flying are the ones I find most enjoyable (turbulence, takeoffs, rough landings etc).
After high school I had applied to a college to become a pilot. The college had 10 times the number of applicants as they had spots open and I was unable to get through the entry process. It was at that time that I accepted my second selection, computer science.
Q3: Has terrorism had any impact within the business areas you deal in?
A3: I would like to be able to say that terrorism has had no effect at all. We cannot let ourselves be intimidated by these crazed individuals whose only purpose seems to be scaring people to the extent that they are afraid to go anywhere. My heart goes out to all those affected by these mindless acts. I am a naturally caring person who hates to see the senseless loss of life that we have all witnessed in the past few years.
In fact, terrorism seems to be having an impact. You can't go to any airport these days without recognizing a significant difference in the practices now being used. Prior to 9-11 it was unheard of to shut a whole airport down because of a minor security incident, but nowadays it is almost a daily occurrence. Price of gas keeps going up affecting travel costs and increasing the overhead for all companies.
The best thing that any of us can do is to continue to live our lives as we always have. You shouldn't be forced or otherwise coerced into make any changes to the way you live.
May you be inspired.
Defend freedom and don't hide.
Stand tall and confident.
Say a prayer for those who've died.
Q: Tom, thank you for sharing your years of experience with our audience.
A: You are quite welcome. The next year holds a lot of new and exciting avenues for me and my family. We are looking ahead to a lot of new technology and I have already started working on a couple of books, the first of which will likely be out in the fall.
I have enjoyed this time looking into my past and the technological crystal ball. We will see first hand over the next year what actually does occur.