The field of software engineering is way too large to know it all well. It also moves to quickly for anyone to learn all the newest stuff before newer technologies take their place. The trick is to look at the lifespan of the technology and study long lived things that have and will continue to stand the test of time. Here are a few of my recommendations.
- UML - The Unified Modeling Language has been with us for nearly 10 years and continues to remain very popular today. This notation is widely understood among top developers and it does not restrict you to any specific development process.
- Design Patterns - Since GOF was first published design patterns have played a central roll in the communication of reliable and often complex designs from seasoned engineers to junior developers. As design patterns are used more often the choice of programming language can be postponed until more of the non-functional requirements are known.
- RegEx - There are countless times when you will need to use Regular Expressions to find something or modify a piece of text. Many tools like Eclipse can accept RegEx in their search expressions and languages like Perl and Java make string manipulation much easier using regular expressions.
- XHTML, CSS, JavaScript - Client side web technologies change more slowly because they are dependent upon an installed base of browsers. Users do not often upgrade at the same time so if web sites want to attract the most visitors they frequently use the oldest most ubiquitous technologies.
- XML - Historically developers have concerned themselves with saving bits by persisting all their data in various binary and often proprietary formats. Today our networks have plenty of extra bandwidth and our machines are more than powerful enough for many applications to use XML instead of older formats. XML is easy to extend, easy to read, easy to modify, and easy to produce. There are libraries for reading and writing XML available for any modern language and it is often used in mixed language environments for this very reason.
- SQL - There are many flavors of SQL, almost one for every database vendor, but the basic commands have not changed over many years. When investigating problems it is a great help if you can open a database browsing tool and select the relevant data.
A couple more could include:
- refactoring
- unit testing
- IDE usage
- aspect-oriented programming
Comment by Scott Gelb — September 9, 2005 @ 3:45 pm