Physics A physics major is not good preparation for a career in software development

Click For Summary
A physics degree typically does not provide adequate preparation for a career in software development, as the curriculum focuses more on theoretical concepts and less on practical programming skills. Most physics programs offer minimal programming coursework, often limited to optional introductory classes, which do not equip graduates with the necessary skills for modern programming jobs. Employers generally expect candidates to have experience in relevant programming languages and technologies, which are rarely covered in physics education. While some successful programmers may have physics degrees, they often possess significant self-taught programming experience, making the degree itself insufficient for job readiness. Overall, relying on a physics degree as a pathway to programming careers can lead to misleading expectations about job qualifications.
  • #31
Mistake said:
I have a few years worth of programming and still can't even land a job interview. I have "programming" experience. Not "software engineering". I got my projects to do what they are supposed to, but I worked alone with nobody to mentor me, and therefore am largely useless in a setting where teamwork and efficiency are expected. I just don't have those concepts down.

My projects weren't small scripts. My largest project was to program an application that took real-time images from an x-ray detector (30FPS video), analyzed it, displayed it, and let the user adjust the analysis parameters (contrast levels in this case) on the fly. They used my program during live surgeries. And yet I can't even get a job interview. Why? Because I developed all of it using Qt Creator by myself and not using .Net framework in an Agile environment or whatever.

It's the difference between eyeballing how big of a piece of metal you need and then filing it down if you need less vs. calculating exactly how much you'd need.

And of course I just don't have the background in algorithms or databases to be able to hold my own against CS majors. Nobody cares that physicists are "quick learners", nobody cares that physicists are "critical thinkers" or can "analyze problems". Absolutely none of that matters if you can't hit the ground running and need to be trained before you can contribute to a project.

I've posted here a lot asking for advice and it's always been a lot of "umm..." and "ahhh...". A few suggestions to go to various engineering or programming fields that didn't net a single interview. Finally I've decided to just go back to school (obviously my acceptance isn't guaranteed either). Until then I'll work at Safeway I guess. If they don't think I'm overqualified and actually hire me, that is.

It is true that many employers want their employees to "hit the ground running" because many of them simply can't afford (or don't want to bother with the time) to train their employees.

That being said, let me ask you something. Have you thought about spending time now training yourself in programming in various different languages/tools? (e.g. Java, SQL, C++, .NET framework, SAS if you want to do statistical programming, etc.) Most of these languages/tools/etc. are available on the web to download free of the charge or for a low price (except for SAS -- there you might have to resort to Pirate Bay or ask a friend who works for SAS). If you have solid programming knowledge, it shouldn't take longer than a month to pick up all the skills you would need in a job setting, and you can add your knowledge in the resume.
 
Physics news on Phys.org
  • #32
StatGuy2000 said:
That being said, let me ask you something. Have you thought about spending time now training yourself in programming in various different languages/tools? (e.g. Java, SQL, C++, .NET framework, SAS if you want to do statistical programming, etc.) Most of these languages/tools/etc. are available on the web to download free of the charge or for a low price (except for SAS -- there you might have to resort to Pirate Bay or ask a friend who works for SAS). If you have solid programming knowledge, it shouldn't take longer than a month to pick up all the skills you would need in a job setting, and you can add your knowledge in the resume.

Yes I have. The roadblocks I've run into are:

  • What do I program? People say "give yourself a project", but that's vague non-advice. I don't know what project to undertake that would force me to learn new concepts. I learned Python a few weeks ago. Made a small game with pygame. It was super easy and I didn't learn anything besides syntax. I just don't know what else to start.
  • Let's say I make a project and improve my knowledge. A good project that takes a solid month of programming. I can then write on my resume "1 month of programming in X". People almost always want years -- at least 1. Do I lie?
  • Added to that, if I get probed on what my experience in language X is, I would respond with "Oh I made a project for myself." Would that even fly? There's no real way to check that out.

