There are at least a few potential pathways to gaining professional experience and income through technical work while in school:
Traditional Technical Internships. This is perhaps the most traditional approach, and involves getting a paid summer internship each summer in a technical role. You should aim to have at least one (if not two) technical internships while in school.
Independent Freelancing. This is a setup which involves getting paid hourly or on fixed contracts to develop code for a client (person or company). Usually this happens either via online freelancing platforms or through working directly with companies.
Contracting for a Startup. Find a small (local?) software startup where you connect with their mission and reach out to see if you can help in paid part-time roles
Start your own Small Side Business. Developing a small business that generates revenue every month offering a service, product, content, etc to a group of people willing to spend money.
Paid internships. This is perhaps the most obvious one, and involves getting a paid summer internship every summer in a technical field. This one you can’t do every semester but it’s a great way to get paid and learn more about software at the same time.
One approach to making money which I did was called freelancing. This is where you kinda get thrown off the deep end trying to work on projects on places like upwork, venturestorm, gigster, rentacoder, freelancer.com or through asking people directly (on twitter, etc) and getting referrals. Learn more about freelancing through the Student’s Guide to Freelancing.
This includes finding jobs ranging from website development, mobile development, to testing software manually. For example, you can check Upwork for a wide range of jobs including Quality Control Roles or creating a simple form for a business. There are thousands of different jobs available.
This one can require the most upfront time to get going and it can be challenging, but rewarding. This involves working part-time and remotely for a small startup as a junior engineer.
Look ones that catch your eye up on LinkedIn. Try to find ones with fewer than 30 people.
Identify a founder, engineer, product manager, etc there on LinkedIn.
Send a direct message to them explaining that you are a student, stumbled upon their business, really liked what they are doing and you were hoping to be able to help them out with small tasks.
You can suggest you can help with front-end web development, simple features on mobile, manual testing, technical support, writing documentation, whatever they need.
If you reach out to enough places, this can potentially land you a part time contracting role helping support them and learn a lot in the process. Often this will be in a paid contracting role.
This one is in some ways the most challenging. You can build a side business to generate your own income. This would involve figuring out any viable business which involves providing something (your time, a product, content, etc) in return for money. Could include a web site, an app or anything which brings in small amounts of dollars.
Here are some links to get you thinking about what starting a business involves: