www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Enough D to Make a Living?

reply Paul <phshaffer gmail.com> writes:
I'm in between engineering jobs and exploring the idea of getting 
into programming for a living...specifically D.
1) Is there enough D demand for someone to make a living (bread 
and water :} ) at it?
2) I've programmed industrial automation controllers using 
graphical and text-based languages and wrote a few small command 
line tools in D for myself. How long would it take to become 
"employable"?
3) Is there much value in taking programming classes that don't 
deal with D?
4) What is the best way to find D programming jobs online?

Thanks for your time.
Feb 21
next sibling parent reply Jack Stouffer <jack jackstouffer.com> writes:
On Tuesday, 21 February 2017 at 15:34:02 UTC, Paul wrote:
 1) Is there enough D demand for someone to make a living (bread 
 and water :} ) at it?
You can scan this page for hiring companies: https://dlang.org/orgs-using-d.html
 2) I've programmed industrial automation controllers using 
 graphical and text-based languages and wrote a few small 
 command line tools in D for myself. How long would it take to 
 become "employable"?
Look up some programming interview questions and see if you can answer them. I would also suggesting having some programs you've written in a portfolio.
 3) Is there much value in taking programming classes that don't 
 deal with D?
Yes, a programmer without CS knowledge is the difference between a mechanic and an engineer.
 4) What is the best way to find D programming jobs online?
Post here.
Feb 21
parent Paul <phshaffer gmail.com> writes:
Great. Thanks Jack.
Feb 21
prev sibling next sibling parent reply "Nick Sabalausky (Abscissa)" <SeeWebsiteToContactMe semitwist.com> writes:
On 02/21/2017 10:34 AM, Paul wrote:
 3) Is there much value in taking programming classes that don't deal
 with D?
Although HR folk never understand this, programming skills are highly transferable across languages. So yes, it's definitely worthwhile: Getting better with one language will help you be a better programmer in other languages.
Feb 21
next sibling parent pineapple <meapineapple gmail.com> writes:
On Tuesday, 21 February 2017 at 18:32:22 UTC, Nick Sabalausky 
(Abscissa) wrote:
 On 02/21/2017 10:34 AM, Paul wrote:
 3) Is there much value in taking programming classes that 
 don't deal
 with D?
Although HR folk never understand this, programming skills are highly transferable across languages. So yes, it's definitely worthwhile: Getting better with one language will help you be a better programmer in other languages.
Very much this. Companies are never impressed by my knowing any language in particular, they're impressed by the fact I've written code in so many different languages. Statically-typed languages, dynamic languages, scripting languages, JVM languages, assembly languages, etc. etc. etc. Definitely let yourself spend the most time on a language or two you enjoy most, because it's still important to demonstrate that you're able to know a language front-to-back. But experiment with as many other languages as you can, as much as you feel comfortable and then some, because that's how you gradually get to a place where the only thing separating you from proficiency with any programming language is a week or two of ramp-up time. And that alone makes you employable almost anywhere. As for employability: These days, one of the absolute best things you can do is to have an active github account. Put your projects in public repositories, even the small ones, and any time you think of something interesting or you need a tool for yourself, commit code to the site while you're developing it. And never be afraid to submit PRs for improving other people's repos, because it's almost always welcome and it also looks great in terms of employability because it shows how comfortable you are working with other people's code. The overwhelming majority of jobs these days involve writing C++, C#, Java, JavaScript, or Python. You will have a much easier time finding a job writing code mainly in one of those languages than one writing code in D - but that doesn't make learning D useless, or anything close to it. Everything you learn by writing D will be transferable to those other languages, especially C++. Just stay aware that it is well worth your time to familiarize yourself with other languages, too, and be open to the possibility of finding work that focuses on other languages.
Feb 21
prev sibling parent reply Russel Winder via Digitalmars-d <digitalmars-d puremagic.com> writes:
On Tue, 2017-02-21 at 13:32 -0500, Nick Sabalausky (Abscissa) via
Digitalmars-d wrote:
 On 02/21/2017 10:34 AM, Paul wrote:
 3) Is there much value in taking programming classes that don't
 deal
 with D?
