Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Over the past years I learned about 14 programming languages (assembler phyton delphi qbasic c++ c# ruby perl - etc etc etc). However this was all out of my own interest, I didn't went to school for it.

Now without real education I am into a team with other programmers. We are into robotics with our work. In contrast to me they know about 2 languages and many frameworks I never had heard of before.

I don't really feel behind them, but they can surprise me and other times I can surprise them with solutions. The largest difference is that they have worked for years in the IT, while to me the programming part, is new and I enjoy it. But after the many languages I find it a bit hard to improve. Sometimes I see code (or tools) that are new to me.

I never used tools as anksvn, or did versioning or never had seen USB driver made in code, I got used to them, learned from them on projects and my colleagues. I started making money with code (without a real degree) the last 2 years.

Given that I haven't found any good YouTube channel or a book, that might improve my skills, how can I improve further?

My interests these days are C++ and C#. The point I loose interests if books start with the basics of "if then while for types objects" after 14 languages you get that.

share|improve this question

closed as primarily opinion-based by gnat, Kate Gregory, Corbin March, Dynamic, MichaelT Aug 22 '13 at 14:54

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

I think The Pragmatic Programmer: From Journeyman to Master is one very good resource at that point. As the title says, it expects a certain level of capability and helps take the next step. And it's pretty much language-agnostic (although some parts will be more relevant in some languages). –  Joachim Sauer Aug 22 '13 at 11:50
Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it. –  gnat Aug 22 '13 at 11:53
You ask the wrong question - you don't want to improve "in code", you want to improve yourself as a developer. –  Doc Brown Aug 22 '13 at 12:23
Learn the standard design patterns and their language-specific implementations. Pretty much every problem you're likely to be tasked with solving in the near future has been solved by someone else and elegantly so. C# msdn.microsoft.com/en-us/magazine/cc301852.aspx C++ en.wikibooks.org/wiki/C%2B%2B_Programming/Code/Design_Patterns –  digimunk Aug 22 '13 at 13:40
show 2 more comments

2 Answers

up vote 1 down vote accepted

To elaborate on @MainMa's answer: Sounds like you're at the point that you should cultivate a much broader perspective on software development.

  • Learn a complete development "stack".
    • Will give you a point of reference as you run into other unfamiliar tools, frameworks, etc.
    • Development IDE
    • Unit Testing
      • i.e. a testing framework like NUnit (C#), JUnit (Java), etc.
    • software version control
      • learn a distributed model tool - Git, Mercurial
    • Continuous Integration
      • i.e. checking-in code automatically triggers ALL the tests.
      • The application is built every time, as part of the above
      • a tool like CruiseControl
      • scripting to make it "continuous" - Ant
  • Understand Functional programming paradigm
    • The formalisms of functional are becoming very main stream today.
    • C# evolution is clearly supporting functional programming
    • It is different from conventional OO thinking but is not mutually exclusive
    • IMHO, can help OO code:
      • reducing side effects - bugs
      • Adds flexibility to your software design
  • Develop at least a "conversational understanding" of
    • Agile, Test Driven Development, Behavior Driven Development, Functional Programming, Software as a service, Unit Testing, continuous integration, specific design patterns, ...
  • Focus study on architecture, design, design patterns
    • Learn to recognize these patterns in code. Practice, practice ...
    • Design needs drives pattern use. Don't force your code/design to fit into the pattern du jour
  • Object Oriented Design
    • Think OO everywhere in your code. Most code I've seen starts out OO and then falls apart quickly in the details. IMHO too many dev'ers really do not grok OO. Excel at this and stand out from the crowd.
  • Theory to Practical
    • No magic bullets to bridge the gaps, but I emphasize actual books over youtube. You need complete, cohesive, coherent content in depth.
    • You will have to read a lot to glean the gems.
  • 2 Book every software developer should have
  • Some of the Books that particularly helped me
share|improve this answer
I voted you as answer, lots of referals to quite good books in the end, i just bought them. Besides that i subscribed to some youtube channels on my android just to keep in touch with the daily programming world, while i work on a single large project. –  user613326 Aug 26 '13 at 20:52
add comment

Knowing programming languages is one thing. Knowing how to make successful software is another.

What your colleagues may have learnt more than you is:

  • How to work in a team. This is an essential skill for most developers.

  • How to communicate. This is an essential skill for any developer.

  • Workflows and project management methods like Scrum. Just like you don't start building a house by putting bricks side by side, you don't start building a software product by writing code.

  • Methodologies, like TDD.

  • Tools, like version control. Every developer is expected to use one, and refuse to work without it.

  • etc.

There is no a single book or YouTube channel which will teach you all that. In order to move from "I can code" to "We achieved this software product for the deadline with all requirements finished and practically no bugs left", there is only way: practice, practice, practice.

share|improve this answer
there is another way: observe, observe, observe. If you see how not to do it, or course, if you see good practices being successful they both can count towards knowing how to do it right yourself. –  gbjbaanb Aug 22 '13 at 14:16
Thanks for the answer, in our team i have the better communication skill, i'm more like the team leader, while the others can be the code magicans. I see they know a lot of frameworks. And sometimes their code is deeper into C++ or c# then i was thought possible. Maybe every project has such magicans. They prefer how i create a GUI for program, they tend to prefer to code for example a specific protocol for a specifc device, while i think of usage and how the whole thing should work together. So we are a team. And then i think from your answer that i just should go on learning from my work. –  user613326 Aug 22 '13 at 15:01
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.