What are some controversial Java programming practices

What have you done most effectively to improve your programming skills?

When you program on your own it is very easy to assume that the things that seem easiest to you or that seem the most obvious are therefore the best. However, if you are in active contact with a group of knowledgeable people (especially people who are more experienced than yourself), you are likely to find many problems that you have never considered and solutions to them that you may too did not come to mind. It is far better to learn from others' experiences than to make mistakes of your own and thereby screw up an important project (yours or your employer's). If you can learn these things from your co-workers before you are ever confronted with them yourself, you can avoid many early missteps that most programmers fail to notice. It is possible to become a programmer with a junior experience but a senior understanding of software development if you pay enough attention to what other seasoned people are doing.

Probably the most useful thing was to spend a few years reading regularly (daily or at least weekly) online forums like comp.lang.c, comp.lang.c ++, and comp.lang.Java participating in forum discussions. (Most of them were on Usenet the day I actively attended forums. Now they tend to connect to certain websites and developer communities.)

In active discussion groups like these, which attract large numbers of professional developers (and especially high-level professional developers such as language writers and key library implementers), it is much easier to get a feel for which programming techniques are considered useful versus discouraged, and which programming languages ​​are , Tools and libraries are preferred or unfavorable. It is also useful to note what software engineering techniques other professionals are using, from version control systems to visual modeling languages ​​to programming methods and so on. It is also important to learn which areas are controversial. Following an in-depth debate between two seasoned developers with significantly different views can be an extremely educational experience.

You may find, after a while, that your favorite language or approach to programming is not as universally popular as you initially thought, and you may find that you are considering alternatives - that's good! That means you are starting to get more nuanced and realistic about your beliefs (rather than just adopting the latest fad) and hopefully expanding your horizons into different ways of doing things.