views:

169

answers:

6

I've been developing with C#/ASP.NET (and now ASP.NET MVC) for several years. I'm 100% self taught, and I'd like to believe I try to do what's best practice, but...

My question is, what do you think separates self taught developers from trained professional developers? What techniques, in C#, would you consider advanced - that self taught developers may not have picked up on their own?

Update:

I love the responses so far, thank you. Here's a bit of clarification for what I was looking for.

What C# features/techniques/usage do you think that professional developers use that self-taught may not (usually self-taught go with what's easiest to learn first)?

+2  A: 

lets say,
from 100 developers, 5 are highly motivated by their passion for technology and self teach them what they think is the best thing to know.
the other 95 developers will be trained by those 5 developers and what they think that are the best techniques.

Best practices/techniques?:
IMO these are ways, to develop a software product, known to lead to a performant and maintainable system - and these ways come with the experience from the development of a real software system and not one from a training course.

// Latter edit:

//Short on topic answer
-> C# best practices in a corporate enviroment?
They use frameworks similar with CSLA http://www.lhotka.net/cslanet/ , or they make or use frameworks which has at the basis concepts like: Business Entities, Business Components or Business Objects.
More sepecific on C# -> nothing just go with the conventions :).

//Long boring answer:

-- My background
I worked with ASP.Net MVC 1.0 in a company with 170-200 employees and now I'm working in the same company but just on ASP.Net, we pretty much do ERPs and big web apps like that. I self taught myself ASP.Net MVC and when I worked on ASP.Net MVC I had to do small trainings for the other memebers in my team which didn't had experience with it.


By my logic,
A selft thaught is a developer who works on frelanching projects or in a startup.
A corporate trained developer is a person who works in a corporation with 100 - 50000 employees and does java/.net in well controlled and planned corporate enviroment.
Because even if you are self thaught, in a corporation you will end up beeing trained.

//Technology
A self thaught thinks more about the technology itself, not carring about: "will this thing be easy to maintain after 3 years, is this good for an enterprise client... and so on. The thing is that a self thaught will always teach himself the latest technology while a corporate trained developer usually is trained on the "mature technology" which is "risc free" and everybody in the corporation board thinks that this will stay here for at least 10 years...
Therefor because of that an responsible PM in a corporation will enforce their devs to use in the project an Inversion of Control Framework - one that is mature :P.
While a self thaught, because he didn't went through big projects, will be tempted to just code.
I go on the logic that a big project needs over 50 devs and that is kindoff corporationish. Remeber if you are self thaught and work in a corporation you will get trained...

//Project and scaling thinking
A corportate developer doesn't have to think, he has to know very well the flow and the practicess that are thought in the corporation.
A corporate PM will always think about scalability and to have a smooth architecture, while a self taught person should think like this: http://www.aorsi.com/wb/startups_die_for_not_having_customers_so_stop_thinking_about_how_to_scale/

//A little bit of coding practicess:


Corporation:
We want to develop X and Y, good let's build a framework around the solution, maybe something like CSLA, Business Entities or worst case Business Components, we create 3-tieers and split the project on tasks.
In a corporate enviroment you want to do this because you are always thinking about maintenance, which is kindoff interesting because you will reach the sentence -> "we need developer A, B, C, to train the newcomers about the framework" - so you still have a little bit off overhead with the training...
Self thaught developer:
Dives directly into the tehnology.


//Coding practicess are the same for both self thaught and coroporate trained:
For example in ASP.Net MVC
Keep your controlles very clean and small in size.
TDD is more and more frecvent used in corporations and by self thaught devs.

Andrei T. Ursan
Do you have any examples of C# best practices/techniques self-taught programmers may not use that trained, professional developers would?
Chad
Ok, I did an edit with my opinion :P
Andrei T. Ursan
Thanks, very thorough, much appreciated.
Chad
+2  A: 

I am also a self-taught developer, and have moved into a company that is largely made up of "qualified" developers. I don't deny that many of my colleagues are the best people I have worked with, but being self taught has also given me a drive to improve myself constantly to try and keep at their level.

From my experience, qualified developers tend to have better grasp of process. They have good structured methods of design and implementation. The qualified developers usually also have more confidence to chose and idea and stick with it, drawing on the experience from their qualification as well as their own experience. That isn't to say that being a self-taught developer is a bad thing. Self-taught developers that I have met tend to be well read, and good at trying different solutions to find the most appropriate.

As for what techniques in C# specifically a trained professional might have that a self-taught person may not, I don't think there are really any. However the trained / qualified developer may have a better understanding of things like design patterns, data structures or development methodologies, but a good self-taught developer will be able to learn these as well.

Furis
When you say "the trained / qualified developer may have a better understanding of things like design patterns, data structures or development methodologies", do you have any examples?
Chad
Often the university courses teach things like design patterns, and development methodologies. While this doesn't mean that a self taught developer hasn't learned these things, they often a) don't know where to start, or b) don't have good people that they can ask questions on these topics. It is easy to ask your lecturer what he is talking about, but for self-taught, finding the right people to answer a question you have difficulty formulating can be more difficult.
Furis
If you want a more concrete example, I can point you to some of the textbooks that the university I am doing correspondence courses through uses. The content in them is often solid, all though not in all of them.
Furis
+1  A: 

The main pattern showing up in the differences between self-taught and trained developers is around awareness of theory, technology options available and importantly relevant technology and industry standards. That's not to say a self-taught developer cannot match a trained developer, it's just a trend. Examples of each specific to C# and ASP.NET may include understanding OO concepts and how they apply in different scenarios, application of design patterns, understanding of TCP/IP and HTTP at a protocol level, and knowledge of PCI-DSS and its implications for web application development.

Alex
Through the awareness of theory, do you think there are features of C#/OO, etc... that trained, professional developers use that self-taught do not?
Chad
No, sorry, it's just a trend. I'm sure that for any given feature some self-taught developers are out there using it. What I'm saying is that there a blind spots that everyone has, so both trained and self-taught developers will have limitations. Education simply assists in making people aware that they have specific blind spots, rather than being oblivious to them until they stumble across them during or after the relevant knowledge was required.
Alex
+1  A: 

self-taughts would..

  • be self-motivated to software development.
  • be passionate about their job.
  • be not complaining.
  • have far better knowledge of how web and http works [since you asked asp.net mvc].
  • not first solve the problem, rather first find the right problem.
  • eventually become ninja-developers.
this. __curious_geek
I see a trend with the answers: self-taught = motivated and know enough to get the work done. I'm wondering though, what techniques/features of C# would a trained professional developer use that a self-taught one may not?
Chad
A: 

You can teach anyone to be trained professional developer giving to them some templates and patterns etc. but you cant teach anyone to be passion for technology and self learning. Self learning and motivation only the key to workmanship.

e.g if we compare developers with food =>

Trained professional developer - unnatural fast food (MacDonald's etc)

Self taught developers - excellent natural well cooked home food.

Now feeling the difference?

Juk
Lol, I like to analogy. ;)
Chad
Note the two are not mutually exclusive.
RedFilter
A: 

One can self teach himself programming languages, algorithms, OO principles and patterns, XP and group based developing, usability principles and testing, etc.

But it's most probable that he will only learn about programming languages.

Even in universities some people learn only about programming languages.

bortao