=20 Although HR folk never understand this, programming skills are highly=C2=A0 transferable across languages. So yes, it's definitely worthwhile:=C2=A0 Getting better with one language will help you be a better programmer in=C2=A0 other languages.
The psychology of programming people have incontrovertible evidence that the very best programmers are able to work to a high level in many different programming languages (there are many references for this, see the work by Petre, Green, Sharp, etal.). The hypothesis that learning to a real working level a new language increases competence on all previously known language that you still have working knowledge of is also proven. However there is a caveat, that the new language must have a new computational model or at least a significant breaking change in something associated with the computational model. So if you know C then learning Haskell has great benefit. Then learning List has great benefit. But then learning Scheme will have little benefit. Learning C++, then D, then Rust for example will have benefit because there are new things there even though the core computational model is effectively the same =E2=80=93 they have differences that matter. =20 --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.n= et 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Feb 22
parent reply Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= writes:
On Wednesday, 22 February 2017 at 09:09:45 UTC, Russel Winder 
wrote:
 is also proven. However there is a caveat, that the new 
 language must
 have a new computational model or at least a significant 
 breaking
 change in something associated with the computational model.
This is probably quite true, of course the more you get used to a particular model the more you feel that other languages are restraining your ability to express yourself...
 Learning C++, then D, then Rust for example will have benefit 
 because
 there are new things there even though the core computational 
 model is
 effectively the same – they have differences that matter.
Maybe. I think "modern" C++ is a in class of it's own at this point. It is now quite detached from it's root: C with classes. Not so much for the computational model as for all the patterns you ought to follow and not nearly enough constraints from the compiler on what you should not do. With modern C++ you either have to go for being proficient or end up feeling miserable. Which is quite different from most imperative languages I think. Other than C++ I think most imperative Algol-like languages are in the same mold. The core difference is between system programming that requires hardware knowledge, but then the model is the hardware and not really the language. If you know 2-3 of them (e.g. C, TypeScript, Java) then getting into the others don't really require all that much.
Feb 22
parent reply Shachar Shemesh <shachar weka.io> writes:
On 22/02/17 13:26, Ola Fosheim Grøstad wrote:
 On Wednesday, 22 February 2017 at 09:09:45 UTC, Russel Winder wrote:
 Learning C++, then D, then Rust for example will have benefit because
 there are new things there even though the core computational model is
 effectively the same – they have differences that matter.
Maybe. I think "modern" C++ is a in class of it's own at this point. It is now quite detached from it's root: C with classes.
I feel slightly bad for sending you to read through the whole of http://lbrandy.com/blog/2010/03/never-trust-a-programmer-who-says-he-knows-c/ before getting to the punchline on the last sentence, but on the plus side, it is very short. On a slightly different note, "C with classes" is the name of C++'s predecessor, which was a preprocessor. Strastrup draws a very distinct line between that and the first C++ compiler (cfront).
 the computational model as for all the patterns you ought to follow and
 not nearly enough constraints from the compiler on what you should not
 do.
That is a matter of perspective. I, for one, feel other languages put too much constraints on, making me work quite hard to get what I want expressed in the language, often blocking me from the most efficient implementation altogether. D is better in that regard than many, but still weights on me on occasion.
 With modern C++ you either have to go for being proficient or end up
 feeling miserable. Which is quite different from most imperative
 languages I think.
Which is precisely why it is not a good language to start with unless you intend to stick with it. This is not a language mastered quickly, and superficial knowledge of it really is a dangerous thing. There is no point in aiming to learn it superficially. Shachar
Feb 22
parent reply Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= writes:
On Thursday, 23 February 2017 at 07:36:11 UTC, Shachar Shemesh 
wrote:
 That is a matter of perspective. I, for one, feel other 
 languages put too much constraints on, making me work quite 
 hard to get what I want expressed in the language, often 
 blocking me from the most efficient implementation altogether.
What I meant was that what was things along the line of: best-practice in the past for meta-programming is no longer the best way to go about it today, yet C++ remains backwards compatible so... as a result you end up having N ways of expressing the same thing. Which makes C++ harder to read than it should be. It is not so much about being able to express something as it is about having N different convoluted ways to express the same thing.
 Which is precisely why it is not a good language to start with 
 unless you intend to stick with it.
At this point C++ is a very poor choice for education at any level. Ola.
Feb 23
parent reply "Nick Sabalausky (Abscissa)" <SeeWebsiteToContactMe semitwist.com> writes:
On 02/23/2017 09:24 AM, Ola Fosheim Grøstad wrote:
 It is not so much about being able to express something as it is about
 having N different convoluted ways to express the same thing.
