Ask Slashdot: Learning Dart Development?
First time accepted submitter gmikeska07 writes "I have no computer science degree, but I took a Java class in college and greatly enjoyed it. I have some experience with Javascript and have done some perl programming as well. I would like to learn Google's forthcoming Dart language. My question is in three parts:
a) Is there any chance that if I self-teach Dart, I can get a job in development without a CS degree, once companies begin using the language? b) Is it really worth installing Virtual Studio as per the dartlang docs, or should I wait for a dedicated IDE like the rumored 'Brightly'? Alternatively, are there any solid open development environments that are adding support? c) Do you know of any books that are out or on the way that I could buy? What programming series do you guys recommend? Hopefully I can learn in my spare time, and if I can't get a job in development I can at least have fun with it, and maybe make a few libraries for the Dart community!"
>Is there any chance that if I self-teach Dart, I can get a job in development without a CS degree, once companies begin using the language?
Sure, if you have ten years proven commercial experience with it.
Learn to program first. The language is irrelevant (But as a previous comment states, try to go for things that are actually in use). Knowing a specific language won't do much for you. Selling yourself as someone who knows a specific language only limits you. You had better be prepared to use any language out there, know it or not.
a) Is there any chance that if I self-teach Dart, I can get a job in development without a CS degree, once companies begin using the language?
Assuming you have a technical degree/bachelor of science I don't see why not. The biggest problem I see is going to be that I've never encountered a job where I didn't also need to know stuff about the back end and databases. I've always developed on all fronts of a project and I'm not sure where you would go to just do Dart development and not also some webservice or controller or MVC style design. And that's where you'll get blindsided is you probably aren't familiar with MVC design or database queries. Who knows though? I've interviewed a Mechanical Engineer and brought them on to do requirements back when we did waterfall.
b) Is it really worth installing Virtual Studio as per the dartlang docs, or should I wait for a dedicated IDE like the rumored 'Brightly'? Alternatively, are there any solid open development environments that are adding support?
I'm guessing from this that your best bet is this if you're a minimalist kind of person (like me) or this if you're familiar with the behemoth Eclipse. You'll probably find yourself repeating that process after filing bugs until there is a stable release though ...
c) Do you know of any books that are out or on the way that I could buy?
This language was announced in September. At some point (four or five months?) a "rough cuts" of a book will probably be available on Safari books.
What programming series do you guys recommend?
I'm partial to Pragmatic Programmer, O'Reilly and No Starch in that order. APress might be worth a mention but personally I steer clear of Packt and Wrox. I've done some reviews on this site and I think that my reviewing reflects this.
Hopefully I can learn in my spare time, and if I can't get a job in development I can at least have fun with it, and maybe make a few libraries for the Dart community!
Stay active on the dartlang.org Google group and shout out if you get stuck. Good luck and have fun!
I'm guessing you don't have any programming experience on your resume. If you really want that programming job, I'd set goals for myself to complete a project in dart on my own so that I have at least something to show a prospective employer that shows some capability and (more importantly) self-motivation.
My work here is dung.
As someone who has been a hiring manager...
If I have a choice between a person with a degree and one who is self taught, I would always choose the person with the degree. If I have the choice between no one and someone who is self taught - I will wait for another person to come along. I suspect it will be hard to get a real programming job if you are only self taught. There are a lot of elements to a computer science discipline beyond just knowing a language, and hiring managers look for those skills. Experience can also take the place of a degree, but it has to be years of experience beyond just hobby programming.
Also, if you are learning DART as a hobby program, go for it. If you are learning it as an entry into programming - go with something more mainline like Java. The jury will be out for some time regarding the success of this offshoot, and Google has certainly experimented then dropped new tech before.
Hi. I'm a young whipper snapper who would like to learn something fresh and new with almost no user base instead of using already existing solutions that do all that I'd ever need to do and have loads of documentation and already existing user base.
Alternative response: Welcome to the exciting ever changing world of software development with more tools at your disposal than you could ever hope to learn! It's great that you're interested in this brand new language. It's probably not the best to cut your teeth on if you're new to the game so be prepared for challenges in regards to lacking documentation.
And instead of acknowledging that I was foolish to try using a brand new language and expect great support, I'm going to complain to everyone I come into contact with that they don't support this new language and if they were worth anything they would support it because its by company X or uses this new paradigm Y.
You make the submitter sound like a whiny bitch ... yet all I detected in his questions were eagerness and optimism. Where did he complain? Where did demand support for this language from you? Why the hostility? You don't have to read his posts at dartlang.org you know. Christ at the end he was hoping to help build support for Dart.
Slashdot: rewards for taking an acerbic tongue to outsiders since before it was cool.
My work here is dung.
Coincidentally, there were. Last night.
If you don't have any real, considerable programming experience with existing languages, then start by picking up some well known, well supported language like Java or C#. Learn the paradigms, get familiar with design patterns and learn how to maintain a clean codebase. You could do this with Dart as well, but as has been mentioned before, Dart is new, relatively poorly documented and there's little shared experience on forums or blogs and the like.
You see, the point is that there's no real point in wanting to learn one specific language. The language is just a toolbox. The hammer in this toolbox may be slightly different to the hammer in that toolbox. Maybe one toolbox has an automatic nail gun instead of a hammer, or the other toolbox may have a sharper saw, but the concept of building a wooden shed is language transcending. Learn to build the shed and the language will be the means of getting there, not the goal itself. If you know how to build a proper shed, then making the step from C# to Dart or from C++ to JavaScript may not be that much of an issue anymore.
It's hard to slip past the HR filter without listing programming languages on your resume. Once you get to your interview then tell them how awesome you are and you don't even need a language - you can program anything!
Seconded. Learn classic algorithms and data structures. Learn how to evaluate the efficiency of algorithms and data structures so you can develop your own with some hope that the end result will fit the problem at hand.
Languages are tools and are analogous to pencils in math. Don't waste your time learning how to operate a brand new design of pencil that is so complicated that its own designers haven't yet figured out how to use it well enough to write a user manual for it. Learn what you should be writing with the pencil. Yes, it would be nice if you didn't have to sharpen it as often or if the eraser lasted forever, but ultimately it's just a writing tool and the part you need to learn is the math. The same goes for programming languages. Every language exists for a reason, that reason usually being because one or two people thought that they could do one thing better than some specific existing language. You will have absolutely no benefit from the one thing that they did better if you haven't already run into the same issue that those two people had.
If you are going to learn specific languages, do not fall into hype or trends. Have a purpose for learning a language. At the very least, learn C and Lisp. Every other language falls somewhere between those two in terms of high-level vs. low-level semantics and will offer different syntactic sugar to cushion you from the relatively low-level syntax (Lisp having very little syntax and C having only a little more) and from the computer itself. You should probably also play with a handful of the following: Perl, Python, Ruby, C++, Java, C#, Objective-C, and assembler on at least two platforms--preferably at least one of them an embedded platform with small RAM like a TI-85 calculator.
But first, learn how to program, which is entirely orthogonal to learning a language to do it in.