- General Tips =============
- Coding
- Choose editors/IDEs early and stick with them. Pro IDE: Lots of functionality you might not know exists if you do everything yourself, Con IDE: Cannot have super specialized functions, hard to learn initially, need a different IDE per language generally. (Nuclide might solve this). Pro editor (eg emacs, vim): Can do everything yourself, easier to learn the functions because you have to install or implement them yourself. Can create really complex logic. Con Editor: Takes long to set up, very annoying to debug, takes a while to get to similar productivity level as IDEs, uglier. I personally used emacs for a while but switched to IDEs now. I can fully reocmmend any JetBrains product, free for students.
- I find notetaking and comments during coding very helpful. Don't be scared to only code the high level stuff first and then add lots of TODOs with specific instructions in between. I also like Asana, Trello works too
- Focus on code quality, especially as you're learning to code. Read good code (eg from good open source projects like clang), read blogs, etc.
- Do own projects. Start small, they don't have to be amazing. They can just be something that you use. But it shows you how to set up a project, how to implement it and hopefully how to maintain them. Bonus points for making it open source)
- Use and learn linux, you'll use it a lot down the road. Yes everything will be way more complicated than in $YOUR_FAVORITE_OS for a long while, but you will be forced to learn important concepts when debugging stuff and setting up your environment.
- Learn to incorporate libraries into your projects, they will simplify a lot of tasks
- Learn a scripting language like python. I really like python, in combination with its excellent ecosystem (eg pandas, tensorflow, matplotlib, ...) you can be really productive in a short time
- Learn how to use Databases/SQL.
- Ergonomy
- Set your keyboard to english if you are not natively english. I waited too long with this and eg on the German layout it's really a pain to type the symbols needed for programming syntax. (Setting system language to english helps when googling errors)
- Invest time and money in this, you're probably young and gonna do this job for a while. Don't ruin your health because of this.
- Check online for the right distances and angles that your desk setup should have.
- Buy a good keyboard. I use the Microsoft Sculpt, it's great.
- Experts recommend taking 5-10 min breaks roughly every hour. I personally don't do this (though when you got a job this will most likely be automatically the case.)
- Try doing some sports to counteract sitting all day. Doesn't have to be much, just do what you enjoy.
- Productivity
- Uninstall all feed/social media apps from your phone (I just keep texting apps and check some feeds in my breaks. But you'll find yourself checking these feeds less and less if you do this already)
- When coding, put the phone on silent
- I recommend having one chat app where people can contact you when it's urgent, keep that one open. Close the rest/turn off notifications
- Automate as much of your workflow as possible. Even if it is not worth it in terms of time gained/lost for the current thing you're doing, it will pay off in the future.
- Misc
- https://github.com/jml/undistract-me great script
- Take a look at other shells like zsh fish etc.
- Make extensive use of bash aliases.
- Try looking on google for issues you have, eg I don't like scrolling up many pages in my editor when I did some silly C++ mistake. Turns out there's a console flag to abort after the first error. There are also scripts to coloriye compiler output, and much more. This works with surprisingly high-level stuff beyond "my code doesnt compile" but even "I dont like step X in my workflow"