However, the main problem is still my first point. I don't know what project I could undertake that would actually be doable for one person in a reasonable amount of time and also teach me new things.
 
  • #33
Mistake said:
Yes I have. The roadblocks I've run into are:

  • What do I program? People say "give yourself a project", but that's vague non-advice. I don't know what project to undertake that would force me to learn new concepts. I learned Python a few weeks ago. Made a small game with pygame. It was super easy and I didn't learn anything besides syntax. I just don't know what else to start.
  • Let's say I make a project and improve my knowledge. A good project that takes a solid month of programming. I can then write on my resume "1 month of programming in X". People almost always want years -- at least 1. Do I lie?
  • Added to that, if I get probed on what my experience in language X is, I would respond with "Oh I made a project for myself." Would that even fly? There's no real way to check that out.

However, the main problem is still my first point. I don't know what project I could undertake that would actually be doable for one person in a reasonable amount of time and also teach me new things.

As far as what to program, that would really depend on you. I'm a statistician, and if I was to learn a new programming language, I would pick a project that would involve some form of statistical or data analysis as a place to start.

Earlier in your post, you had stated that you had programmed an application that analyzed images from an x-ray detector using Qt Creator. Now I have no experience with Qt Creator (in fact, I've never heard of it until now), but it sounds to me that the work was fairly complex. Have you thought about independently developing this application using another programming language/application as a project? You already have the basic algorithm in place, so it's a matter of converting it into the new format.

If what I suggested above is too much a challenge in the beginning, starting with a little project (like developing a game using Python, as you did) may be advisable. Whatever you decide to do can then be mentioned in your resume; you can also save copies of the algorithm or the application if possible as part of a portfolio (similar to what graphic designers do with their projects) which you can present to a potential employer.

As far as what to write on your resume, I would simply leave out how many years of experience you have, and say something to the effect of "solid knowledge of X programming language" or "comfortable knowledge of X programming language".
 
  • #34
StatGuy2000 said:
Earlier in your post, you had stated that you had programmed an application that analyzed images from an x-ray detector using Qt Creator. Now I have no experience with Qt Creator (in fact, I've never heard of it until now), but it sounds to me that the work was fairly complex. Have you thought about independently developing this application using another programming language/application as a project? You already have the basic algorithm in place, so it's a matter of converting it into the new format.

Qt Creator (C++ IDE) is like Visual Studio or Netbeans, with the added benefit that it is designed for use with the Qt libraries, which are cross-platform libraries that handle everything from GUI development to networking and multithreading.

In any case, the program I made used DLL files provided by the manufacturer of the hardware that I can't really do anything without. I can definitely simulate images, but it just seems like I'm making a project that ends up being worthless. The big deal about the program for me was that I had to have a separate thread for data acquisition and a separate one for the GUI as well as figuring out how to store a monolithic chunk of data (up to 700MB) in one giant array, being able to cycle through that data, save it in various file formats, load it back up. That kind of thing. Also a big chunk was devoted to communicating with the x-ray detector itself, changing settings remotely, checking to make sure everything is working well, and calibrating. A lot of bread and butter programming that was more time consuming than difficult.

If what I suggested above is too much a challenge in the beginning, starting with a little project (like developing a game using Python, as you did) may be advisable. Whatever you decide to do can then be mentioned in your resume; you can also save copies of the algorithm or the application if possible as part of a portfolio (similar to what graphic designers do with their projects) which you can present to a potential employer.

Can you elaborate more on the portfolio? Pictures of my program or something? Only thing I'd feel bad about is if someone looks at my code and sees bad coding practices or something. Usually when I'm learning, I don't sweat the details.

As far as what to write on your resume, I would simply leave out how many years of experience you have, and say something to the effect of "solid knowledge of X programming language" or "comfortable knowledge of X programming language".

Yeah that's a good way to go about it I guess. Then if the interviewer probes you you can actually explain instead of being weeded out automatically.
 
  • #35
I’d echo what a couple of previous posts have said. My background in physics (pen and paper theory work) did nothing to prepare me for writing software. I’ve worked with a few fresh out of university computer science majors (including some with postgraduate degrees) and they also were not very well prepared to be software developers. Among the people I’ve worked with there’s a mix of opinions about the value of academic work in computer science as it applies to software development.

I’ve worked in a couple of biotech jobs. A background in science was a bonus in these jobs, but the main thing they needed from me was coding skills. The most helpful aspect of my physics background has been the experience it gave me giving technical talks to groups of people.

I’ve made plenty of mistakes writing software, but as far as I know none of them has been the result of not studying computer science, e.g. I’ve never found myself saying, “if only I had known about the Liskov substitution principle I wouldn’t have made that mistake”. Also, none of the people I’ve worked with that have computer science backgrounds have ever told me anything like that either.

As some others have said, I think vocational education would probably be the best preparation for being a software developer. However, I think a lot people have a have a strong bias towards computer science degrees or more generally four year degrees. I wish it wasn’t that way, but I think it is. I will say I have interviewed for jobs and sometimes I get asked computer science type questions. It would be nice to just know the answer, or at least have seen a similar problem in the past, instead of standing at a while board trying to figure it out on the fly.

Learning the basics of programming isn’t that hard, “if” statement and “loops” are no big deal. I think the main challenge is learning the libraries and frameworks. I’m not sure how much they teach this at universities. The people I’ve worked with right out of school didn’t know much about these kinds of things. Another thing they lacked was working within a software development process. Doing this for a small class project is very different from doing it in the context of a large commercial application.

At a smaller company knowing about networking and operating systems might be helpful, since there might not be much other support. But I’d look at this as more of a “nice to have”, for the most part it’s probably more important to be really good at programming (including programming in a browser for a web application) and knowing enough about databases to be effective.

To me it’s not a big deal if someone doesn’t know how to program if they can learn quickly and have a good attitude they can pick it up fairly quickly. I basically started from zero, after a couple of weeks I was doing productive things, I was marginally competent after about 2-3 months (i.e. it seemed natural to call myself a software developer) and was ok after about 6-7 months or so. I think the big challenge is getting in. I’ve conducted a fair number (close to 100) of technical interviews (basically after people have gotten past a resume review and sometimes a phone interview) and all of the people I’ve interviewed had real programming experience. Like I said though, I have worked with people right out school, so it’s possible.

In summary, I think there’s a bootstrap problem, actual software development experience it the best way to learn, but how do you get it? A comp sci degree would probably be very useful in getting you past the resume screeners and into an in person interview.
 
  • #36
Mistake said:
Can you elaborate more on the portfolio? Pictures of my program or something? Only thing I'd feel bad about is if someone looks at my code and sees bad coding practices or something. Usually when I'm learning, I don't sweat the details.

I was thinking more along the lines of copies of the code itself, or pictures of the end result. You can also bring your laptop with you and show the results of the code. If you're worried about IP or copyright, perhaps you can specify in advance that these are beta versions?

Those involved in software development may give you better advice about how to present a portfolio.
 
  • #37
I've worked in software development for over 20 years and have never heard of anyone presenting a portfolio.

Usually, most of the code I've written has been owned by a previous employer... I couldn't have shown it to someone else unless I wanted endless legal hassles. I think that's the usual case... I've interviewed many people as well, and none of them have ever shown me a portfolio either.
 
  • #38
I was once asked for a sample of my code for an interview, since I didn't have anything that I could legally show, I declined.

I wouldn't really call it a portfolio, but twice I conducted interviews where the hiring manager asked the candidate to provide code samples. In one case it was an internal transfer so ownership of the code was not an issue, in the other instance I'm not sure if the code was proprietary or not (I didn't really want to know).

The code didn't really influence me that much, I was more interested in how they responded to the questions I asked. The only thing I felt a bit negative about was when I'd ask about why they did something a certain way, that was obviously wrong, and instead of just saying, "I made a mistake", they would try to come up with some justification that didn't make any sense before saying, "I made a mistake".
 
  • #39
Regarding the original statement as the topic title:
What makes it so? Do you know about the free-software movement? One of the chief promotors is a programmer and with degree in Physics.

What one studies formally along with their "degree" and what one chooses to learn or study outside their degree can make a person more than or different than just the result of their major field of study. Not everyone knows what to do about so many choices nor to look for them.
 
  • #40
What makes it so? Do you know about the free-software movement? One of the chief promotors is a programmer and with degree in Physics.

Dude, Richard Stallman got his undergrad degree in physics IN 1974! Do you think maybe the expectations of software developers has changed a bit in the last 40 years? How many CS programs do you think existed in the 70s? The pattern of physics degrees is generally that they don't get work doing physics, but are smart people so they worm their way into areas that require little in the way of formal credentials (CS in the 70s, finance recently, insurance and data-mining).

In a world where there are no degrees teaching you how to develop software, something like physics where you'll get some time on fast computers and learn a bit about programming is excellent preparation. In a world where lots of schools are having CS students work on large, open source projects, physics is no longer good preparation.

Also, Stallman is AT BEST an idiosyncratic definitions of success. I met him briefly in the late 90s, and at the time it appeared he was literally living in his office and didn't appear to have much in the way of income.
 
  • #41
symbolipoint said:
Regarding the original statement as the topic title:
What makes it so? Do you know about the free-software movement? One of the chief promotors is a programmer and with degree in Physics.

What one studies formally along with their "degree" and what one chooses to learn or study outside their degree can make a person more than or different than just the result of their major field of study. Not everyone knows what to do about so many choices nor to look for them.

Modern software development is something you have to spend a lot of time becoming used to and being comfortable with.

Typically nowadays people are given a bunch of API's that do a lot of complex stuff and they are told: "Here's API blah, blah and blah: we need blah blah and blah".

Now in this environment you won't know anything much beyond those interfaces in terms of what is going in most cases (you know what it does, just not how) and you have to deal with the issues that arise not only from this, but also working with repositories that are huge and are maintained by a number of people that introduce issues of their own.

Working on a repository that is being accessed by half a dozen or more people can be a nightmare if things aren't co-ordinated and if you are used to developing for yourself, then it's pointless for an employer to look at you since they want someone who can not only get things done, but also get things done in the context of a team environment that means working with other coders, managers, and all kinds of people.

Again it's quite different to have this scenario than the one where you are doing your own pet project that you have full control over and relating the two situations in any way is just naive.
 
  • #42
This is quite an interesting thread that I didn't see earlier. Reading through it brought back memories.

I started out with a BS in Physics and was hired into a computer center that did two types of work: business based (payroll, stock certificates, billing...) and scientific/engineering based work. At the time, CS was a fledging field, the company knew it was better to hire physics majors and business majors to get the job done. The view was that it was easier to teach someone COBOL or FORTRAN than it was to teach them the complexities of a given science, engineering or business project. They did this by offering inhouse training in all aspects of programming of the time ie FORTRAN, COBOL, Report Writer, sorting, and macro assembler.

In particular, I was told that physics majors seemed especially adept at picking up programing projects and running with them. It seemed that we understood how to work with arrays better than business majors. This was before spreadsheets were invented, business majors could handle lists and with difficulty tables but add another index and they might get lost completely. COBOL pretty much dealt with lists of records to be sorted, summarized and reports printed.

In contrast, FORTRAN applications would use more math to compute or generate engineering data like plots, programmable milling machine tapes...

What I used to tell students majoring in any field was to minor in computers because companies that needed programmers to run the business look at the major first and then the programming is an extra that they will also want. I think this still stands today. CS people will get more easily hired by computer companies, engineers by engineering companies, physics majors by research labs... but in each case knowing how to program makes you a better fit for the job.

Curiously, IBM bucked the trend at the time by hiring English majors. Initially they needed manuals to be written but discovered that English majors had the logic skill needed to write effective programs. Many later became managers and executives for the company but that's another story...

Lastly, I'm sure if you were to do a poll of working programmers you would find many older programmers who had physics backgrounds. Two of the US inventors of early computers, Atanasoff and Mauchly were physicistts whereas Eckert and Zuse were engineers and Turing, Aiken and VonNeumann were mathematicians again before CS was a field of study.
 
  • #43
Getting back into the point raised by the OP: I would have to agree that a physics major on its own is not a particularly good preparation for a career in software development. In my alma mater, the curriculum for physics majors often do not cover programming or software development in any degree of depth.

That being said, the physics majors that I know of have considerable skill in programming and often pick them up very quickly. And I could be mistaken about this, but I somehow I seem to get the impression that there is an unspoken belief that a physics major and a CS major are mutually exclusive, where in fact there are many people (including people I know personally) who have double-majored in both degrees. These people have often told me that an understanding of physics and of CS have complemented each other.
 
  • #44
ParticleGrl said:
Also, Stallman is AT BEST an idiosyncratic definition of success. I met him briefly in the late 90s, and at the time it appeared he was literally living in his office and didn't appear to have much in the way of income.

He's his own boss and doing exactly what he wants to be doing, and has been for 30 years. I can't imagine being more of a success than that.

That said, I'd agree that he makes a poor role model for physics majors who aspire to be software developers.
 
  • #45
StatGuy2000 said:
Getting back into the point raised by the OP: I would have to agree that a physics major on its own is not a particularly good preparation for a career in software development. In my alma mater, the curriculum for physics majors often do not cover programming or software development in any degree of depth.

That being said, the physics majors that I know of have considerable skill in programming and often pick them up very quickly. And I could be mistaken about this, but I somehow I seem to get the impression that there is an unspoken belief that a physics major and a CS major are mutually exclusive, where in fact there are many people (including people I know personally) who have double-majored in both degrees. These people have often told me that an understanding of physics and of CS have complemented each other.

I can vouch for that, I have a Physics BS and a CompSci MS and its true they do complement one another in odd ways but are especially helpful when doing scientific projects with a fair amount of computational math and physics.
 
  • #46
Why? Because I developed all of it using Qt Creator by myself and not using .Net framework in an Agile environment or whatever.

Spin. If you know potential employers want .Net framework and Agile development experience working in a team then when you are talking about your project:

1.) Don't specify what development environment/libraries you used.
2.) Don't say you did it alone. Might seem conterintuitive but list what you did and leave it ambiguous as to if you worked alone or not.
3.) Even if you didn't officially use Agile processes, some of what you did probably is Agile like. Read through in figure out what is and point that out in your resume. State that you used the Agile concepts of "xxx", "xxx", and "xxx" or whatever.Then if you don't have it, get some .Net experience (this is the homecooked project part) and list in a general skills section that you have .Net experience.
 
