Helping people with computers... one answer at a time.

Programming relies on both skills and talents you have and information and techniques you can learn. If you have one, then the rest often comes naturally.

Although I have been in the IT industry for 6 years, I have never touched programming in my life. The reason is that I always thought I'd end up in the network administration, in fact, the AS degree I was pursuing had an emphasis of network administration. I've started my major preparation and I am currently taking my math requirements, which I enjoy but leads me to my first question.

How much math is used in programming and how? So far, I've managed A's in my mid level classes and have managed a 3.88 GPA so far in 60+ units of college, but it only gets harder from here. I will be taking Calculus, Physics and three entry level computer science classes in the next semesters before I can transfer to a 4 year University.

My other question is, how hard is it to learn programming? Is is something where either you get it or you don't? Can someone with my lack of experience in programming just learn it in school?

Lastly, when you get hired as an entry level programmer/software engineer, what is your job like? Any suggestions are welcomed.

OK, one more :-) should I learn a language before transferring and which one?

Lots of questions, but lots of good questions that I do get asked fairly regularly. In fact I'm guessing software engineers at successful companies like Microsoft and Google probably get asked something of this flavor quite often.

It's a difficult question to answer because there are several components to being a successful programmer. One is "what you know" - that's the stuff you can learn.

The other is "how you think". That's more difficult.

Regardless of the language used, computer programs are written in a fairly strict, methodical, logical way. Computers do exactly what programmers tell them to; nothing more, nothing less. Even unexpected behaviors or bugs are simply a manifestation of the computer doing what it was told to do rather than what the programmer intended for it to do - meaning the programmer's instructions to the computer did not match his or her true intent, often in some obscure detail.

If there were an innate personality trait I would want any aspiring programmer to have it's simply the ability to think logically. By logically I mean the ability to combine various related pieces of information and deduce what must result. If A is true, and B is true, then we know that C must be false... that kind of thinking, though not necessarily expressed exactly that way. The ability to think and express a series of steps that produce a desired result.

"If there were an innate personality trait I would want any aspiring programmer to have it's simply the ability to think logically."

I personally don't think that the ability to truly think in a logical way can be taught, at least not completely or not at the level that really makes a successful programmer. Yes, there are classes and you'll want to take them to further hone your abilities, but if those classes are a real struggle then I'd start to get concerned.

"How hard is it to learn programming?" is really an unanswerable question. Beyond your innate ability to think, it varies dramatically from person to person based on the skills and talents they bring to the table and based on their own tastes and desires.

It was easy for me. I was fortunate and "got it" in my very first programming class (ENGR 141, Introduction to Fortran Programming at the University of Washington in my freshman year). Even though I'd never touched a computer before, I found myself assisting others in the class as we went along.

Obviously that's a great sign, but is that kind of affinity to programming required? I don't think so.

What's perhaps just as important as you ability is your enjoyment. As you learn how to do more and more, do you find yourself enjoying yourself when you write software? Do you like solving hard problems? Do you like beating your head against the wall when the computer does exactly what you tell it to do, but that wasn't what you intended at all? Smile OK, that last one it a little facetious, but a frequent reality even for the best of programmers.

My light bulb moment was the realization that there were people who would pay me to do this programming thing - something that I really, really enjoyed.

"Can someone with my lack of experience in programming just learn it in school?"

Yes and no.

It's my strong belief that you cannot learn programming just in school. School's great, it's often a requirement, and obviously some schools are better than others.

But there really is no substitute for experience.

Which begs the old "chicken and egg" question: how does one get experience if one needs experience to get a job?

"... you simply need to get experience as you learn."

I have two answers for you:

  • Utilize what your school does provide. The two most valuable classes I ever took were not programming classes, per se. They were "special projects" types of classes. You pick a programming project and you do it, typically in teams. This was as close to real-world programming as you could get in the school environment, and it was incredibly valuable. Internship programs through your school with "real" companies are also an opportunity that you should take if it's in any way possible.

  • Make your own experience. Program anyway. Make up projects for fun. Program in your spare time. Use any excuse. Help out a local non-profit, a friend, or make up something useful for yourself. Just do it. You'll learn more by doing real projects, even on your own, than you ever will from a book.

So the answer is really "Yes", you don't need experience to learn programming. You simply need to get experience as you learn.

"How much math is used in programming and how?" is a little easier.

