Learn how to be most resourceful any place, any time.
For example, a software engineer would know to pick the best design pattern for the task at hand.
If you are using Unix or Linux, learn and master vi, sed, awk, regex, perl/python, shell scripting, etc, enough to be able to automate as much of the repetitive tasks as possible. If you use an IDE, learn all there is about it. This will be boring and off-putting to begin with. But you'd see how powerful these tools are when those who have mastered them use them to delegate most of their mundane tasks to the computer.
Touch typing/typing closer to the speed of thought can be very useful. If possible, learn Colemak or Dvorak after some investigation into both, to suit your needs. Both are known to cause less strain on the hands and cause tremendous speed gains.
Design patterns, as you suggest, is an excellent topic to learn. While design patterns are heavily used in object oriented programming, the principles laid out in Code Complete are said to be useful to their readers in who work in other programming paradigms as well.
Also, The Architecture of Open Source Applications is an excellent book and freely available on the web. This book aims to show you the architectures of reputed open source software and critique the architectures. Much like what an architecture student would go through at university, says the book.