What is considered respectable coding abilities in industry.

In summary, the conversation discusses advice for an incoming PhD student on programming skills to focus on while in grad school, particularly in the field of physics. Suggestions include popular numerical languages and libraries such as R, MATLAB, Eigen, ALGLIB, numPy, and JBLAS. Other helpful skills mentioned include using a text editor, source control, productivity tools, LaTeX, building GUIs, and learning C++ for its employability. Ultimately, the importance of programming skills is emphasized over the specific language used.
  • #1
nukapprentice
69
0
I will be an incoming PhD student this fall. I was wondering what programming skills I should pick up while a grad student. I was also wondering if someone could post an example code of what is considered good in industry.
 
Physics news on Phys.org
  • #2
This is too disambiguous of a question... (1) Which field are you doing your PhD in, physics? (2) Is there a specific programming language or programming paradigm that you are looking to focus on. Object-oriented? Functional? Or a numerical language like R or MATLAB? (3) What programming skills are you looking to develop? Algorithms? Design patterns? Compilers? Optimization? Project management?

For physics, I guess I would look at numerical languages (R, MATLAB) for starters. Each has its community with plenty of rated file uploads. I would also take a look at numerical libraries such as:

Eigen (C++ 98): http://eigen.tuxfamily.org/index.php?title=Main_Page
ALGLIB (C#): http://www.alglib.net/
numPy (Python): http://sourceforge.net/projects/numpy/files/NumPy/
JBLAS (Java): https://github.com/mikiobraun/jblas

Some obvious examples of project management are:

The Linux kernel: https://www.kernel.org/ or https://github.com/torvalds/linux
Mozilla source: https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Downloading_Source_Archives
Chromium: http://www.ohloh.net/p/chrome
 
Last edited by a moderator:
  • #3
Yeah, sorry I wasn't very specific in my first post. Actually I will be doing a PhD in Energy Science with focus on nuclear materials. I guess I was looking for advice with regards to numerical languages for algorithms, design patterns and optimization. Thanks meanrev for the pages and I will be sure to check them out.
 
  • #4
You should learn to program. That's an entirely different thing than knowing a language.
 
  • #5
It helps if you can find out what languages and libraries are popular in your department. Choosing a popular language increases the number of people you can ask for help, but it is not essential. If you can solve some numerical problems in your favorite language, that's an excellent start. Examples: diagonalize a square matrix, chi-squared test the fit of a function to some data points, integrate an ordinary differential equation. If I had known how to do those things when I started grad school, my classes would have been 1000% easier.
meanrev said:
For physics, I guess I would look at numerical languages (R, MATLAB) for starters. Each has its community with plenty of rated file uploads. I would also take a look at numerical libraries such as:

Eigen (C++ 98): http://eigen.tuxfamily.org/index.php?title=Main_Page
ALGLIB (C#): http://www.alglib.net/
numPy (Python): http://sourceforge.net/projects/numpy/files/NumPy/
JBLAS (Java): https://github.com/mikiobraun/jblas
I think these are good suggestions. At my department, Python/NumPy/SciPy and Maple are popular. I like SciPy but hate Maple and use MATLAB and Mathematica instead. I really like Eigen, but I think I'm the only person at my university who has ever used it!

As for what's considered respectable outside of academia... I've been in grad school for the last several years, so I disqualify myself from answering.
 
  • #6
Yeah, sorry I wasn't very specific in my first post. Actually I will be doing a PhD in Energy Science with focus on nuclear materials. I guess I was looking for advice with regards to numerical languages for algorithms, design patterns and optimization. Thanks meanrev for the pages and I will be sure to check them out.

No problem, I wasn't calling for an apology!

I'm not familiar with energy science or nuclear materials, but at the end of the day, it's most likely that you will end up using the most popular language at your department for most of the time (I'm guessing it's probably going to be MATLAB, lots of numerical analysis and BVPs). I'd take a look at old syllabuses of computational courses you're probably going to take, to get an idea of what's popular.

Thereafter, I second both Vanadium 50 and NegativeDept's advices. In the long run, I would rather focus on better programming skills than better domain-specific knowledge of a particular language. It's like an investment with better long-term yield.

This means things like:
- Learning a text editor like Vim, Emacs - and remember to tune your editor to your preferences, e.g. low contrast color scheme.
- Learning to use source control (pulling any of the open source projects that I mentioned is a way to start)
- Learning productivity tools and ideas such as in The Productive Programmer (Ford)
- Equipping yourself with a couple of power tools in http://www.hanselman.com/blog/Scott...DeveloperAndPowerUsersToolListForWindows.aspx
- Learning LaTeX (this has been the single biggest time saver for me)
- Building GUIs

NegativeDept said:
I think these are good suggestions. At my department, Python/NumPy/SciPy and Maple are popular. I like SciPy but hate Maple and use MATLAB and Mathematica instead. I really like Eigen, but I think I'm the only person at my university who has ever used it!

I hate Maple. I think MATLAB has a similar substitute called MuPAD in the symbolic toolbox, which I've used for linear programming. Good to hear about Eigen.

As for what's considered respectable outside of academia... I've been in grad school for the last several years, so I disqualify myself from answering.

This is a good point, I can't say I'm familiar with what goes on outside of academia.

Lastly, deciding on a language is probably least important as Vanadium 50 said, but it's oddly the one question you will keep asking yourself each day as you get better (at least I do; every time I have to use a Python script to generate a C++ source and a shell script to compile it, interop Fortran and C#, manipulate strings in MATLAB etc.). C++ is probably the most employable skill in my industry, and probably most others. I generally think that someone who can program in C++ will be indifferent to programming in other languages. There are plenty of guys who can write in Java, Objective-C, Python etc., because these are relatively easy to get into, so the competition is tougher. In contrast, very few people know low-level optimizations and scaling a large number of processes across nodes.
 
  • #7
Thank you so much for the help guys, especially meanrev! This is great, I now have a good starting point to get my *** in gear.
 
  • #8
You're welcome.
 

What is considered respectable coding abilities in industry?

Respectable coding abilities in industry refer to a set of skills and knowledge that are valued and sought after by employers and peers in the coding field. These abilities typically include proficiency in programming languages, problem-solving skills, attention to detail, and the ability to write efficient and maintainable code.

What programming languages should I be proficient in?

The specific programming languages that are considered respectable may vary depending on the industry and company. However, some of the most commonly used and in-demand languages include Java, Python, C++, JavaScript, and SQL. It is important to have a strong foundation in at least one language and be open to learning new ones as needed.

What are some key problem-solving skills that are valued in coding?

Problem-solving is a crucial aspect of coding and is highly valued in the industry. Some key skills that are important for effective problem-solving include critical thinking, attention to detail, creativity, and the ability to break down complex problems into smaller, manageable parts. It is also important to be able to communicate and collaborate with others to find solutions.

Why is attention to detail important in coding?

Coding requires precision and accuracy, and even small mistakes can have significant impacts on the functionality and usability of a program. Therefore, having strong attention to detail is crucial for writing clean, efficient, and error-free code. It also helps with debugging and maintaining code in the long run.

How can I improve my coding abilities?

Improving coding abilities takes time, practice, and dedication. Some ways to enhance your skills include learning from experienced programmers, participating in coding challenges and competitions, working on personal projects, and continuously seeking new knowledge and techniques. It is also important to stay updated on industry trends and developments.

Similar threads

  • STEM Career Guidance
2
Replies
37
Views
6K
  • STEM Career Guidance
Replies
27
Views
1K
  • STEM Career Guidance
Replies
5
Views
831
  • STEM Career Guidance
Replies
3
Views
1K
  • STEM Career Guidance
Replies
12
Views
2K
  • STEM Career Guidance
Replies
3
Views
2K
Replies
7
Views
2K
  • STEM Career Guidance
Replies
22
Views
917
  • STEM Career Guidance
2
Replies
35
Views
8K
  • STEM Career Guidance
Replies
8
Views
2K
Back
Top