Remember all that logic I mentioned at the beginning of this article? That's really just math. In fact, it's what I'd call pure math. From the computer's perspective all logic - everything it does, really - is simply the manipulation of numbers. Computers are really good at manipulating numbers.

Now, that having been said, I wouldn't call it advanced math. Computers are, after all, really, really stupid. All they really know is zero and one, and everything else builds on that. Programming fundamentally relies on basic algebra and logic more than any other form of mathematics.

Where things get dicey is what you end up doing with your programming. For example if you're writing advanced 3-D modeling software, then you're darned right you need advanced math skills, and lots of them. Writing software to analyze large sets of data? Statistical math is its own special area of discipline. Writing software to support the movements of an avatar in a virtual world? Then you probably need to understand the mathematics behind physics.

You get the idea. It's one thing to say that programming requires a high degree of comfort with fundamental math like logic and algebra, and another to say that your eventual programming job might also require advanced math specific to whatever that job is.

"When you get hired as an entry level programmer/software engineer, what is your job like?" There are as many answers to this as there are companies you could get a job at. And to be totally honest, it'll depend on what the company sees in you; what they think it is that you bring to the table.

When I started at Microsoft it was a case of "here are some bugs that need to get fixed to get you familiar with the code, jump in!" Welcome to the deep end of the pool. That's not an uncommon approach even today. (My first day there also included my first exposure to email, my first exposure to Unix and my first exposure to MS-DOS. My head was swimming at the end of the day.)

Again depending on what skills you bring to the table, it's also not uncommon for individuals to start in customer support or testing roles as well before moving on to product development. In a way that's unfortunate, because it gives those roles an unwarranted "2nd tier" status and the skill sets are often quite different. A good programmer doesn't always make a good product tester. Similarly the ability to explain a complex procedure to answer a real person's question is very different than designing a complex procedure to be acted on by a computer.

Personally, I think that "what's an entry level job like" is a great question to ask as you're interviewing with or talking to people who work at various companies.

"Should I learn a language before transferring and which one?" First, I'm going to assume you mean programming language. Smile

I can't answer the "before transferring" part because it really depends on the curriculum of your school. It should be clear, though, as you look at class pre-requisites what's expected and what will be expected of you in that program.

That actually leads me to the first of three answers on which programming language to choose:

The one the school uses. Like I said, check those pre-requisites for the classes you expect to take. Most schools and courses tend to favor one language, and that's the one you should probably start with. When I started it was Fortran for the engineering students and Pascal for the budding Computer Science department. Now it's often C++ or Java, but I'm sure even that's changing over time as more emphasis is being placed on web-based programming.

The one your potential employer uses. This is a little tougher to get right from day one, but find out what your ideal employer is using and consider adding that language to your repertoire. For example, if you're targeting Microsoft then learn C++. It's not critical, but it could help.

It doesn't matter, pick one. This is my true stance on programming languages: it doesn't matter which one you know, as long as you know how to program and program well in that language. My position when hiring at Microsoft was always exactly that. Many students came in knowing Java, and we didn't program in Java. No problem. If you're good, - really good - then C++ or whatever else might be out there is "just another language". The syntax of that language is just another set of details and knowledge that you can pick up.

"It's all about how you think."

Which really brings me full circle. If a specific programming language is just a "detail" that I'd expect a good programmer to be able to pick up as needed, what is it that makes them a programmer in the first place?

It's all about how you think. School might be teaching you a programming language, but what's really coming along with all that syntax and detail is discovering, exploring, and exercising your ability to take abstract concepts and procedures and translate that into methodical, logical steps for a computer to act on.

And, fundamentally, that's what programming really is.

Article C3189 - October 22, 2007 « »

Leo Leo A. Notenboom has been playing with computers since he was required to take a programming class in 1976. An 18 year career as a programmer at Microsoft soon followed. After "retiring" in 2001, Leo started Ask Leo! in 2003 as a place for answers to common computer and technical questions. More about Leo.

Not what you needed?

Ken B
October 22, 2007 2:46 PM

You waited until college to start programming? :-)

I think that one of the best ways to learn programming is "just do it". Pick up a book on the language (asking a Usenet group for the particular language, such as comp.lang.c, for a good "intro to programming" book for that language will help narrow the field), sit down at a keyboard, and follow along by doing the exercises.