Last edited:
  • #47
Mistake said:
Yes I have. The roadblocks I've run into are:

  • What do I program? People say "give yourself a project", but that's vague non-advice. I don't know what project to undertake that would force me to learn new concepts. I learned Python a few weeks ago. Made a small game with pygame. It was super easy and I didn't learn anything besides syntax. I just don't know what else to start.
  • Let's say I make a project and improve my knowledge. A good project that takes a solid month of programming. I can then write on my resume "1 month of programming in X". People almost always want years -- at least 1. Do I lie?
  • Added to that, if I get probed on what my experience in language X is, I would respond with "Oh I made a project for myself." Would that even fly? There's no real way to check that out.
1.) Depends on what you want to try to learn. Something I fooled around with to learn about neural networks and learn C# was to create a stock analyzer. Write a program that gets historical stock data from the internet and stores it into a SQL database. Then write a program that pulls it out of the SQL database and performs some kind of basic analysis on it. Make it variable so you can examine stock or group of stocks starting at any date, for any window length, or find any stock whose price or volume deviated more than 1 STD in a certain length of time, etc.

This covers a lot of basics: basic socket programming, string parsing, basic database manipulation, math and array operations. Throw a GUI on it and plot if if you want GUI or maybe openGL development experience.

If you want something more mathematical, write a set of libraries using various numerical techniques to solve ODEs or PDEs. Figure out a way to use them and compare their results, processing efficiency, etc. Even better, compare the results with different compiler options or between different compilers/programming languages.

