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?

-2


a source to share


19 replies


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 .



+3


a source


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.

+3


a source


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.

+2


a source


To be honest, using and learning a great framework like .NET has really improved my productivity.

I am often surprised that people are ready to invent due to their ignorance that this same function already exists within the framework.

+2


a source


AGILE and especially Test Driven Development. The best thing that can happen to software development since the invention of object-oriented design.

+1


a source


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

+1


a source


  • Design patterns
  • SCRUM process
  • DiSC score (and understanding how this relates to co-development s / w)
  • StackOverflow.com (of course!)
  • Google
  • ... other things too, I'm sure
+1


a source


  • 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.

+1


a source


If I had to choose just one, I'd say Test-Driven Design, otherwise TDD: write unit tests (and make sure they fail) before you add features incrementally.

+1


a source


Try to learn to see things from the user's perspective. For instance:

  • learn how to write meaningful error messages
  • learn how to build usable applications.
  • learn some basic speed optimization techniques.

Remember, the user sees your application, not your code.

+1


a source


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.

+1


a source


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

+1


a source


I would look at some of the newer languages ​​that combine OO and functional elements like C # or Scala.

0


a source


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!

0


a source


The following paradigms helped me in the following order:

1) bottom-up programming 2) top-down programming (C, Pascal) 3) object-oriented programming (Smalltalk, Java) 4) functional programming (lisp, Mathematica)

with some logic programming thrown in (prologue).

0


a source


nPlace your hands down. The fact that I don't need to write database functionality for my business objects is very helpful and time-saving.

0


a source


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

0


a source


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.

0


a source


Copy / paste method

-1


a source







All Articles