With almost 40 years of experience in computer programming, design, management, and hardware design, I can tell you that there are few generalizations that can be applied to computer programming. From job to job the work can vary enormously. Some programmers spend all day coding (and debugging), sometimes on exciting new systems, sometimes just producing variations of the same old stuff. Some specialize in user applications, others in systems and tools. Some work with low level languages directly interfacing with specific hardware, others in high level languages that are platform independent. Some are experts in protocols and communications software, others in languages, databases, web pages, graphics and animation, industrial systems, automation, user interfaces, and the list goes on.
But this is the one thing you should know. You can reliably gain the most job security and highest pay by combining a non-computer related expertise with computer programming skills. Healthcare companies want programmers who already understand billing&coding, pharmacy products, and medical practises. Financial institutions want people who have accounting backgrounds, and so on. It is not only the background knowledge, but the experience and familiarity with software and hardware products, and standards that are common in the particular industry.
One thing you must make sure of is that you want a job as a programmer. What you have done at school may not give you an idea of what a job is like (and that seems to be true in many fields). Only a few programmers are doing the fun stuff of creating new software at any time. Most are modifying and debugging existing packages. Even the most common tasks require discipline, adherence to standards, and the ability to fix the things you’ve done wrong. Finding and fixing a bug, whether you’ve created it, or inherited it, can be a long, mind-numbing, process. And if you are not good at reading code written by others, often undocumented and incoherent, and deciphering how it works, and how to modify it and improve it, you will have a very difficult time. You will also have to work with poorly written, incomplete, and out of date documentation, non-standard terminology, and interface with non-programmers who want you to do things they can’t explain, yet consider themselves experts because they have their own PC.
But back to your OP. The term Software Engineer is a job title, and it does not now, nor has it ever meant anything in particular except in the minds of the people who have the title. There is no expected salary for an entry level job. It will tend to be higher than the average non-technical job, but it will range all over the place depending on the industry you are working in, the location, current employment conditions, and any other factor that could apply. There is currently no shortage of entry level programmers in most sectors, and someone can be found in the right price range for any position. Those doing the hiring may not appreciate or care about the difference in results produced by the people who can demand more money. There is not much value in joining professional organizations that do not apply to a niche or specialty. IEEE publications can be interesting, but totally useless in many areas. A small organization of golf course technology professionals will do much more for your career if you are working in that niche. And when will you burn out? That’s up to you, and no different than any other job. Burnout occurs most frequently in high pressure jobs, poor working conditions, and certain personalities. You have to take advantage of your first job to understand what you can do, and what conditions suit you. I think I would have become a total burnout case if I had not taken time out to work in other unrelated fields, and several different specialities within the field. In addition, even though I have spent large amounts of my ‘leisure time’ creating hardware and software for my own personal satisfaction, I have also pursued non-work interests that were unconnected to technology.
You wanted to know about moving elsewhere and the effect on your salary. The greatest feature of computer programming as a career is that in many cases you can do it from anywhere. Once you prove your ability to produce, you may be able to work from anywhere, for an employer located anywhere else. You may be able to set your own hours and terms, and you can work as an independent contractor, or for contracting firms for fixed time periods. And it is often easy to find additional work to supplement your income, or create your own products to sell. You are also more likely to find a job where you can go to work in casual clothes, take extended time off, or select working environments. There are programming jobs where you can work alone most of the time, or on teams most of the time, or change that environment frequently. You will no have no problem changing jobs frequently, and the variety of that experience will more readily be considered an asset instead of a sign of instability.
Finally, I will tell you something that many well educated people will dislike. Computer programming is a skill that you develop yourself. The level or quality of your education has little relationship to your ability. The experience and skills you gain on the job will far exceed anything you learn in school. And the experience and skills you gain from your own desire to develop your abiliity will exceed those you learn on the job. You can also learn a great deal from working with skilled and experienced people, or just studying their code.
Best of luck to you. And despite the previous paragraph, stay in school, you don’t want to end up like that college drop-out Bill Gates:)