I don’t want to give full explanations here, it’s just a set of hints and enrty points to get you started.
- Use english language, because it’s the language of the international community. There is more useful stuff out there in english than in any other language.
- Google is your friend! Have a question? Try googling it!
There are many links in this document. Follow them and read, read, read …
Open Source Software
Consider using and contributing to Open Source Software, get to know about common licenses.
Things around the actual programming
Programs are made of code, text you write. To keep track of your development and to share the work with others, you need some tools to you manage the code, its documentation and other resources.
To be able to write programs, you need a computer with an OS and some software installed. Linux is ideal for programming. I recommend to use Ubuntu, it’s easy to setup and very common with a great community. Ubuntu 18.04 LTS, the new long term support version was released recently. Upgrade!
When programming and using Linux you need to get accustomed with the command line interface.
Google for more and just try stuff and experiment with it.
This is another must-know. Secure Shell is the workhorse for secure remote access to servers. When working with Linux, code and servers you will need this. SSH is secure and very powerful.
common Linux tools
Here I mention some common Linux tools you will stumble upon sooner or later. They are useful!
man- manpages, the built-in documentation, also available online http://manpages.ubuntu.com/
rsync- synchronize files/directories locally or over the network https://help.ubuntu.com/community/rsync
apt- Debian’s package manager, use it (un)install software https://help.ubuntu.com/lts/serverguide/apt.html
sudo- run commands as root
gpg- encryption and digital signing https://www.gnupg.org/
Backup your work and your workspace, it might get lost, forever!
Document what you did! This helps you to understand what you did when you come back to it later and it help other to understand what you so your code can reused. It allows you to work together with other people.
Markdown is a lightweight markup language with plain text formatting syntax.
This document is written in markdown. I recommend it for documentation because of its simplicity. It is widly adopted in the community.
To keep track of the changes in you code, you should consider using a version control system.
I highly recommend GIT for this purpose. It’s the best out there. It is used to manage the source of the Linux kernel.
Github is a web based hosting service for GIT repositories. It can be used for free.
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development. At the beginning a simple text editor is sufficient, but features like code completion, syntax highlighting and GIT integration make the life much easier. There are many IDEs, for Python atom is quite good.
- there are more https://www.datacamp.com/community/tutorials/data-science-python-ide
Learn how to write programs - Python
Ther are many programming lanuages. Python is probably a good choice to start with. It’s clean, easy, feature rich (batteries included), up to date and has a very big and active community. Python is not a toy, it is used in production system and by scientists all over the world.
Use Python 3, don’t bother to start learing Python 2. https://pythonclock.org/
This to read regarding Python
Sooner or later you will need some functionality that is not part of the Python language or the standard library. You need a 3dr party library. Luckily there are many libraries for all kinds of purposes for the Python language. Just search Google or have a look at
Some userful Python libs (some are more that just a lib) and programs
- http://www.sphinx-doc.org/ - documentation tool, very powerful
PIP is a package manager for Python, use it to install libraries. To keep per project dependencies, you should use pipenv.
You may also have a look at Pyton stuff.