2.) Never state how much experience you have unless it is a big plus. If you know they want a C++ developer and you have 15 years developing in C++ state it. Otherwise, you are just "Proficient in [list all the languages you know to some basic level]"

3.) Spin and hype. Don't lie, but emphasize the strong points and don't mention the weak points unless they specifically ask. You didn't do a weekend programming project, you created a program that performed statistical analysis on a database of historical stock data. And you didn't do it to learn to program, you did because you didn't like the tools available for free on the internet or because you thought you had some novel approach to stock analysis.
 
Last edited:
  • #48
Floid said:
3.) Spin and hype. Don't lie, but emphasize the strong points and don't mention the weak points unless they specifically ask. You didn't do a weekend programming project, you created a program that performed statistical analysis on a database of historical stock data. And you didn't do it to learn to program, you did because you didn't like the tools available for free on the internet or because you thought you had some novel approach to stock analysis.
This is very bad advice. Spinning and hyping a weekend programming project as a significant endeavor is a lie. A reasonably good interviewer will detect it as such. Never lie on a resume or during an interview, and that includes excessive stretching of the truth. If you are going to lie about something as petty as a weekend programming project, what are you going to lie about when it comes to something significant?

If the company is at all competent, it will not hire you just on the basis of this kind of "spin and hype". If it makes a mistake and does hire you, they might well fire you when it turns out that you did "spin and hype" in your resume and interview. Your first six months or so on the job are provisionary. We don't need much of an excuse to get rid of you. Most degreed technical employees are exempt employees. "Exempt" means that a whole lot of protections that apply to hourly workers are not applicable to exempt employees. Even after that probationary period, we still don't need much of an excuse to get rid of you. Firing an employee oftentimes is very bad for morale, both fellow employees and employers. Most employers do not like to fire people.

