Substantial programming skills, and software versus programming

In summary, @StatGuy2000 suggests that a PhD student looking to enter the space industry should at least learn one of the following programming languages: C++, Fortran, Matlab, Python, or R. These languages are commonly used in applied math and software development in the space industry. The distinction between programming and developing software is that programming involves solving a specific problem with a specific language, while software development involves a more extensive process including engineering, coding, documentation, testing, and more. Learning introductory computer programming can be difficult, but gaining experience in software development is essential for success in the industry.
  • #1
symbolipoint
Homework Helper
Education Advisor
Gold Member
7,322
1,796
TL;DR Summary
A quote from one of the forum members
@StatGuy2000 said in another topic this part quoted here:
..., generally require substantially programming skills, in languages like C++, Fortran, Matlab, Python R (for statistics), etc. You don't have to necessarily develop software, but you should be comfortable in programming.
The name of the topic was "From math PhD to space industry-possible?"

The listing of what was suggested for the PhD student to learn looks like a large amount. Four different programming languages, although he did not say to what level of proficiency.

Maybe not very smart of a question but how is "develop software" not about the same as "programming"? Maybe I am misinterpreting this.

Learning "introductory computer programming" , so so very many years ago for just one-semester's course, was very difficult. There was also included about two-weeks worth of "Fortran" which I found completely impossible to learn. The bulk of the course focused on an easier language which was often suitable for most people who did not really intend on focusing in on computerSci. (main language being used was BASIC.) So the one semester course was far too much for me; and @StatGuy2000, suggests the person there to maybe should learn C++, Fortran, Matlab, Python, R,... so I really wonder how long should that PhD person spend in months or years to become competent in programming for all those languages? I was IN COURSEWORK to learn computer programming, and I could not have done any kind of programming if I were not enrolled and attending the course.

(There is actually a little more to this about my own computer science/programming difficulties but I will leave off with what I just said, for now.)
 
Technology news on Phys.org
  • #2
In programming, there’s always been a distinction of those who write applications and those who write libraries or middleware. Writing libraries and middleware requires more experience and skill.

With the advent of OO based languages, the distinction became application programmers vs class/framework programmers. Application programmers would use OO techniques in their code and classes from frameworks but didn’t write the frameworks as it takes an additional level of OO understanding to do right.
 
  • #3
I can only think that the distinction might be between actually doing the programming versus reviewing/managing/ involvement with programming efforts.
 
  • #4
symbolipoint said:
...how is "develop software" not about the same as "programming"?
Software development is a far more extensive process which involves a list of pre-existing requirements, lot of engineering, some codemaking, documentation, lot of testing, possibly: validating.
Programming - well, that's supposed to give you something what mostly works. Requirements are up to you.
 
  • #5
symbolipoint said:
Maybe not very smart of a question but how is "develop software" not about the same as "programming"?
Knowing how to program means you have a knowledge of the programming language, and have written standalone programs with it. Writing software is basically gaining experience.

I know programming in Android, and have written software too. The first is the basics, the second is an addition to my experience. When you write software, you have to keep in mind all the things that a user can do. You have to prevent/handle the situations that you do not want to occur in your software. This experience is something that you can never get by writing standalone programs.
 
  • #6
To respond to the questions posed by @symbolipoint, there were a number of good responses. Let me add that software development is a far more involved process than just programming. Programming involves essentially solving a specific problem algorithmically using a specific computer language -- whether that would be in C++, Java, Python, etc. -- which can be standalone and not used for anything beyond your particular application.

Software development goes far beyond this to develop software products, applications, or services that can be deployed widely by a broader class of people. Think, for example, about developing operating systems, or developing a word processor. Software development typically involves large teams of software engineers/developers/coders, involves software testing, formal verification using mathematical methods, modular software, and many other methods. Programming is only the bare minimum.

To use a particular example, back when I was in university I had worked as an intern for a software development company, and my responsibility was to develop specific modules of code for testing purposes (this was going back over 25 years ago, so the details are a little foggy). This work was for software development.

My current work, as a statistician, is to write some specific code in SAS or R to analyze data for clinical trials. That's more basic programming.
 
Last edited:
  • Like
Likes FactChecker, .Scott and symbolipoint
  • #7
symbolipoint said:
Learning "introductory computer programming" , so so very many years ago for just one-semester's course, was very difficult. There was also included about two-weeks worth of "Fortran" which I found completely impossible to learn. The bulk of the course focused on an easier language which was often suitable for most people who did not really intend on focusing in on computerSci. (main language being used was BASIC.) So the one semester course was far too much for me; and @StatGuy2000, suggests the person there to maybe should learn C++, Fortran, Matlab, Python, R,... so I really wonder how long should that PhD person spend in months or years to become competent in programming for all those languages? I was IN COURSEWORK to learn computer programming, and I could not have done any kind of programming if I were not enrolled and attending the course.

(There is actually a little more to this about my own computer science/programming difficulties but I will leave off with what I just said, for now.)
Let me clarify a few points here.

I did not suggest that the person I was addressing in the other thread learn to program all of the programming languages I've bolded above. I suggested that the person pursing their PhD in math learn at least one of those languages to start off with. And the languages I've listed are those most used in areas related to applied math, which is why I suggested those specific languages.

Learning one computer programming language can be a potential challenge, but it is certainly doable. Many have done it -- there are online platforms like Coursera or EdX that offer plenty of courses in programming. And presumably the PhD student has access to courses from the computer science department of their university as well. And the more a person practices programming, the more the individual improves.

I should also note that once someone has learned to become proficient in one programming language, learning other programming languages becomes much easier.