I started that way with a book called "Basic BASIC" back around 1971 or '72 at the tender age of 10, and I never looked back. (The book is actually still available on places like Amazon. ASIN B000UG34YI.)

Hector Torres
October 22, 2007 3:02 PM

Thanks Leo for answering my question! I will move forward with my current goal of earning a BS in Computer Science. After reading all you had to say, I think I'd enjoy programming. I think I am a very "logical" person, which is one of the reason I actuallly ENJOY math and have had success in it. Thanks for your time!

Gord Campbell
October 26, 2007 6:38 PM

I got a B. Sc. in math in the early '60s. The most useful course I took was a half-course on logic offered by the philosophy department! The course covered three words: "and," "or" and "not."

I learned programming on-the-job at IBM, and the logic was always the easiest part.

Patricia Van Dusseldorp
October 29, 2007 8:53 AM

Experience - that's the BIG score for anyone moving into a computerized technology today because it changes daily! There's 1 year's experience 40 times and there's 40 years of constant learning experiences. Having been in Telecommunications for 40 years, through times spent at the 'cord-board' as an 'operator or central' before there was such a thing as 'direct dial' much less cell phones, up through being on the bleeding edge of 'broadband' to the masses wired and wireless has been a wild ride but experience I've always learned from and continue to learn on a daily basis. It's that constant questioning that keeps your mind and your job satisfaction sharp, fun, and rewarding. Am I a programmer? Not exactly, but I sure do know how to make advanced telecommunications devices perform at their peak. All those devices are just big, medium, small and micro-computers, and dumber than anyone can imagine.

October 29, 2007 8:53 AM

Before you commit yourself to a programming career, research the market in your area and find out what skills are in demand and, more importantly, how much they pay. Programming has recently become a much more globalised industry, with lots of major western firms outsourcing their programming work to India, Singapore, Taiwan, Korea and China, all countries that are turning out large numbers of highly technically literate programmers who are prepared to work for significantly lower wages than Western graduates would find acceptable. As Ken B says, a class can teach you the basics but you will have to be prepared to spend many hundreds, even thousands, of hours sat at your computer with textbook and programming exercises before you achieve a marketable level of competance. If you are looking for any reward other than the satisfaction of the job itself, you might consider looking elsewhere.

January 28, 2008 10:32 AM

pls mr. leo i want to be a computer programming specifically on oracle and java, so how do i starte? i would be grateful if you assist me, thanks.

May 31, 2008 10:41 AM

I dont really leave comments unless my heart's touched by the contents. Leo , you are one of the best advice giver there ever existed . Keep up the great work :)

March 2, 2009 4:12 PM

Im in High School now (sophmore) and i already took Visual Basic (its pretty simple) and i am currently in C++ (its not that hard) (as of math i have only taken algebra 1-2 and Geometry) People are telling me to learn Java and C++ so i will be trying to learn Java here soon!

May 16, 2009 11:35 PM

hey leo, this helped me alot! i was having a tough time between choosing to switch to programming or stick with my current course(computer engineering) but this showed me which path to take.

Pete Pete
February 13, 2010 8:03 AM

Your quote "is it something you really love to do?" is the a great advice.

March 27, 2010 6:00 AM

Its very easy to learn Programming. I have found an excellent blog which teaches you C Programming start from the basics.

May 14, 2010 4:30 AM

This is my first time that I came to your site and I must say that I am pleasant surprised. Great, I mean really great article Leo. I am in programming for almost 11 years and everything what you have said here is absolutely true. And Yes, logic is the most important thing here. Even if you have problems with logical thinking in beginning of programming it can be developed through bloody practice. To conclude, no broken mouses and keyboards, lack of hitting your head into the wall, throwing chairs and that kind of stuff, no real programmer. "If you can take the pain, don't play the game."

August 30, 2010 3:07 PM

C# is the future honestly!

I'm one of those people who embraces MS and change, I can't stand imperfection.

Most complaints regarding language hurdles revolve around the languages themselves. Either we ourselves are so technically inapt or there is a slight possibility that something so highly regarded and written by man is in fact not as perfect as it should be. There is some logic to that logic wouldn't you agree?

Finally what are computers? Just ones and zeros, we seem to play favoritism on languages and their structures yet forget the most basic fundamental thing of all. All languages are imperfect until we see the next evolution in computer technology. There won't be much in the way of difference from one language to the next, its more a question of perception and skill. Assembly is the real deal if you have the drive and the next 60 years to shave off.

