What essential skills should a software developer learn?

  • Thread starter Geranimo
  • Start date
  • Tags
    Summer
In summary: It will save you a lot of time and frustration in the future.Code Complete is a highly recommended book for programming beginners. It covers a wide range of topics from style and design to managing projects and debugging.I think learning a different language, like lisp or haskell, would be a great addition to your studies this summer. Functional programming can be very useful in solving problems and is a relatively new language concept.One other suggestion I have is to learn how to use version control systems such as git. This will help you manage your code and track changes over time.
  • #1
Geranimo
19
2
Hi, I study physics with computer instead of labs, and this summer I will only be taking one course (the first prog course). I will have free time to study other things, and I want to learn things that will not be covered in my uni program. I already know c++ basics from Accelerated c++.

I thought of Qt and opengl or an opensource engine like ogre.
Are these good ideas? Do you have suggestions on what could be interesting for my future studies and personal projects? Thanks
 
Technology news on Phys.org
  • #2
First, congrats on learning C++ from Accelerated C++. This is one of the most highly recommended books on the subject.

I have kind of a curve-ball suggestion. Instead of learning a new language or two, or maybe in addition to learning them, learn to program well. Get the book _Code Complete_ by Steve McConnell. Get the Effective C++ books by Scott Meyers. Sample the other books about coding style, reducing bug count, and making your code easy to read, easy to test, easy to maintain, etc.

Many is the time I have had to follow behind somebody who learned algorithm and language features, but never the "ethical" way to apply them. It can often be very painful.
 
  • Like
Likes harborsparrow, Geranimo, Greg Bernhardt and 1 other person
  • #3
Plus one on DEvens suggestion on reading Code Complete.

Some other suggestions:
  • Learn about algorithms. The most important class a non-computer science major can take beyond the basic "can has programming?" class is "algorithms and data structures". Read "Introduction to Algorithms" by Cormen, Leiserson, Rivest, and Stein, or "Algorithms in C++" by Sedgewick.
  • Learn about version control and configuration management. Much as I dislike it (the words "hate" and "loathe" aren't strong enough), I strongly suggest you learn how to use git.
  • Learn the old-style tools of the trade of scientific programming. That would be BLAS (basic linear algebra subprograms) and the various packages such as LAPACK that are wrappers around BLAS.
  • Learn some new-style tools of the trade of scientific programming. For example, Eigen.
  • Learn a very different (but practical) language such as lisp or haskell. Functional programming will give you a new perspective on programming. The newest version of C++ (C++ 2014) introduced a number of functional programming concepts to the language.
  • Learn a very, very different language such as brainf*ck (substitute the asterisk with the appropriate vowel), which is one of many Turing tarpit languages. Here's "Hello, World!" in that language:
    Code:
    ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
  • Learn a very, very, very different language. Or more than one. It's a bit fun. This is LOLCODE:
    Code:
    HAI
    CAN HAS STDIO?
    PLZ OPEN FILE "LOLCATS.TXT"?
        AWSUM THX
            VISIBLE FILE
        O NOES
            INVISIBLE "ERROR!"
    KTHXBYE
 
Last edited:
  • Like
Likes Geranimo and fluidistic
  • #4
Thanks for your suggestions! My uni program already has algorithm in it so I think i'll focus on something else. Also, these strange languages are just for fun right? Nobody uses them seriously? :nb)
 
  • #5
h15339A65.jpg
 
  • Like
Likes Physics Beard, Geranimo and DEvens
  • #6
Geranimo said:
Thanks for your suggestions! My uni program already has algorithm in it so I think i'll focus on something else. Also, these strange languages are just for fun right? Nobody uses them seriously? :nb)

"Esoteric languages" are a bit of fun, but they are turing complete. So library support aside, you can write anything in them that you could do in any other turing complete language such as C++.

I can't really recommend something specific as I don't know your intentions but I will suggest that you learn the tools used by software developers. That means stuff like version control (i.e. github), shell scripting, how to talk to a database, and possibly some kind of dynamic language (Python?) as they're really useful for doing quick jobs.

Why?

I contribute to an advocacy group that teaches developer skills to domain programmers (http://software-carpentry.org/). For example I once met a biologist who was part of a group that shared the results of their software by emailing each other a spreadsheet which they updated and emailed to the next guy. Not only is this inefficient, it also breaks when someone misses an update. We taught them how to write the code that connects to a database, and some basic SQL (the language most databases use for queries), and enough bash (linux shell script) to automate the system, and they were much happier after that.

Anyway my #1 suggestion is that if you don't know how to use a VCS like git (github's backend), learn this NOW.
 
  • Like
Likes D H and Geranimo

Related to What essential skills should a software developer learn?

1. What are some new skills or subjects that I can learn this summer?

There are many new skills and subjects that you can learn this summer. Some popular options include coding, a new language, graphic design, public speaking, or a new instrument. You can also consider learning about a specific topic or area of interest, such as astronomy, psychology, or cooking.

2. How can I decide what to learn this summer?

When deciding what to learn this summer, it is important to consider your interests, goals, and available resources. Think about what you want to achieve or improve upon, and research potential learning opportunities that align with those goals. You can also seek advice from friends, family, or a career counselor.

3. Is it better to take an online course or attend a physical class?

This depends on your personal learning style and preferences. Online courses offer flexibility and convenience, while physical classes provide in-person interaction and a structured learning environment. Consider your needs and schedule when deciding which option is best for you.

4. How much time should I dedicate to learning this summer?

The amount of time you dedicate to learning this summer will depend on your own goals and availability. It is important to set aside enough time to make meaningful progress, but also to balance your learning with other activities and responsibilities. Consider creating a schedule or set specific goals to help manage your time effectively.

5. Are there any free resources or programs for learning this summer?

Yes, there are many free resources and programs available for learning this summer. You can find online courses, webinars, workshops, and events offered by universities, organizations, and individuals. You can also find free resources such as tutorials, podcasts, and eBooks on various topics. Some libraries also offer free access to online learning platforms.

Similar threads

  • Programming and Computer Science
Replies
16
Views
1K
  • Programming and Computer Science
Replies
1
Views
744
  • Programming and Computer Science
Replies
3
Views
1K
  • Programming and Computer Science
Replies
8
Views
1K
  • Programming and Computer Science
Replies
8
Views
911
  • Programming and Computer Science
Replies
4
Views
1K
  • Programming and Computer Science
Replies
11
Views
1K
  • Programming and Computer Science
Replies
10
Views
2K
  • STEM Academic Advising
Replies
6
Views
902
  • Programming and Computer Science
Replies
14
Views
1K
Back
Top