[As an aside, I should note that I am proficient myself in only a couple of programming languages -- R and SAS primarily, with some background in C and Matlab, and am currently studying Python. But for my purposes at my work, that is all that I need.]
 
Last edited:
  • Like
Likes symbolipoint and berkeman
  • #8
There really is a huge difference between "coding" and "development".
Using a programming language in the same way you would use a calculator or a spreadsheet is coding.

Creating a product for others is a much, much broader game. For starters, there is a degree of requirements development and communication that is exceptionally detailed - but as a matter of practicality, it can only be that detailed on the developers side. These requirements will often involve IEEE, ISO, MISRA, or other standards that are stated explicitly or implied. The code needs to be tested against the requirements to a level of rigor proportional to the consequences of error. The software needs to be deployed with user documentation and the code base (along with documentation, build files, descriptions of the development environment, etc.) needs to be preserved in a way that will permit maintenance (bug fixes and enhancements).
 
  • Like
Likes Svein, FactChecker, berkeman and 1 other person
  • #9
If you have a math PhD, you may have skills that you use in industry, where you are the user of your own code. You make the programs to your own specifications and can make any changes that you need. Those programs might be single-use, throw-away programs. That is vastly different from developing programs for delivery to a user community that only wants to use the programs in a specified way and will not modify them. There is a lot more to learn for delivering programs to others.
In either case, you might need to learn source code management and documentation so that you can tell others in a responsible way, what you did and retrieve the code for later use.
 
  • Like
Likes jedishrfu
  • #10
Years ago I wrote a reporting program in COBOL for this company stock analyst. He wasn’t a programmer and would contract internally with our group for support. I wrote in a modular fashion anticipating what he might ask for next and surprise surprise he noticed he could use the modules to write his own custom reports and thanked me profusely for this innovation. Sadly, thanks to my work our department lost a small source of income but they were happy he was happy.
 
  • Like
Likes symbolipoint and FactChecker
  • #11
jedishrfu said:
Years ago I wrote a reporting program in COBOL for this company stock analyst. He wasn’t a programmer and would contract internally with our group for support. I wrote in a modular fashion anticipating what he might ask for next and surprise surprise he noticed he could use the modules to write his own custom reports and thanked me profusely for this innovation. Sadly, thanks to my work our department lost a small source of income but they were happy he was happy.
I really enjoyed writing "starter" programs for people who were happy to modify the code for their own use. They were usually very competent programmers who were just not familiar with the language that I worked in (Perl) to make scripts. I just had to put in enough comments and do enough error checking so that they could reliably make changes. We were in the same group, so there was no loss of funding, just increased productivity. It was a great pleasure.
 
  • Like
Likes jedishrfu
  • #12
Until they find a PERL bug and then you get to figure it out. :-)
 
  • #13
jedishrfu said:
Until they find a PERL bug and then you get to figure it out. :-)
I never really had to deal with that. It is a great testimony to the people that I worked with, that they were always able to reliably make any changes they needed.
 
  • #14
My guess is that you only need to be really good at one, like C, for instance.

But most importantly, check exactly what language or tool is being used in the field you are interested in.
 
  • Like
Likes pbuk
  • #15
LucasB said:
My guess is that you only need to be really good at one, like C, for instance.
I don't agree, Being a good programmer is something very different than knowing a bunch of computer languages. A good programmer understands programming, not just languages.
 
  • Like
Likes .Scott, Tom.G and anorlunda
  • #16
Vanadium 50 said:
I don't agree, Being a good programmer is something very different than knowing a bunch of computer languages. A good programmer understands programming, not just languages.
I agree. Also, a great programmer in his/her prime can easily pick up a new language by just reading a book.
 
  • Like
  • Skeptical
Likes jedishrfu, symbolipoint and .Scott
  • #17
Im with you guys since I'm already a great programmer.

It comes with being a Robby the Robot derivative.
 
  • Haha
  • Skeptical
Likes symbolipoint, FactChecker and anorlunda

Related to Substantial programming skills, and software versus programming

1. What are substantial programming skills?

Substantial programming skills refer to a high level of proficiency in a programming language or multiple programming languages. This includes a deep understanding of programming concepts, syntax, and the ability to write efficient and effective code.

2. How are software and programming different?

Software refers to the programs, applications, and systems that are created through programming. Programming, on the other hand, is the process of writing code to instruct a computer to perform specific tasks.

3. What are the most important programming skills to have?

The most important programming skills to have include problem-solving, attention to detail, logical thinking, and the ability to learn new languages and tools. These skills are essential for creating quality and efficient code.

4. How can I improve my programming skills?

One of the best ways to improve programming skills is through practice and hands-on experience. This can include working on personal projects, participating in coding challenges, or collaborating with others on coding projects. Additionally, seeking out resources such as online tutorials, courses, and books can also help enhance programming skills.

5. Why are programming skills important in today's world?

In today's increasingly digital world, programming skills are in high demand. They allow individuals to create innovative solutions, automate tasks, and develop new technologies. Additionally, programming skills can lead to lucrative career opportunities in various industries such as software development, data science, and artificial intelligence.

Similar threads

  • Programming and Computer Science
Replies
8
Views
930
  • Programming and Computer Science
Replies
3
Views
1K
  • Programming and Computer Science
Replies
9
Views
1K
  • Programming and Computer Science
12
Replies
397
Views
14K
  • Programming and Computer Science
Replies
1
Views
755
  • Programming and Computer Science
Replies
9
Views
1K
  • Programming and Computer Science
Replies
6
Views
1K
  • Programming and Computer Science
Replies
11
Views
1K
  • Programming and Computer Science
Replies
8
Views
1K
  • Programming and Computer Science
Replies
2
Views
1K
Back
Top