JavaRush /Java Blog /Random EN /Coffee Break #19: 9 Tools to Improve Developer Productivi...

Coffee Break #19: 9 Tools to Improve Developer Productivity. What to do if you are a mediocre coder?

Published in the Random EN group

9 Great Tools to Improve Developer Productivity

Source: DZone Writing code is a complex and responsible job, which requires not only knowledge of theory, but also possession of a number of professional skills. And of course, this work takes a lot of time. If a programmer organizes his work process incorrectly, this leads to a natural decrease in productivity, missed deadlines, and deterioration in code quality. Fortunately, there are several ways to overcome this problem. One of them is the use of special tools in work that improve productivity. I hope that the small list that I have selected will make your work faster and more efficient. Coffee Break #19: 9 Tools to Improve Developer Productivity.  What to do if you are a mediocre coder?  - 1ProofHub is a simple task scheduler. With it, you can prioritize, assign and add tasks, check documents and files, set a start and end date for a task, create a custom workflow, share documents, and set a timer in a schedule. ProofHub has a mobile app for Android and iOS. Sublime Text is one of the most powerful text editors for developers that helps you perform almost any text manipulation. It is useful for many simple tasks, such as maintaining to-do lists, editing configuration files, or writing batch scripts. Google Keep is a useful notes service from Google. If you need stickers to remind you of important tasks on your desktop, use Google Keep for that. Add this extension to Chrome and you can attach notes, add tags, add collaborators, list tasks with bullets, or add reminders for the most important things on the fly. Google Keep can also be used in Google Docs - just drag and drop your notes into documents. MusicForProgramming is a handy little online tool with a long list of instrumental music that will allow you to create a comfort zone even while coding. This is an interesting music generator where you can choose music that suits your work. Just put on your headphones, choose one of the 52 available playlists and listen. LeanKit is a tool that gives all team members and project stakeholders a common understanding of the work. It uses general principles and methodologies of work within the company. You can visualize your task to understand it better and work more efficiently. With LeanKit, team members can post virtual notes or error messages that need to be reviewed. Silver Searcher is one of the most effective developer productivity tools because it saves time searching for code elements. When displaying search results, this tool is much faster than similar programs. HeySpace- Innovative task management software with chat functionality. Send messages to your team to manage tasks, keep meetings to a minimum, and keep everyone in the loop. It's a combination of Slack and Trello. On HeySpace you can easily turn part of your conversation into a task. Each task can be customized: you can set dates, assign responsible people, add tags, descriptions, files and comment on them. You can also share files. Habitica is one of the best productivity tools that makes work feel like play. Habitica takes you to the old pixel world of gaming platforms. It treats your daily workload like an RPG game where you can level up by completing a specific task. For each goal achieved, points are awarded. The more there are, the higher the chances that your character will survive. WakaTime is a coding productivity tracker with a set of text editor plugins. This tool monitors your work as you code. The program provides you with metrics for the time you spent on a specific file, creates and sends daily or weekly reports by email.

I'm a mediocre developer (how to deal with it)

Source: Dev.to I personally know very talented developers who are able to create great software with little or no effort. Thanks to such gifted individuals, the IT industry is thriving. But the sad truth is that not every developer is a coding ninja/guru/star. We're talking about people like me. I'm a mediocre programmer. This article will show you how to survive in the industry if you are not a genius. Coffee Break #19: 9 Tools to Improve Developer Productivity.  What to do if you are a mediocre coder?  - 2

I Google the simplest things all the time.

I just don't remember a lot of things. For example, functions and methods from standard libraries, package names, boilerplate code, and so on. I have to google it, every day. I also use code from old projects. Sometimes I even copy answers from StackOverflow or GitHub. Yes, it actually works - programming on StackOverflow (StackOverflow Driven Development). I'm not the only one. Lots of programmers do the same. There is a popular Twitter thread started by the creator of Ruby on Rails: “But why is this necessarily a bad thing? There are several disadvantages to this approach:
  • This leads to you copying bad decisions or vulnerable code from other people.
  • This creates a special mindset: if we can’t Google something, then “Houston, we have a problem.”
  • If there is no Internet, work stops.”
I don't think this is a big problem. Copying code can even become your secret weapon. Just gradually reduce its negative impact on your work as a whole:
  1. Use an IDE for autocompletion and guessing so you don't have to Google the basics of the language.
  2. Remember where (not how) you have already solved a similar problem.
  3. All code you copy into a project must go through analysis, refactoring, and review. This way you won’t harm the project with bad code, but you will still be able to find a quick solution.

I try to keep things as simple as possible

Computers always do as they are told. It's just that sometimes they are given the wrong commands. So the main problem in development is not the computers, but the mental abilities of the developers, which are often limited. If we mediocre programmers cannot create complex abstractions, strange algorithms, huge blocks of unreadable code, then we need to stick to simple solutions. How to distinguish simple code from complex ones? You can use the WTFs/Minute method. The principle is very simple. Once you find something in the code that you don't understand, it's complicated. How to simplify it?
  1. Rewrite it to get a clearer design.
  2. Supplement it with documentation.
  3. Add comments to the most difficult parts.
How to write simple code right away?
  1. Use the correct names of variables, functions, classes.
  2. Make sure each part of your program does only one thing.
  3. It is preferable to use pure functions rather than regular ones.
  4. Choose regular functions rather than classes.
  5. Access classes only when you really need them.

I don't trust myself

Everyone can screw up the code even in the simplest tasks. For example, you may make mistakes:
  • in language;
  • in logic;
  • in software design;
  • in styles;
  • in safety;
  • WTF mistakes (my favorite).
There is no magic book “Learn to write error-free code.” And that's okay. There are bugs in any software. How to protect yourself from obvious mistakes?
  1. Write tests, lots of tests. Starting from integration tests and ending with unit tests. Run your code through CI before every pull request. This will protect you from logical errors.
  2. Use static typing. For example, with JavaScript we use flow, with Python - mypy.
  3. Use automated style checks. There are many services in each language.
  4. Use quality control. Some tools apply complex heuristics to your code to find problems (for example, this class is not needed here, the function there is too complex).
  5. Submit your code for review.
  6. Pay other people to review your code. When a developer looks at code for the first time, it's easier to spot inconsistencies and poor design decisions.

Constantly learn

There are many things to learn. If you want to write good software, you have to constantly learn. There are no shortcuts or magic tricks here. Just get better every day. In conclusion, you need to understand two important things:
  1. Problems happen to everyone. All that matters is how prepared we are for these problems.
  2. We can narrow down the number of sources of such problems to some acceptable level.
And this has nothing to do with your mental abilities or way of thinking.
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION