I have a bachelor's degree in physics with an astronomy concentration and a minor in mathematics. My formal computer science experience is limited to an introductory course, but I've used Python extensively in computational physics and astronomy work. I've built simulations involving parallel-plate capacitors, orbital motion, and random-walk models, and I've worked on manipulating and modeling astronomical data. I've also had some exposure to MATLAB through differential equations and R through probability and simulation coursework.
Most of my current coding involves writing Python scripts for research and data analysis, and I'd like to move into software because I enjoy it. I recently interviewed for a junior software engineering role and struggled partly because I didn't know enough of the usual software terminology. How should I build a stronger foundation beyond writing one-off scripts, and what would be the best path toward getting my first software job?
4 Answers
The terminology gap is very fixable. Work through a structured Python and computer science curriculum, then study common data structures and algorithms, complexity analysis, debugging, testing, and basic software engineering practices. A coding-interview book or course can help organize the vocabulary and give you practice with the kinds of questions used for junior roles.
Keep applying Python in your research while gradually making your scripts more production-like: use Git, write tests, separate modules, handle errors, document decisions, and package projects so others can install them.
Pick a direction based on the kinds of work you actually enjoy and the technologies employers near you are hiring for. Your background could translate well to scientific computing, data engineering, numerical software, optimization, simulation, or general backend development, so you don’t necessarily need to compete for front-end roles.
Build projects that demonstrate the problems you can solve, then describe them in terms an employer understands: what the input was, what you designed, how you measured correctness or performance, and what tradeoffs you made. Interviews go better when you present yourself as someone who can solve useful problems rather than as someone simply asking for a chance.
Learn the fundamentals by building something end to end. For example, create a small web application using HTML, CSS, a backend language, a database, forms, and basic deployment. Writing the pieces yourself will teach you how the layers fit together instead of leaving you with isolated snippets.
Use coding tools as learning aids, but make sure you understand and can explain the code they produce. Focus on concepts such as data structures, databases, APIs, object-oriented design, testing, version control, and basic system architecture. Those fundamentals will make newer tools much more useful rather than replacing your understanding.
You’re starting from a strong position. Physics gives you experience with mathematical modeling, problem solving, and working with complex data. Try building two or three substantial projects rather than starting fifteen small ones. You could turn your existing simulations into maintainable software with a clear README, setup instructions, tests, sensible project structure, and documentation.
For each project, ask whether another person could run it easily, whether you could modify it six months from now, and whether the design makes sense to someone who didn’t write it. Having an experienced developer review your code would also help you learn software design much faster.

Related Questions
How To: Running Codex CLI on Windows with Azure OpenAI
Set Wordpress Featured Image Using Javascript
How To Fix PHP Random Being The Same
Why no WebP Support with Wordpress
Replace Wordpress Cron With Linux Cron
Customize Yoast Canonical URL Programmatically