Rick's answer did a good job of summing up engineering however, engineers may often do more than just build things/products across different disciplines.
Engineers at their core are scientists, and use the scientific method to engage in problem solving and day to day activities. These activities may include building/prototyping as Rick said, but can also involve testing, research, brainstorming, design, and communicating with teams to achieve set goals.
If you enjoy solving problems and/or have strong math and science skills, engineering can be a very rewarding career path. If you don't yet have these skills, but are still interested, you can certainly get there with enough hard work and determination - don't be discouraged!
Best of luck!
Software Engineering, of course, consists mainly of programming as your main focus, but the development process also includes many other aspects:
- Design: Nailing down the functional requirements of your product is key to success; who are your customers/users, what are their biggest pain points? After deciding what functionality you need to implement, you need to consider the architecture supporting your system. Researching what technologies are you going to use as well as considering the scale and performance of your software is the foundation upon which your implementation will rest.
- Implementing: Once you have designed your APIs/functionality and decided on your implementation strategy, a large majority of your time will be taken by the actual implementation of the code. This requires you to have a solid understanding of your code base and a strong grasp of basic software development principles, from algorithms to design patterns.
- Testing: This is arguably the most important part of the phase of the cycle, because no matter how careful you are in implementing, bugs and unforeseen circumstances always appear. Testing includes not only making sure your code works when everything goes right, but also how your code behaves when things go wrong (what happens if a server dies? How does your product behave when it receives 1,000 requests all at once? How does your code behave if a malicious user tries to send malformed requests?)
- Deployment: Depending on your team/company, you might also be in charge of the deployment cycle of your code. This includes concepts such as what infrastructure you use, automation tools, etc.
This is just a small sampling of things you might encounter as a software engineer!
These days that work often happens on the computer using special programs that run simulations.
Depending on the kind of engineer you are you may make computers, buildings, jet engines or whatever you can imagine.
In any of these fields you'll need to know a fair amount of math and science. You'll need to be good with computers. Engineers are often people who like to think about how things work.