I have a bachelor's degree in physics with an astronomy concentration and a minor in mathematics. My formal computer science background is limited to an introductory course, but I've used Python extensively in computational physics and astronomy work. I've built simulations for parallel-plate capacitors, orbital systems, and random-walk processes, and I've worked on modeling astronomical objects and manipulating research data. I've also had some exposure to MATLAB through differential equations and R through probability and simulation coursework.
Most days, I write small Python scripts for research, and I enjoy programming enough that I'd like to pursue it as a career. However, I recently performed poorly in a software engineer interview, partly because I wasn't familiar with common software engineering terminology. How can I move from writing useful but somewhat piecemeal research scripts to developing the broader skills, fundamentals, and vocabulary needed to break into tech?
4 Answers
Your background can be a real advantage, but target a specific type of role instead of trying to learn every technology at once. Look at job postings in your area and identify recurring skills that match your interests, such as Python, SQL, testing, cloud tools, data engineering, or numerical optimization. Then build projects that demonstrate those skills and clearly explain the problems you solved. In interviews, present yourself as someone who can use software to solve difficult technical problems, not as someone apologizing for coming from physics.
Try learning the fundamentals by building something end to end without relying too heavily on abstractions. For example, make a small web application with HTML, CSS, a backend language, a database, forms, and basic deployment. The goal isn't necessarily to become a web developer; it's to understand how applications, databases, APIs, and user interfaces fit together. Once you understand those foundations, modern development tools can speed up implementation without replacing your understanding of the system.
For interview preparation, work through data structures, algorithms, object-oriented design, version control, testing, and basic software architecture. A coding interview book or structured online course can help fill in the vocabulary gap, but don't just memorize definitions. Practice explaining why you would choose a particular data structure or design, and solve problems regularly under time limits. Your physics and math training already demonstrate that you can reason through difficult problems; now you need to make that reasoning visible in common software engineering terms.
You already have a strong foundation, especially for roles involving scientific computing, optimization, simulations, or data-heavy applications. Rather than starting dozens of small tutorials, build two or three substantial projects based on your existing physics simulations. Treat them like real software: make setup straightforward, organize the code clearly, add tests, document your design decisions, and make it possible for someone else to understand and modify the project months later. Getting feedback from an experienced software engineer or mentor would also help you identify gaps in design and terminology.

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