3

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.

user613326
  • 571
  • 8
  • 19

2 Answers2

9

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.

3

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
radarbob
  • 5,833
  • 20
  • 33