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!"
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. 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.
>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.
You may want to "wait and see" if Dart takes off first. (I don't think it will.)
It seems like developers are becoming increasingly skeptical of adopting Google technologies, and for good reason. Those technologies often don't take off. Also, Google tends to hype some technologies, getting a lot of developers on board, and then abandon them (or support them so badly they may as well be abandoned).
There are a lot of great technologies out there you can learn instead, that have wider industry acceptance, and are not likely to be abandoned. Dart does not offer anything special, and Google does not have a trustworthy track record.
Don't be an asshole. Doubly so when you don't understand the subject.
Dart may be the new hot turd on the block, but no one uses it, and probably no one will for some time to come, languages take time to pick up speed and mature.
If you're a decent programmer applying to a job that isn't going to suck, they won't care about what languages you know. Part of being a good programmer is learning any new language by yourself, very quickly. If you want to lean a nice easy language that is actually useful, my personal pref. is python, but perl, js, ruby, etc are all good. If you want a more mainstream language, learn java, big companies like lockheed martin and oracle do almost all their application development in java nowadays.
Also, on the topic of teaching yourself, you'll never learn to be a good programmer unless you have some need to do it to solve some problem (it can be a made-up problem). The best thing to do would be to make up something you want to build, pick a language and attack it until you have it working. Make a text-based dungeon crawler, make a console calculator, make a thing that updates your twitter every time you poop. I would highly recommend taking some classes, not so much for the programming (although it'll help), but to learn about algorithm design and computer architecture, especially if you don't want to just build websites your whole life like a chump (no offense to website builders, I do some of it too, I just hope not to forever).
At the end of the day though, if your fortunes are tied to what languages you know, you are a bad programmer and you're going to be out of a job sooner or later. If my boss asked me to learn fortran, I'd be writing some fortran by the end of the week. Once you learn a couple an get to know more about what's going on under the hood, it becomes obvious that languages are just a nice frosting over the same cake. And cake is easy to eat.
Ze Atomic Device! It iz Ztolen!
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.
This.
The CS courses I took for my degree were completely language irrelevant.
You sir, deserve teenage feet all over your lawn.
"All great wisdom is contained in .signature files"
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.
Depending upon how big your programs are, (especially if you're learning), a complex integrated IDE like Visual Studio may be overkill.
You can always use notepad++, its free, available online, and pretty lightweight.
Google is famous for its short attention span when it comes to new projects, after which Dart will be an orphan. Microsoft is famous for screwing its developer base and abandoning languages and the customers who depend on them (VB6, J#, and soon, .net) whenever some 20-something new manager gets a brainwave. I'd stick with cross platform c-form languages like java, c, c++, javascript, or even C#. The money's in languages like these, not the also-ran languages like Ruby, Python, Ocaml, etc.
Please do not read this sig. Thank you.
"You are not defined by your chosen software stack: I recently asked via Twitter what young engineers wanted to know about careers. Many asked how to know what programming language or stack to study. It doesn’t matter. There you go."
I just don't trust anything that bleeds for five days and doesn't die.
Learn any language and learn many languages. Learn SQL, NoSQL and general database design. You will get a good job. It may take a few years, but if you can do these things reasonably well (learn and use languages, use databases), you will always be able to get a job.
My one semester of C++ and networking classes at a junior college has gotten me further than my hoity-toity university Marketing Degree. But it's the fancy university degree that gets me past the HR trash can. So having a degree of any kind will help.
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?
And therein lies the rub
Learning Dart (or any other particular language) will make no difference. By the time you're hireable you should be able to learn new languages whenever you need to, over the course of a week or two. And while some companies actually care about what languages their programmers know, none of those companies are serious; you don't want to work there.
As for for IDEs vs not IDEs, just use whatever you're used to using all the time. If Dart doesn't work well with whatever your normal tools are, then it's not ready. That isn't to say you can't ever change how you develop, but you won't make that change at the exact same time you're learning a new language.
Once you've gotten a few years of software development experience under your belt, then go looking for an obscure job coding in Dart...by then it'll be a lot easier to pick up due to the maturing of tools and documentation.
Given Google's reputation for doing R&D and then trashing their research projects when they don't pan out, you'd be foolish to stake your future as a new developer on Dart. The tools are not at a point where they are usable on a real, paying job. You don't even seem to have a background where you are able to work on Dart or its future ecosystem yet. Therefore, your best and only realistic route, is to learn something else in parallel.
Pick C# or Java. Learn one of pretty well. Learn Dart and JavaScript as well. Once you learn JavaScript, you might be able to stake a claim as someone who can help debug the browser side of Dart.
My boyfriend is a complete asshole...
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!
Just learn Java that has much more documentation. Once you master Java then Dart will be a piece of cake. You can learn Scala instead of Java if you want to
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?
If Dart does become popular, you will almost certainly need to learn it in context with a number of other languages and technologies. You will be mostly useless unless you know those other things.
For example, Google is pushing Dart as a replacement for JavaScript. In that scenario, a Dart programmer would not be useful to a company unless they also knew some combination of: JavaScript, HTML, CSS, Ajax, and server-side development.
When will they learn?
Seastead this.
If there's any one solid recommendation I could ever make, ever: don't be the first to jump on a new paradigm. Until it's on version 3, it's not worth your time.
I'm the whiny bitch. And I'm whiny because I've seen all this before.
That's fine, you're free to rip apart a new language and you can bitch all you want at me or someone who's been in this field for longer than a decade. But when a new guy shows up eager to learn and in so many words you tell him to GTFO for selecting a new language that you haven't personally canonized as worthy that's where I'm going to set my foot down. He could be looking to program Visual Basic and your response would still be worse than gently guiding him toward a more fruitful endeavor.
I'm not aware of many communities that thrive on ostracizing new members (well, maybe Scientology).
Many of us have. It happens over and over and over. Computers should be a means to an end, but instead we keep making them a means to a means to a means to a means (recursion anyone?). Progress is fine, but what ends up happening in the computer industry is that we never are satisfied with the solutions we already have. People keep feeling the need to reinvent the wheel and few people work together, use existing solutions or think of the long term.
I think you're missing the importance of competing technologies and solutions. If I'm one of the suso-approved software languages, what motivation do I have to improve on multithreading? I'm already approved by the standards board as being one of the ten golden languages. It's important for languages like C++ to be threatened by Java and have Java in turn be threatened by Ruby. Why? So they continually work towards supporting what the community wants and needs. Without this who gets to determine whether we sacrifice performance for ease of maintenance? Or that the language should behave more like a functional language than an object oriented language? This is much like a market with languages competing for developers. And that's good and results in a healthy toolbox for you and I. Don't rip apart Dart unless you have some legitimate technical beef with it. So far you haven't offered anything like that. Right now it is largely unknown what its strengths and weaknesses are. You attack it as, what? Some sort of ECMAScript clone or ripoff?
Standards and languages end up more like fashion trends instead of tools. I think we'd benefit a lot more if we just identified ten or so languages that people could learn for different tasks and then because there were only ten, more people would know them, have more code reuse and better support and we'd get more done because we wouldn't be thinking all the time how to make a better language or IDE or any of the tools that you need.
This is already done in universities. I learned Scheme, Perl, PHP, C, Matlab and Java in my undergrad days. I didn't learn Processing, Clojure, Python, R or Ruby until later. Universities basically tell students what the most common languages are as they try to prepare them for the job market. Much like literary canon you're told to execute Moby Dick/Java instead of Snow Crash/Clojure. Why? Because some people decided that Moby Dick and Java are just plain better. And that's not even starting with the proprietary languages -- some that are more used today than most of what I've listed. Would C# be in your list of ten holy languages? Would Flash/Flex?
You're being a code dictator by saying what you think would improve the net efficiency of the software community. And while that might work in the short run or in a community with constrained resources, it doesn't work so well when there are millions of developers and a very long time in front of us. Why weren't new languages halted when we had Lisp, C, Fortran and Cobol? Surely at the time, those could have been argued to provide everything we need today, right?
I love my job. A new language is a new toy. Relax and tinker in your free time. Fall back on the standard powerful
My work here is dung.
According to HR, you should already have 3-4 years of experience with it NOW. Good luck.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
The purpose of Dart is fundamentally to create a language which is easier to optimize from the browser perspective against. It is taking stuff out of Javascript. So the early community are going to be people who know Javascript, but are more focused on the sorts of low level C programmers that write high performance interpreters. They are going to love having a junior level guy to test their ideas with if you hang out with them, and identify yourself as such. You will likely learn a lot from these experienced and knowledgeable developers.
What you won't learn is web development since they are into browser construction. Later on as Dart gets more mainstream it will move towards web developers. You don't know enough though to get a job doing that sort of low level stuff. That being said though, your paying job will probably come from the Javascript world. But the Dart people will help you there.
And of course being an early user of Dart might be a gateway in 5 years or so.
If you want to be cutting edge and do something cool and blog-worthy, learn Dart.
If you want to learn a useful skill and gain profitable employment, learn C# or Java. With slightly less chances of getting a job: python, perl, ruby, websphere, vb.net, c++
If you want to know what languages companies in your area are likely to hire for, take a look at the classifieds for what they're currently hiring for. That's not going to change in 6 months. It's going to change after guys like you learn whatever language they're currently using, get hired by the company, work their way up the food chain, and then convince some higher up muckity-muck that Dart is awesome or whatever. If you're thinking this plan would take years to execute on, you're right, which is why no major company will be using Dart on day one unless they're in an existing partnership with Google...
Speaking of 6 months, that's about the longest amount of time you should go without refreshing your skill set. So, if dart takes off like gangbusters, learn it in six months. Chance are, in six months, you'll be learning the latest database API your new company has decided is the one standard to end all other database APIs (at least for the next 6-12 months, or until the guy that made that decision gets canned)
Others have hit the nail on the head; don't worry too much about a specific language. Learn one now, try to get a job with it, and start learning a second one while you're interviewing! By the time you get to three or four you'll start to understand that all this programming language stuff is just a thinner or thicker veneer on top of machine code...
It's gotten to the point where I no longer even bother trying to learn a new language. I spend an hour or so trolling the documentation, try to understand where commas and semicolons and whatnot go, then I roll up my sleeves and start writing code! Sure, you'll never be writing 100% error-free guru-worthy magical the-tao-of-programming-is-my-bitch code using that strategy; but you WILL meet your bosses objectives days or weeks before the competition is even ready to work on it...
http://www.dartlang.org/docs/getting-started/editor/index-win.html
You totally missed the point of his post. He never said he wasn't excited about development or to stop learning. He said: Focus on the application/system you are building and instead of wasting time on learning a new language that CANNOT DO ANYTHING BETTER than the ones you already know. That's a waste of time.
He's saying: stop focusing on tools and focus on what you're building UNLESS the tool in question gives you an added capability. I.e. instead of learning a new hammer (that can hammer the same things and as efficiently as the old hammer), focus on the house you're building instead.
He's saying: if you want to learn something new than learn something that gives you a new capability, i.e. that allows you to do something you couldn't already do before.
And once you do learn to program, there will be more than 3 Dart programmers in the world and maybe even a book you can buy!
Agree.Programming languages do not matter. At the end of the day what counts is how much it costs to train someone to get productive with the least cost for the employer. Lower cost == better language. That is why Java is used today instead of C++.
I think that the people who are saying Dart will fail are missing the point of the language. Dart is intended to replace Javascript eventually, through native Dart interpreters in the browsers. Until then, you can still code in Dart on both the server and the browser side, and it will compile the browser side down to Javascript. That alone is a big improvement-- being able to code the client and the server in the same language. Dart will also hide from you the incompatibilities between various versions of Javascript.
The first browser that will have native Dart will be Chrome, and Google probably hopes to get a larger share of the browser market during the period of time that Dart apps run faster in Chrome than in other browsers.
I think Dart is a great idea, and, so far, well executed. It would be a joy for me to never have to deal with Javascript again.
Also, if this student is _excited_ about Dart, that is a good choice for a language for him to learn, including learning all the paradigms that he needs to.
the haters shout loud, but critic easy.
At the risk of being on the wrong side of Hanlon's razor (apparently it's double edged, but I didn't know) I have to say these kind of questions get more and more frequent, always get the same good geek / bad geek crowd splitting, and everybody loves it.
Soon enough it'll get played. Am I the only one suspicious about this one ?
Sorry Timothy, I don't want to call you a troll (and you got your answer anyway) but you really seem to be reading from a script.
insightful++ The newbies learn the new languages. Let them. I want to grow old and have my Y2K. I want to be pulled out of retirement so that I can flex my archaic Java EE 6 skills and fix basic problems for many times the standard hourly rate. Of course the COBOL guys will probably be making even more at that point...