How long did it take you all to get proficient with C#?
Syntax? Probably a couple of weeks. Knowing it well and the contents of the various libraries and such, I’ll go with 6 months. But I started with it before Unity existed, and I’ve been writing code for 36 years.
4-5 years. First few years I got good at the API and how things work in Unity. Then I realized, in order to make larger games I needed to understand modularity, and when to use interfaces, events, state machines and the like. Now my current game, all parts are usable in other games without conflict.
For general purpose software: years.
For Unity: After a couple of months of doing tutorials, making the learn section games you begin to realize: - you almost always repeat the same stuff over and over and over again out side of AI, it’s generally all the same fundamental workflows, so you begin to catch on pretty quickly… AI is truly the only thing that I consider never the same repeated process as each AI, each ai behavior, etc is always different.
But general mechanics for your player, menu’s, weapons, health, etc is pretty much always the same thing over and over again in terms of how things work.
This is from my experience at least.
My major language progression over nearly 35 years went like this: Fortran > C > C++ and Smalltalk > Java > C# with sidebar sojourns into a lot of other languages … so only a few weeks. C# is very closely modeled after Java (after Microsoft’s failed attempt to co-opt Java with J++) so most of that time was just figuring out the differences between common data containers and learning to .NET APIs for different type of desktop application development, database interaction, etc. (for work).
In the context of Unity, I have been using Unity itself since 2009. I started out using Unity Script and then switched to C# about 5 years ago. That switch was trivial.
I’ll let you know when I get there :(.
I’m a few month’s into it and feel pretty good about the basic stuff, but what I’ve dealt with in intermediate to advanced stuff still confuses me.
If you’re talking about “C# in Unity”…before using unity my primary langauge was C++.
So I think it was roughly a few weeks of swearing and finding all the things that work in C++ but are not supported in C# (plus getting familiar with Scripting Reference). I also discovered few bits of pieces of information at later date.
All my life. Just when I think I’m done, I get out of bed and learn something new.
I started with one year of HS CS and 2 years college-level classes from my sophomore and junior year in HS, so my experience will differ slightly from your own, perhaps.
First language VB, second C++, third GML, then C#
C# took me 3 years to learn, milling around, experimenting. The hardest part for me was understanding objects, instances, memory, instantiation, serialization, etc. Linq is still weird to me.
*We didn’t learn object oriented programming in C++ by the way, in school. It’s not fun to learn without a teacher.
After 3 years of C# development (back end) and 2 years of Unity developing i got “enough” level for architect and finish first real game. But i think more important thing is not a time, but number of finished and failed projects. When you facing with real challenges you better understand what all books about ![]()
A few weeks.
In fairness I had Basic, Visual Basic, ladder logic and some Java under my belt. I also had bits and pieces of MatLab and Simulink. Plus a smattering of electronics, pneumatics, and general process automation.
My route into programming has been somewhat circuitous. But for the most part I can make any language work for me now.
Maybe it’s time to learn Haskell or Scala? ![]()
I will if I have a project that comes up in them. I tend to find studying languages for their own sake to be incredibally difficult. However studying languages to solve a particular problem is fairly straight forward.
In general I haven’t yet encountered a use case for functional programming. So I haven’t bothered to learn it. Most of my use cases tend to be much closer to the wire.
(As in really, really close to the wire. Like troubleshooting communications because rats chewed through a wire close to the wire.)
That was the key
Yeah, actually I haven’t yet wrapped my head around FP myself too. I just realized that migrating to a new language is easy, but it’s much more difficult to a new paradigm, which I learned when I moved to Scala.
I saw that you have a very similar background as mine (VB → Java → C#, not debug… er deratting the wires), so I thought you might experience the same thing if you try languages with a different paradigm.
Still learning, always learning. Every project I learn something new. But once you have the fundamentals down for any C/OOP language getting the syntax is not very long, but all the things it can do and how to get it to do it. That’s the never ending fun of it.
Yeah, Java was where I first encountered and learned OOP concepts. I didn’t spend long in Java, but long enough to figure out the difference between a class and an instance.
It helps that OOP is fairly analogous to process engineering. But I wouldn’t suggest a degree in chemical engineering is an efficient way to approach programming.
I think that Prolog will be much more useful for experiencing a “different perspective”.
The key to it all, if you come to every project trying to learn something you will keep getting better. Dosnt matter if it’s something like programming or its playing the guitar there is always more to learn.