Jim de Graff
October 26, 2010 11:22 AM

For a first language I would strongly recommend Python. The language allows you to try as you go (interactive shell). There are many tutorials available online and there is a large user community available to answer questions. I have over 30 years experience with FORTRAN, C, C++, APL, PL/1, Visual Basic and Java as well as many flavours of assembler. If asked to teach a beginner's programming class I would definitely choose Python. It is also free and supported on the three big platforms.

Lutz Pansegrau
October 26, 2010 12:21 PM

Thanks to Leo and to all those who commended on this topic. I'm not a programmer, I am an engineer from the hardware development side, retired now for 15 years. We developed those systems which needed to be programmed bit-wise, entering zero's and one's via switches, pushing buttons either to enter a command word or a data word. That way we, on one side had the means of testing our constructs, otherwise providing programming structures/ideas for programmers.

I was one of the lucky who started almost from the very beginning, learning by doing, getting the logic behind it.

As the computer performance increased a need for a new programming style became neccessary, the Assembler language was invented with which feeding the machine with progamming code became easier and with it a new kind of logic thinking.

Still the language was too machine oriented. Programmer were looking for an even easier way to built a progam. A human like language, Basic, was the next step and afterwards so many other different solutions.

Problem now-a-days is that eveybody who intends to be a programmer is sitting on top of a huge amount of knowledge accumulated in the years and actually don't know from where to start off. We are condemmed to inherit a lot of knowledge via our school and studying years yet, we hardly being forced to learn and exercise how to think in a logical manner. Most of our logic thinking is derived from trial and error.

And so is programming.

Problem is, these new languages are still often far from being understandable, the Syntax is for a newcomer like a language from an other world. Now put that all into a logial concept and make it work. Trial and (a lot of) error.

I have an example here at home, the student comes from a rural school, studying at the University of Cape Town, only with accumulated knowledge in his brain, is forced to learn the "Python" programming language, a concept which is supposed to be an easy one to learn. Result - almost impossible - neither the lecturer nor me were even close to plant an understanding of the logical concept.

As some of you are proposing: put the guy into cold water and let him swim. He probably will loose all of its fun and throw the towel.

Since I'm from the hardware side and know the interaction of the main parts of a computer I'm of the opinion: everybody who likes to start off with programming should learn - either by himself or at a school - the basic understanding of the way a computer works, how the components are being utilized and a proper, easy to understand language, which would be "Basic". This would be a straight forward apporach how to logically think for the purpose of programming. Once one understand how that "new world" works can dive into the realm of programming in higher languages and be probably happy for the rest of his life.

October 26, 2010 2:10 PM

My first experience was as an amateur on a Commodore PET. I began by studying machine language. Pretty soon I had print-dumped the whole OS in assembler, and worked my way through it, and although I got stuck at a few points hardware-related, I KNEW that machine and how BASIC worked! I then did the same on a Z80 m/c, sat back and glowed with self-satisfaction. When I worked with COBOL, I felt "it's just the same, only more lines of code".
Then along came Windows.
Still, I feel that if you can get down to seeing the one-bit difference between JMPleft and JMPright (joking!) in terms of a bagatelle board (does anyone else remember those from the carnival?), then the magic is reduced to simple complexity - if you see what I mean!

Pete B
October 26, 2010 2:33 PM

There's some very good advice posted. I am a maths graduate who started as a programmer, and am now a project manager. All of this has been in business (application systems), and I can say that I haven't used any of my maths for any of it. (This may not be true for other areas of programming, like writing operating systems.)

there are some generic skills required
- logical thinking
- being able to get along with other people
- being able to organise your work.

On a technical front, I would advise covering an Object Oriented language (/ approach) at college - there are some doubts whether non OO based programmers can easily pick up OO concepts.
Knowledge / experience of an 'agile' approach (/ SCRUM / other buzzwords) will also help, certainly in the UK.

Having said all that, it is very true that much business programming work is now being sent to India and other lower cost countries, so programming careers in the West may not last long unless you will move into systems / business analysis, or project management.

Gary Pace
October 26, 2010 5:07 PM

How hard is it to learn programming?

Hmmmm this is a question that begs for context.

Leos response was excellent.

