What programming concept / technology has improved your productivity?
I've been programming for a few years now, and since then I've learned several concepts and techniques that have made me a better programmer (i.e. OOP, MVC, regex, hashing, etc.). I also feel like I was able to learn multiple languages ββ(basic, pascal, C / C ++, lisp, prologue, python). I have greatly expanded my horizons. But since some time ago I feel like I'm not learning a new good "trick". Can you suggest some interesting concept / technique / trick that might make me return the learning flow?
a source to share
A good paradigm shift always allows you to see things differently and become a better developer. I suggest you read functional programming and maybe learn a functional language like Haskell or Scheme .
a source to share
YAGNI (you don't need this) and DTSTTCPW (do a simple thing that might work)
It's easy to waste a lot of time thinking about edge cases and find that you've implemented something completely useless. I believe a much better approach is to knock out a simple prototype and then pop and nudge it until you understand the domain well enough to create production code.
Recognize, however, that your prototype will evolve into production code, whether you like it or not. So write this with consideration.
a source to share
Learning how to use your IDE and tools. This has resulted in significant performance gains.
Examples:
- learning to use the source-level debugger
- using tools like purify / boundschecker
- FxCop
etc .. I understand that I am dating myself, but these were big steps. There are many more.
Anytime you can change the way you think about a problem, or solve a problem without canceling previous work, that's a HUGE gain. Process, tools, etc. All of these can help. Don't limit yourself to looking for silver bullet techniques to improve productivity.
Observing productive people and getting them to tell you what they are doing and why is also invaluable.
a source to share
In terms of coding, I would say design patterns and architecture patterns are always nice to look at and can help you write cleaner / better code.
For methodology, I would recommend agile development, which is great. There are many techniques and techniques (I am personally a fan of extreme programming ) and reading that can help you get engaged and improve your overall approach.
Finally, I would say learning new languages ββlike Ruby
a source to share
- Design patterns
- SCRUM process
- DiSC score (and understanding how this relates to co-development s / w)
- StackOverflow.com (of course!)
- ... other things too, I'm sure
a source to share
-
Design patterns. Learning how to break down implementation and inheritance dependencies, and interfaces (contracts) dependencies, has instead changed how I think about programming.
-
Debugging. Once I figured out how to actually step through the code and take turns examining the underlying state, it revolutionized the way I eliminate code.
-
Practice, practice: I did not understand how important it is to keep working on my skills, other than working for a relatively short time. The mistakes and decisions I make at home make me a better programmer at work and vice versa. Learning doesn't have to stop if you want to be good, and programming is no exception.
a source to share
VIM Quick Reference Card . After I started using advanced vim (macros, plugins), I stopped doing repetitive actions while coding by hand.
Plus, Scrum and working at night when no one interrupts you gave me the highest benefit.
a source to share
If you want to expand your experience in web programming, you should try and get a good descriptor in the HTTP request / response paradigm. This will make it easier to build web applications because you understand the basic structure.
(HTTP): //en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
a source to share
Learning Smalltalk helped me become more productive. It is an easy language to learn and things can be built very quickly. For amazing performance support, check out Seaside , it's the foundation for building web applications. Moreover, if you're just used to curly language, Smalltalk will make you smile too!
a source to share
Having a high level understanding, creating good abstractions with proper dependencies, is what pays off in the long run. For example, the Law of Demeter is an important guideline. I recommend also reading Eric Evan Domain Driven Development
a source to share
Code generators. They are the best at software development.
Do you want to write all your projects in asm? No, let's generate it from C ++. Or from something sitting on top of a JVM that diligently generates the necessary machine code.
Duplicating the same source code all over the place, but stuck with a language that insists on linear noise? Use macros.
Want to use lambda in a language that doesn't have them? Figure out how to spoof the anonymous name and scope of the variable and then generate the template.
None of the readily available languages ββmatch your thinking pattern, desired syntax, or even semantics? Write a compiler for a new one.
Good languages ββare good. The improved design templates are good. Emacs is amazing. But compilers are where all the power lies in our field. I suspect that the only reason they are not mentioned in any of the other answers is because we cannot imagine programming without any problems.
a source to share