As a software developer everone has his own prefered tools and of course I've also my personal favorits. I'm always curious about new things and maybe some of you are also interesting getting to know how I'm working.
My personal tools
This list is about the tools I like, it's not a recommendation just my personal favorites.There are many other ways for getting you're work done. I don't want to compare anything here, just let you know what I'm doing.
- I'm working a a Macbook Pro, 15 inches with an SSD. It's the first laptop I really like. As a professional software developer you computer is THE tool you'll use every day. So get the hardware you like, don't buy anything because it's cheap or cool. Buy the thing you like! I like the OSX cause it's a unix style operating system and I've got a great graphical interface AND a working command line.
- For Java development I'm still using Eclipse. I've got the feeling it's not the best IDE any more, but I'm working on eclipse since 2.x and a change would be really a big thing. I've learned a lot of shortcuts over time and starting a new IDE would definitly take some time to get productive again.
- My build tool of choice is maven. I personally think gradle does a much better job, but there are a lot of project out there using maven and I don't want to use different tools for every project.
- I like the small GNU tools so I've installed (macports)[https://www.macports.org/]. Macports provides build packages for maven, tomcat and lot of other useful stuff. It requires XCode and takes quite a lot of time for compiling, but using a package system for software tools makes its much easier to maintain and update my tools.
- My personal SCM system is GIT. I was one of the "late adaptors" starting in 2013 and switching everything in 2014 to git. I've used CVS (quite a long time ago) and subversion until this year. GIT was the source controll system with the hardest learning curve (and I'm still on the first quarter) but it's such powerful and userful in a day to day job. I know the are other SCM around, but the whole (ok most of the) open source world uses GIT, so get knowledge of this tool. I personal use and recommend the command line interface. It's powerful, well documented and fast. There are great UI tools (like Sourcetree) and good IDE integrations which I use from time to time (to get a quick diff) but the real power ist the command line. Start learning it.
- For simple text things (like writing this post) I use (Textmate)[http://macromates.com/]. It's a quick and fast editor which feels good for doing simple thinks like reading some code or writing some markdown stuff. I don't want to use it as an IDE but for simple thinks it's really great.
- In the last week I started learning vi. Yes thats right: vi! It's not because I like it, it's because I have to use it. And when I have to, I just want to know whats possible and what not. We're running our software mostly on linux systems, some of them operated by us, others by customers. Most of them have a minimal installation and when there is only one editor it's vi. So a want to get as productive as possbile with this tool. Sometime you cannot choose your tool but you can complain about it or start learning it.
Of course there is a lot more I could talk about, I'll add some tools here I find some time.
As pointed out before, my tool list is not a recommandation, but I've got one. Know your tools! I've met so many developers who were not confortable with their day to day working tools. Keep in mind you must do a lot of work on your day to day job and you want getting it done fast. So try get the best tools and learn everything you need as fast as possible.
- Using shortcuts is the fastest way for getting things done with an editor. So take a editor (and/or and IDE) of your choice and learn the shortcuts.
- Don't wait for your computer. Use background processes, multiple (virtual) screens or tabs to doing some other works while your computer is compiling, downloading or something else.
- Doing regular jobs with multiple files is done fastest using scripts. So learn at least basing script programming in you operating system of choice.
- Customize you're personal programs and operating system in the way you want to work. Install virtual screen, use custom shortcuts, change keyboard layout. This may take some time, but once done you're much more productive.