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.


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

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.

  • 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

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