The College of Central Florida Simulation & Automation Program is holding an Open House on Thursday, February 19, 2015 from 10 a.m. to 2 p.m. in the Klein Center at 3001 S.W. College Road in Ocala. See the poster below and call (352)873-5855 or e-mail XCEL-IT@cf.edu for more information.
When writing programs, it’s often necessary to perform repeating operations on collections of items such as customer orders or invoices. Often, you can just iterate through the collection or count the items to determine how many times to perform the operation. When working with a hierarchy of items such as a directory structure where you have an unknown and varying number of levels under each branch, it’s a different story. For this, the typical method is to use recursive programming, often just called recursion. This is a method in which one routine is designed to analyze the items on one level of the hierarchy, look for any sublevels and then call itself to analyze each sublevel. Each time the routine calls itself, it creates another instance of itself that works independently until it’s finished and then returns to the instance that called it.
(Originally published on AndrewComeau.com. Republished here by popular demand.)
Moving Beyond Microsoft Access
I’ve written a lot about Microsoft Access over the years and still believe it’s a great training ground for people who want to learn to design database applications. Its user-friendly interface provides an easy learning curve and introduction to the basics of relational databases, data entry forms and report design. It’s only the beginning, however, and if you want to get serious about programming, it’s important to expand your skillset with tools that are in demand by potential employers and customers.
One of these tools is Microsoft Visual Studio, the development suite that provides access to the .NET family of languages including C# and VB.NET. With Visual Studio, you can create a variety of professional applications from Windows executables to websites powered by ASP.NET programming. While Microsoft Access provides some impressive tools for the office power user and even some full-time programmers, Visual Studio is the next step up the development ladder. It enables professional programmers to design any type of solution without being tied to a Microsoft Office installation and without the limitations of the Windows desktop. A couple quick searches of sites like CareerBuilder.com will show you the kind of jobs and salaries that knowledge of Visual Studio can lead to as opposed to Microsoft Access.
In the last chapter, I talked about some of the current options when it comes to getting started in the programming field. I mentioned several development tools that you can get familiar with to decide what path you want to take as a software developer but getting started is only half the battle. As I said, the field is constantly changing and with so much evolving technology, it can be hard to keep up even if you’re working with it every day. When planning a career, there’s also a desire to have some idea of what things will look like five years down the road and where you should be in relation to them. That’s harder to do in the I.T. world but there are some things that you can plan on and overall strategies that you can use to develop a solid foundation of knowledge.
So far, I’ve given you some general ideas of what it takes to start and maintain a career in software development but you’re probably still wanting some direction as to the actual first steps of learning how to program. In this chapter, I’ll give you a sampling of the options available. Pay close attention to the links sprinkled throughout for additional information.
There are a lot of options out there because there are a lot of different computer languages and types of devices to program. The type of device for which you’re creating an application and the operating system it uses is sometimes called the platform. For example, if you’re programming Windows applications for the PC, then you’d be writing for the Windows platform. The Android OS that powers smartphones and tablets would be a separate platform and would require different programming tools. Some people might get confused by the term platform so it’s easiest just to say “I write Windows programs.” or “I create websites.”. You’ll find that one of the challenges of a programming career is communicating ideas to non-programmers.
You’ve probably heard people talk about how we’re living in the Information Age with an emphasis on how much information there is to process from all different directions. This is certainly true and it can be a challenge for the average person, especially if they were born even a few decades ago before there was a personal computer in almost every home and when most people were happy with a few local channels on their TV.
The flip side of living in the information cloud is that it’s never been easier for you to find information and learn virtually any subject. Universities no longer have a monopoly on education and people are no longer dependent on their local library, bookstore or media outlets for materials. Conversely, I never imagined when I was growing up in a small town in the 1970s that, one day, I could be a published author without going through the trials of manuscript submissions, editorial reviews and multiple rejections … but here we are.
Ask a lot of people about the requirements to be a computer programmer or software developer and they’ll probably start talking about computer science degrees and years of formal training. Those things don’t hurt but they’re not strictly necessary, either. I personally do not have a degree aside from the accounting diploma I earned from a local college many years ago. I am certified by Microsoft in Windows application development, a certification I earned through self-directed and cooperative study with a few co-workers. Most of what I know about programming is through self-teaching and experience. Nevertheless, with my current experience, all I have to do is post my resume and send copies to a couple of recruiters and my phone starts ringing. It’s about the demonstrated skills, not the paper.
So, I was glancing at Reddit first thing this morning and saw the following question …
I’m exploring the possibility of being a programmer, wondering what there is to it, and why you enjoy your job.
A very articulate high-school student was thinking about career choices and wanted to know what being a computer programmer was about and if he should explore it. Always wanting to encourage potential programmers, I offered my answer …
In my upcoming book, Your First Guide to Database Design, my goal is to provide a clear guide for users at all levels of experience on how to organize their data into an efficient database, regardless of whether they’re using a desktop database like Microsoft Access or a network software such as MySQL.
The first chapter starts out with the basic definition of a database and the various ways in which information is stored and transferred in modern systems. The rest of the book takes the user through clear, logical steps of modeling the data and creating a new database that can be used for analysis and reporting.
One of the perks of writing a book, and especially of being a self-published author, is that you can occasionally speak out on things that are important to you. An example of this can be found in the chapter on designing a user interface for your database application …
“Software users don’t like surprises as much as some designers seem to think and what looks cool and innovative to you as the designer can confuse and annoy the user. Many people have experienced this annoyance first-hand in the last few years as a certain leading software company has repeatedly reorganized the look and feel of its software products, leaving many users with the burden of having to re-learn how to do the same things they’ve always done.
“In my experience, many everyday computer users know enough to get their jobs done and that’s as much as they want to know. These people find more delight in getting their work done so they can go home to their families or out for the evening than they do in the latest tech trends. They’re far more interested in their own hobbies and diversions than they are in the ways in which a software company has found to make its products look more exciting in order to stay relevant in the marketplace. They find no joy whatsoever in playing hide-and-seek with the software functions they need. Some of them, like me, are getting to a point where the ever-escalating pace of change isn’t quite as thrilling as it used to be and familiar things are a lot more comforting. Maybe they have certain disabilities that make radical changes harder to cope with.
“What all this means to you as a designer is that your first priority, after making sure that the program doesn’t crash on start-up, is to design an interface that your users can be comfortable using everyday. It doesn’t matter if you are a lone developer creating database applications for your office to use, a corporate programmer designing enterprise software for the entire company or a software engineer designing the next software sensation; your users are your customers. Without them, your work is an intellectual exercise at best. If you deliver a product to them that causes confusion and pain, they will eventually find a way to go elsewhere.
“Does this mean that every program should look the same and that no new designs should ever be tried? Absolutely not! In over 20 years of working with computer technology, I’ve seen incredible changes in the way people interact with software. The keys to the successful changes are that they are incremental, they are useful and they are somehow already familiar to the user, whether they evolve from current designs or resemble something else in the user’s life. The concept of a desktop with folders and documents wasn’t hard for the average user to grasp. Users love relatively simple menus with clear options that they can navigate through the same way they navigate streets and building corridors. They don’t love lots of keyboard shortcuts they have to memorize or ‘helpful’ features that intrude when they’re trying to do something else. Touch screens that enable a user to move between pages or programs with a swipe of a finger or enlarge a picture by using two fingers to stretch it are fun and intuitive meaning that the steps make sense to the user because they’re likely what the user would have tried anyway.”
Writing a book, or at least doing it properly, is a fair amount of work and I’ve been working on this one for a a few months now. My goal is to have it published as an ebook by the first week of October. Check out the book’s official page for continuing updates.