On the other hand not firing a worthless employee can also bad for company morale, mostly on the part of fellow employees. Those coworkers do not like having to repeatedly clean up the mess that that worthless employee creates. Worthless employees are also bad for the bottom line. If they create a big enough mess, they are not just worthless. They are worse than worthless.
 
Last edited:
  • #49
Floid was clear not to lie. Choosing language that's both appropriate and puts the work in a positive light is possible. Learning to sell yourself in an interview is an important skill that candidates should work on.

I think D H misrepresented Floid in his response above.
 
  • #50
Locrian said:
Floid was clear not to lie.
I disagree. Floid's stretching a weekend programming project into something that it wasn't is a lie. It's just not a fabricated out of nothing kind of lie. There are lots of ways of lying. Just look to the kings and queens of lying, lawyers and politicians. A favored approach is to sprinkle the lie with a bit of truth, then stretch that truth beyond all recognition. They might not have fabricated something out of nothing, but it's still a lie.

I occasionally interview potential employees. Shortly afterwards, management and everyone who was involved get together to discuss the candidate. This meeting includes the people who interviewed the candidate, those who gave demos to the candidate, even those who went out to lunch with the candidate. This post-interview meeting is very typical across many companies, and we do look for potential problems. Lying is a big problem. Suppose even one person detected that that claimed experience in programming and statistics was a merely weekend project to learn how to program and how to do statistics. That's a "Whoa" kind of problem, one that makes everyone involved rethink what they learned of the candidate.You might not look on this excessive stretching of the truth as a lie, but the potential employer does see it as a lie. Don't embellish.
 
  • #51