The subsequent respondents have contributed from their experience, focusing basically on how to begin to think about and communicate with computers. Much of what I read is reminiscent of the state of the profession during my graduate days in Computer Science at the U of Illinois in the early 1970s. However, having just retired from a 33-year career in the Silicon Valley Aerospace industry, and having kept up on local hiring practices for software engineers, I can attest that the question is incomplete and the answers very limited.

School yes study maths and computer science. The most important math course you will ever take is algebra (exceptions to be noted below), so learn it well. If you are in a BS curriculum, you likely will have to take calculus and differential equations as well, but, again, algebra is the most important math personally or professionally for you to learn. A first course in logic is very helpful re organizing ones thoughts and the expression thereof. Learn how computer hardware operates, how software operating systems operate, and how software programs operate in the environment of OS on HW. Learn a programming language, better yet, two or three. If you have difficulty in any of these courses, do not enjoy them or cannot at least earn a B grade, likely computer programming is not your milieu. You should be able fairly quickly to determine if programming is or is not for you.

Now, you have a fundamental understanding of computers and how to command them. At this point, you are a clever amateur and are prepared for self amusement, not for a career. What you have learned thus far is not even the tools of computer science, merely the most basic understanding of the fundamentals.

At this juncture, you graduate with a BS (4 year) or possibly an AS (2 years) degree and you need to get serious about your software career.

Very few general programmers are hired these days. Even though OJT will be provided to some extent by your employer, you will likely be hired into a specialty niche, such as Windows development, satellite communication, operating system development, database interfacing, microprocessor control, game development, realtime systems, etc. If you come to the party with only basic skills, you will be that last one seated at the table if there is room at all. This is where you need to time travel and whisper in the ear of your earlier self what to study that will appeal to your employer in lieu of prior experience and firmly launch you on your way.

You will not be asked to design astrophysics software, but you might find a job implementing and testing the design for the same developed by an astrophysicist. If your interests lie along these lines, then you had better study and do well in advanced maths and physics while in school. Game software development might require the same, but realtime system software and database interface software development will not require the heavy science/math load, but you had better learn database languages and try for experience with a heavy-duty database management system. Companies such as Lockheed, Cisco, Oracle etc., typically focus on unix-based systems and applications; consumer product companies usually implement on MS Windows or MAC platforms though and companies in one of these environments are frequently unimpressed with experience in the other environment. Whole new application areas are opening up vis a vis smart phones if you can place a couple of Apps in the online store, it will look good on your resume for seeking employment at consumer product companies.

Congratulations: you have been hired, enjoy the work and workplace and have had a few years of OJT and experience, both in SW development and in teamwork, a big change for most folks. You will have begun working closely with a more experienced employee, had your work quality evaluated in Peer Reviews, and learned how to operate the Company Way. If you are fortunate, your first job out of school will be software maintenance, allowing you to evaluate and learn the work of others as well as the design and operation of your product; likely, direction here will be provided by problem reports. Or you may go directly to software development. In either case, you may have been given detailed software specifications as text or graphics, higher level requirements or just a general statement of desirement, depending on your company culture and the requirements of the ultimate customer, if you are developing other than a consumer product. You now have several options important to your future to consider. Do you 1) continue on; 2) continue on but ask for more design responsibility as opposed to just implementing others designs; 3) ask for assignment to a new project as a developer or as a designer; 4) leave the company for more money and a similar job or for a different but related job? I wont explore these or other options, but career considerations include OJT, growth of responsibility, increase of remuneration, satisfaction, stress, hours and a clear path forward. What can you demonstrate on your resume to make career / responsibility changes palatable?

The two most important questions to answer, now that you understand software development in the real world, are

1) do you want to focus on development, implementing other peoples designs, or do you want to focus on designs, possibly surrendering programming time? I have personally experienced those who just want to code forever and those who only want to design and would slit their wrists if they then had to implement their own design, much less someone elses design. Most I have met love to code during their youth, then move increasingly into design as they age. Your career will have prepared you for logic/control design, but you will require science / math / accounting/ security / etc / etc training for specialty design areas. In fact, many folks enter from school directly into design areas and acquire OJT and continuing education in those areas without ever being expected to write code. Few companies expect a single person to be both a software expert and a subject matter expert, at least not without additional training.