And most of those ways being "wrong" or dangerous. And, as you mentioned, certain "right" ways becoming "wrong" seemingly every few years.
Feb 23
parent Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= writes:
On Thursday, 23 February 2017 at 17:23:11 UTC, Nick Sabalausky 
(Abscissa) wrote:
 And most of those ways being "wrong" or dangerous. And, as you 
 mentioned, certain "right" ways becoming "wrong" seemingly 
 every few years.
Not necessarily wrong, but either limited to specific scenarios or unnecessarily verbose compared to what can be done in the latest version of the language. When you have overlapping mechanisms it becomes more difficult to read the code as there are too many ways for people to express the same thing. For a wide spread and continuously developing language like C++ it gets worse because developers keep using whatever was "right" when they learned about that feature.
Feb 23
prev sibling next sibling parent Dukc <ajieskola gmail.com> writes:
On Tuesday, 21 February 2017 at 15:34:02 UTC, Paul wrote:
 I'm in between engineering jobs and exploring the idea of 
 getting into programming for a living...specifically D.
Well, D is nowhere near the popularity of the most common languages so projects which use D are still rare. There are some, trough. However, if you get to choose your language, chances are probably good you can. I believe D is stable enough to function well in all but the biggest projects. And if you make your project, it won't be big enough to cause serious problems. But even if you won't use D, it may be even the best choice to learn, because it handles so many programming styles and shares syntax with many common languages. That means that few languages are utterly alien for a D programmer. If you learned Pascal, you would likely find Haskell totally alien and vice-versa. But a D programmer will find some familiarity in both. Take these with a grain of salt, I do not have much personal experience in things like this.
Feb 21
prev sibling next sibling parent aberba <karabutaworld gmail.com> writes:
On Tuesday, 21 February 2017 at 15:34:02 UTC, Paul wrote:
 I'm in between engineering jobs and exploring the idea of 
 getting into programming for a living...specifically D.
 1) Is there enough D demand for someone to make a living (bread 
 and water :} ) at it?
Anything is possible. Aged companies are more government in their operations. Its way to get employed by startups.
 2) I've programmed industrial automation controllers using 
 graphical and text-based languages and wrote a few small 
 command line tools in D for myself. How long would it take to 
 become "employable"?
Web, IoT, cloud ... that's where employment is going. You know about embedded systems already (IoT). Don't know how much support D has in this area though, but seems LDC has good arm support.
 3) Is there much value in taking programming classes that don't 
 deal with D?
I will recommended studying the few D books, standard library (very important), language specification, and basic algorithms. Exercism.io is a good learning resource for D and Github D projects.
 4) What is the best way to find D programming jobs online?
No one really knows. They have to have a reason to employ you which your genuine portfolio can help. Some companies look for certs whilst others look for capable talents/skills. Startups are formed everyday. I don't want to go into whether CS degree is a requirement or not.
Feb 21
prev sibling parent Chris Wright <dhasenan gmail.com> writes:
On Tue, 21 Feb 2017 15:34:02 +0000, Paul wrote:
 I'm in between engineering jobs and exploring the idea of getting into
 programming for a living...specifically D.
 1) Is there enough D demand for someone to make a living (bread and
 water :} ) at it?
There's enough for someone to do so, and maybe enough for several hundred to do it in the whole world. Sorry to say your odds aren't that great.
 2) I've programmed industrial automation controllers using graphical and
 text-based languages and wrote a few small command line tools in D for
 myself. How long would it take to become "employable"?
If you start your own business, you're immediately employable. If you go for portfolio-oriented work, then you will be employable once you've done something noteworthy in your field.
 3) Is there much value in taking programming classes that don't deal
 with D?
You will want to learn SQL. You need to learn the concepts behind asymptotic complexity, at least enough to recognize when you've got asymptotic complexity problems. You need familiarity with common data structures. If you are working in a particular field and there is a class on that, it is worthwhile. For instance, if you are doing computer vision, machine learning, or natural language processing, you will benefit from studying that specifically, regardless of what language you use. You need practice programming to be effective, and that practice will largely be transferrable from other languages to D.
Feb 21