D H said:
Floid's stretching a weekend programming project into something that it wasn't is a lie.

He never suggested any such thing. You're misrepresenting what he said.
 
  • #52
Floid said:
Don't lie, but emphasize the strong points and don't mention the weak points unless they specifically ask.

My emphasis. That's pretty clear.
 
  • #53
Locrian said:
My emphasis. That's pretty clear.

Here's how I read what Floid said, this time with my emphasis, comments in parentheses mine:
Floid said:
3.) Spin and hype. Don't lie[/size], but emphasize the strong points and don't mention the weak points unless they specifically ask. You didn't do a weekend programming project, you created a program that performed statistical analysis on a database of historical stock data. And you didn't do it to learn to program, you did because you didn't like the tools available for free on the internet or because you thought you had some novel approach to stock analysis.
In other words, Don't lie[/size] (wink, wink) but do stretch the truth beyond the breaking point. That's a lie. You might not see it as such, but a potential employer will. And they will not hire you. 93% of managers do not hire a candidate if they think the candidate lied. http://www.careerbuilder.com/share/...ail.aspx?id=pr330&sd=10/17/2006&ed=12/31/2006.

Everyone embellishes to some extent. This is beyond embellishment. It is a lie. You might not look upon this kind of "spinning and hyping" as being a lie, but potential employers will see it as one. The odds are very much against the company hiring you if the interviewer does see it as a lie. I see the example at hand as a lie, and I have interpreted this kind of ultra-embellishment as a lie with candidates I have interviewed. And we did not hire those candidates.
 
  • #54