2) do you wish to remain a designer or implementer or do you wish to move into technical management, eventually giving up all personal responsibility for designing, coding or testing software? If so, ask about team lead / group lead possibilities and be prepared for a whole new world of schedule, budget and personnel changes as well as crisis management and you had better learn how to make the most of meetings and endure working with those not as savvy as you, but frequently several rungs higher up the ladder than you. Even though you are no longer a practicing software engineer, you will need to maintain your skills do that you can evaluate the proposals and work of others as well as chart and direct the groups / projects course.

In both cases above, be very frank with your reviewer when defining your annual goals or with the job recruiter / interviewer.

How hard is it to learn programming? -- Not terribly difficult, but programming (coding) is not computer science nor is it computer software engineering. Best be sure you are really asking the critical question.

Best wishes for as rewarding career as mine has been from software engineer to team lead to software development manager on many interesting and different projects.

October 27, 2010 7:15 AM

I am one of the "dinosaurs" of computer programming (my first college level programming language was FORTRAN in 1965). During the first part of the class I was totally lost, but managed to get it right by the end of the semester. My eyes really opened wide when I took an assembly language programming course - with some machine language instructions sprinkled in - and I really began to understand programming. By learning how the computer works I began to understand the logic on which higher level programming languages were built. I would say if you don't get it after 2-3 college level programming courses then you need to make a course correction and change majors.

Fortran was also my first programming language - assembly language ("Compass", on the CDC mainframe) was #2. I've strongly advocated a good familiarity with assembly language as being invaluable to understanding just what the software you're writing really does.

Glenn P.
November 2, 2010 2:32 AM

Hey, I still program in BASIC on my Commodore 128!     :)

November 10, 2010 2:04 AM

School shouldn't teach you a programming language. They should teach you concepts. In such detail that you really really get it - it's like the concepts become part of your genes. To do that you need to practise, a lot. So, you need a programming language so they/you have to pick one (and later more as generally there is not one language that has all concepts you might encounter later). It is best to start practising using a language that helps you as much as possible to do the right thing and prevents you from doing the wrong thing as much as possible.
Something else you need to do is to read and analyse as much source code as you can get your hands on. Yes, there will be going "bad" code through your hands but that's ok. You'll learn to recognize it and how to do it better.

fred jones
October 20, 2011 4:47 AM

well i think programming is a course in which majority of the skills you learn are from outside the module being it in a college or a university.

November 19, 2011 11:39 AM

It is very easy to learn the basics but very hard to learn the complexities and become productive. Just because you know computers you do not know programming.

How to learn it...jump in there is no other way!

You need to like math and have learned it as a child well as programming is based on math. Really if your math is poor choose another career your not cut out for programming! Most programmers enjoy math and physics a great deal. If your one of them you will like it as you can take your math/physics and animate it into life in a way a polynomial never can.

You can get away with dodgy scripting (ahhum PHP script kids) and it works but to do it right you need to know math as that is where data structures and algorithms originated. Those are difficult to learn without math if not impossiable. You need the math background or the books after chapter ten are unredable.

There is also MANY specialities in programming and it is NOT one subject or ONE LANGUAGE this makes it even harder. Some people may work on web pages and others desktops and others again server admin to name only a many areas!!!

It is a licence to print money (either by selling or making your work more productive) even if it takes 5 years to code it.

The trick BTW is to learn the basics then become familiar with libraries and a framework for your language (you will NEVER learn all languages) then start looking at real world examples in open source software. Don't be scared just do it.

The biggest problem with teaching programming to people is they fear it like many fear math. I suggest those people choose another path in life.

Programming may sound cool but it is very slow and takes a lot of design before you even work on is not cool it is a grind at best and at worst stops moving for weeks while problems are solved. It is not like matrix it is sitting in debuggers for weeks on end lol.

Mark J
November 19, 2011 2:00 PM

When I went on an interview for my first programming job right out of school, the interviewer asked me what I could program. In my cocky overconfidence, I answered. Anything, as long as I get the specs. The interviewer told me, that anybody out of school should be able do that but what you need to learn is how to give the users what they need even if they doesn't know exactly what they want.
That stuck with me for years , and through experience I learned that when it comes to programming, at least creating programs with a user interface, knowing the needs of the business you are working with or knowing how the user will interact with your programs can be just as, or possibly even more important than knowing how to code.

Comments on this entry are closed.

If you have a question, start by using the search box up at the top of the page - there's a very good chance that your question has already been answered on Ask Leo!.

If you don't find your answer, head out to to ask your question.