I think the problem is with my use of the term "weekend project" which I was using more as a figure of speech indicating a project you did on your own and not for profit than to denote the actual time investment you had in the project.

If you look at two ideas I gave for sample projects both would actually take weeks of work to produce:

Examples:
Write a program that gets historical stock data from the internet and stores it into a SQL database. Then write a program that pulls it out of the SQL database and performs some kind of basic analysis on it. Make it variable so you can examine stock or group of stocks starting at any date, for any window length, or find any stock whose price or volume deviated more than 1 STD in a certain length of time, etc. ... Throw a GUI on it and plot if if you want GUI or maybe openGL development experience.
or
If you want something more mathematical, write a set of libraries using various numerical techniques to solve ODEs or PDEs. Figure out a way to use them and compare their results, processing efficiency, etc. Even better, compare the results with different compiler options or between different compilers/programming languages.
If someone did a reasonably good job at them then I would say they have at least an entry level understanding of programming and whatever tools they used to do them in. If you think someone who completed those projects is lying if they said they had a entry level understanding of the programming language/tools they used then we have a very different expectation level on what an entry level understanding is...
 
Last edited:
  • #55
If you want something more mathematical, write a set of libraries using various numerical techniques to solve ODEs or PDEs. Figure out a way to use them and compare their results, processing efficiency, etc. Even better, compare the results with different compiler options or between different compilers/programming languages.

The one page resume rule still applies to people fresh out of college, which is the subject of this thread. When you use that much space to describe something you've done, I'm going to poke at it when I interview you. I might even do something unexpected if you really pique my interest (and you have piqued my interest with that little blurb).

What I might do is ask some of the really nasty physics/math/programming questions that I typically reserve for the best candidates. I don't ask those nasty questions because I'm trying to trip you up. Everyone stumbles a bit on these. I want to see how you frame the problem, how you stumble, how you recover, what kinds of questions you ask back at me. If you can't even start framing the problem, now that's a real problem. It means that I completely misgauged you. It might well mean that you have crossed that fatal line that distinguishes embellishment from lying. Now I'm really going to poke at your little writeup.

Every interviewer has a personal concept of truth / embellishment / lie. Even crossing from truth to embellishment is a problem for some interviewers. Crossing from embellishment to lie is a huge problem for all. That you don't think you lied is irrelevant. All that counts is whether the interviewer thinks you did. If your interviewer thinks you lied, you're toast. You will not get the job. Something to keep in mind when you are writing that resume.
 
  • #56
In some sense, it doesn't really matter how much spin and hype you apply. As soon as you say "I wrote a program that..." you've identified it as a weekend programming project. Commercial software really isn't written by anyone person any more.

I think you'd be much better off getting involved with any open source programming project. At least I know I'd be much more impressed by an applicant who had submitted code and/or bug fixes to such a project than one who only wrote a few programs on their own. Plus, this solves the problem of code samples, as you can point to the specific submissions you made.
 
  • #57
Open source projects are pretty intimidating for me. People who have been coding for years contribute to the project and I'm supposed to do something on their level? I'm just afraid my code won't be up to their standards. Yeah, I know that's all in my mind.

But in any case, where do I find some projects that would be easy to contribute to? Projects can be huge. I'd hate to spend a few weeks learning how the code works just to give up because it's too complicated for me to understand.
 
  • #58
Yes, open source projects are big and intimidating and staffed by people who have far more experience than you do. That's exactly why being able to contribute to one would be such good experience!

I don't have any specific recommendations for projects. But generally speaking, I'd suggest to try to find a smaller project that interests you and has a publicly accessible bug database. Look over the open bugs, and try to pick one that you can reproduce at home. Once you've managed to reproduce it, debug it and produce a fix!

When dealing with a large amount of strange code, keep in mind that you don't have to understand *all* of it in order to make a contribution. Don't let the size of it intimidate you.

If you think this is beyond your ability, I'd simply ask you what do you think software development is, anyway? :smile:
 
  • #59
Mistake said:
But in any case, where do I find some projects that would be easy to contribute to? Projects can be huge. I'd hate to spend a few weeks learning how the code works just to give up because it's too complicated for me to understand.

The projects you can contribute most to are probably the ones that you already use. That way, at least you know what the app is supposed to do, and you probably already have some ideas about how to improve it.

You don't have to jump in at the deep end. On almost any software project, you could start by rewriting the some of the documentation so it makes more sense (or even any sense at all!). To do that, you will have to start reading the code to find out which parts of the documentation are just "spin and hype"...

Making "simple" contributions to open source projects is still useful, because it means the "project gurus" can spend less time doing the simple stuff, and more time being gurus. And once they notice you are contributing SOMETHING regularly, your questions about harder stuff will tend to get more of their attention.
 
  • #60
AlephZero said:
The projects you can contribute most to are probably the ones that you already use. That way, at least you know what the app is supposed to do, and you probably already have some ideas about how to improve it.

You don't have to jump in at the deep end. On almost any software project, you could start by rewriting the some of the documentation so it makes more sense (or even any sense at all!). To do that, you will have to start reading the code to find out which parts of the documentation are just "spin and hype"...

Making "simple" contributions to open source projects is still useful, because it means the "project gurus" can spend less time doing the simple stuff, and more time being gurus. And once they notice you are contributing SOMETHING regularly, your questions about harder stuff will tend to get more of their attention.

This is a much better answer than mine. Documentation is something that *always* needs work and no one really wants to do!
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 18 ·
Replies
18
Views
4K
  • · Replies 30 ·
2
Replies
30
Views
10K
  • · Replies 23 ·
Replies
23
Views
7K
  • · Replies 27 ·
Replies
27
Views
3K
  • · Replies 18 ·
Replies
18
Views
3K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 37 ·
2
Replies
37
Views
9K
  • · Replies 18 ·
Replies
18
Views
6K
  • · Replies 5 ·
Replies
5
Views
4K