Like the math PhD i work with, who thinks he is good, because he coded a bit C++ for his thesis. Still unable to use a debugger (hey, we can print to console) or even his IDE after 3 years of working as a software developer. Writing code that I then need to fix all the time for huge performance bottlenecks, security holes, unmaintainability and outright compiler errors. Using libraries for as many years not knowing why he is doing something (cargo culting his way through) and "explaining" why we can't do things right (in the sense of software engineering), because we are so small, we don't need it, we are so special, this doesn't work for us... yeah sure.
This is the exact reason why PHP and most of the things coded in it are such a mess. Too many people running into the tides without taking the time to learn swimming in the pool. I certainly would not argue that my CS degree would make me a good physicist, mechanical engineer, medical doctor or landscape architect. So why would a degree in physics or any other field make one a good programmer?
Sure go ahead and build your software company with autodidacts. Have fun maintaining anything more complex than 1 kloc.
Going to the back-end with JavaScript is still considered crazy by many, including myself.:P
And yes, I did some front-end projects in JavaScript (mostly AngularJS which was actually relatively nice to work with). As I usually do projects with 10s or 100s of thousands of lines of code I rather have strong, static typing to ease development and maintenance. Plus the usage of libraries in JavaScript is outrageous. I remember couple years ago a library for absolutely ridiculous small and easy string manipulations (iirc) was removed from npm or alike and suddenly all big frameworks and other libraries would suddenly not build anymore. I mean, at least JavaScript is better than PHP (which is an unstructured and inconsistent abomination), but I would argue it's domain is not industrial software back-ends or compute intense workloads but rather Web UIs.
Not to say, though, that Java does not have it's own fair share of problems (like the way generics are implemented - type erasure, and the old date-time APIs, among others).
There is a difference between having to work for existence or working on something because of passion. Nobody flips burgers because of meaning or purpose. While there will be many people not knowing what to do with their time, there will be many following their passion and actually strife for meaning in their life and not just subsistence.
Could you write a kernel with that amount of training? A DBMS? A graphics card driver? The code for a self-driving car (that doesn't crash every couple meters)?
While you might be able to write useful code after just some courses the program will be tiny, have lots of errors and will only solve a tiny simple problem, likely only for a sub-set of parameters, not very efficiently (in lines of code and in resources used) and probably hard to maintain. Which might be totally fine for your small personal problem at hand.
I am not saying that every programmer is a genius, but please stop this "everybody can be a programmer with little training" crap. You can't. As any non-trivial profession it takes lots of training and experience to actually get good at it. So much, that you, as in engineering or medicine, have to specialize in one small subset you want to actually get proficient, because your lifetime would not suffice to learn everything. Me being able to fix my bike doesn't make me a mechanic or even a mechanical engineer.
Yes, anyone having a working brain can write the equivalent in complexity of a hello world, but many things are way more complicated than this. Software projects often go into the 100.000s and multi-million lines of code. Good luck working on that after only some part-time courses, and my pity for your successors. The key word is complexity – in the problem domain and in the solution domain. Yes, the same as in mechanical / structural / electrical / chemical engineering and brain surgery. In any case you need knowledge, experience, concentration, analytical capabilities and a well thought out plan to cope with it. Of course you can forgo those things, but then you end up with stuff like PHP and the plug-ins of Wordpress.
By hacking and dumping emails, Russia is trying 'to denigrate the American electoral system, to make it look chaotic, make it look manipulable, make it look subject to intrusion, cheating and vulnerable so you can't trust it...to make us look no better than the Russian electoral system.
I'm going out on a limb here, but wouldn't that impression be the actual truth? How the democrats rigged against Sanders, that apparently the Democrats and their candidat got hacked, we know for ages that voting machines are not trustworthy, there is the concept of gerrymandering, and how on earth became Trump even a candidate, not speaking about that the charges against Hillary were dropped.
Not sure whom to attribute those hacks, but isn't it actually a good thing, that this knowledge is now spread between the voters so they can make a more informed decision? Isn't it better to know what is going on than to life in fluffy unicorn land?
All the governments are always saying: No need to fear, if you have nothing to hide. Well...
This is true and there are definitely use cases for high precision GPS, requiring special receivers. But the summary and headline were explicitly talking about self-driving cars, where this accuracy is not needed.
If it was the case we would be in deep trouble considering the typical error in GPS. That is the reason why other sensors like LIDAR and cameras are also used. GPS is for having a general clue where you are, and 1,5 m accuracy would be plenty for that.
I can assure you, that most people would strife for more than meeting their basic needs, which would be cheap, simple housing, cheap, simple food, cheap clothes and education, might add social participation like going to museum or so.
It would seem rather odd, if most people would be fine with that.
If Mr ans Ms Smith are jobless, just as the rest of your neighborhood they might a) have no need for somebody else moving their lawn and b) might also have no money to pay other people doing stuff they could do themselves.
It is far fetched to state there is or even will be enough work for everybody. Most jobs, if not all can be automated. And the threshold, where it is worth to do so is falling continuously. How many people are required in farming today, how many people are actually working in a factory today, how many accountants are needed today, how many people are needed to service a computer today? With self-checkout lines in supermarkets and replacing of people for computers even in fast food chains, where do you think this will end? Clearly most if not all blue collar work can be automated. Not all of those people will qualify for white collar work (otherwise they would do this work already, i guess). And actually not even white collar work might be safe in the long run, seeing the current rise of expert systems. So it comes down to: who owns the machines is getting money, the rest would have no income. And it's not far fetched to say, that only VERY few will be the owners of the machines, probably the people who are already rich today, or their children. In my view it is, and will be even more so, necessary to distribute wealth in society. It's not even about injustice. Just think about it: Who would buy stuff from the rich robot owners, if everybody has essentially no money at all?
Society and even capitalism live from wealth being spread.
Or, you know, we could all just not buy from shady sources for multiple times the normal price and let those idiots sit on their 1012 tickets. This should teach them.
First it means he can code (or hack) really small things. It's not an indication he would fare well in big, long-living projects.
Please take also into consideration, that coding is one of the smaller tasks a programmer does. Most is reading, reasoning, planning as well as learning. It does not help if you have the fastest guy in Lisp if he can't learn new things as fast as it's needed.
I am student, worked in projects, that existed for many years and had for the most part more than 15 coders simultaneously and take part in CodeJam and TopCoder competitions. Big projects and speed coding require totally different sets of skills.
Learning by the book is only part of it. With only learning by the book, you will get the so called "self-taught programmers" which I would keep out at all costs. What one really need to improve is constructive criticism by experts or at least people better than oneself. Anything else is just an echo chamber.
I would not. Solving a small problem fast requires different skills then solving a big problem in a way that is maintainable and durable and secure. Yet I also take part in those competitions.
While this might be true, as far as I can tell our best or even good developers would not go to a spy agency as they are intelligent people with concience.
Greed is not the only problem. Yes it is a big factor, but I also saw researchers doing things they should have gotten be laughed about, not published, which happened just because of lack knowledge or rigor.
I also had this problem. And when I asked an PhD student about a thing that seems suspicious in his papers experiment setup he admitted that it's actually not as great as described.
Another big problem is research in development processes like Scrum, XP, Waterfall etc.. I argued quite a bit with my professor as all the experiments cited where like "take a bunch of students and let them work on a toy project, which never has changing requirements and is tiny in code size." Well this of course can't be used to make any conclusions of real software projects with real programmers, yet the results where generalized. This is just bad science. And we should call people out for it and definitely not publish this stuff. A better but still wrong approach was getting real programmers and let them work for _one_ day. This is outright ridiculous. What would be the result of this? The problems in software projects arise after _months_ not hours. Also people need time to get used to a style of working, which will at least take a couple of days.
Even worse the professor was really in awe with this experiment, as somebody actually used real developers. When I talked with him about this flaw he just waived his hands telling me, then no real experiment could be conducted. This is actually right, but what he meant was actually: this is better than nothing. I strongly disagree.
Also allow me to remark, that working overtime also is not necessarily a sign of professionalism, maybe even a sign of absence. I know how many hours I can work, before I am mentally exhausted and will introduce more errors / damage then benefit. As a professional thus I will insist staying below this threshold for the better of my employer and myself.
A contract is two-sided. If one sides wishes to divert from the agreed-on terms I am sure the other side will be open for honest renegotiation so everything stays fair.
Also working overtime is a sign of bad planning, which might be the workers or his managers fault. Either the worker agreed on deadlines he should not have accepted or the manager tried to put too much work on the worker. Yet it should have been noticed early enough and the time / work could have been renegotiated. This of course requires professionalism of both sides: Don't try to hide your errors and give a early enough notice, and listening to employers and accepting that errors _are_ happing, if you are told or not.
I don't think the companies owning the dark fiber would sell / rent it so expensive that it's easier to lay it oneself. In that way they will never sell it which is even worse then selling with loss.
I disagree: Give me a really concise documentation and if there is still time then go wild on a conversational info page / demo / tutorial / best practices
First one should be easier and faster to do and you can always reference to it for details in the more wordy thing. Examples and explanations are important especially if one just starts using the software / API, but cumbersome if I only want to know the expected boundaries of a parameter or so.
So both are important, but for different things. Probably one should not skip any of these.;)
Okay, I suppose you don't mind we also stop pretending the Five Eyes (especially the USA) and Israel at not in a low level war with any other country? Right?
The thing you linked more or less said design pattern are bad because... he doesn't like it. He says there is no scientific proof they are good and thus they must be bad (without giving any proof) and because people used them wrong and introduced unnecessary complexity. The argumentation of the GoF is as sound or unsound as his. I can always construct an argument against something if I point out how it is used incorrectly. By this argumentation Assembler, C, C++ and actually every programming language is bad, because I can write really messy code.
I wrote that design patterns are usefull to _me_, yes. I can't generalize my experience, of course. Yet I learned design patterns only quite some years after I started programming. And I really prefer it this way over everyone reinventing the wheel. The code bases I worked on were many years old and more than a million lines of code or so. It just would not have worked without design patterns and code formating rules.
The problem is, that there are almost no useful experiments in software engineering. Each one I saw until now was set up way too small, too short or used students instead of professionals or any combination of this. Really good experiments are just wayyy too expensive, as you would have to watch programming efforts with and without, on the same project, over years, with professionals. Nobody will finance that, unfortunately. And case studies are just case studies and can't be generalized. Thus it is hard to scientifical sound say what is bad or good. It would be great if we could, of course.
Like the math PhD i work with, who thinks he is good, because he coded a bit C++ for his thesis. Still unable to use a debugger (hey, we can print to console) or even his IDE after 3 years of working as a software developer. Writing code that I then need to fix all the time for huge performance bottlenecks, security holes, unmaintainability and outright compiler errors. Using libraries for as many years not knowing why he is doing something (cargo culting his way through) and "explaining" why we can't do things right (in the sense of software engineering), because we are so small, we don't need it, we are so special, this doesn't work for us... yeah sure.
This is the exact reason why PHP and most of the things coded in it are such a mess. Too many people running into the tides without taking the time to learn swimming in the pool. I certainly would not argue that my CS degree would make me a good physicist, mechanical engineer, medical doctor or landscape architect. So why would a degree in physics or any other field make one a good programmer?
Sure go ahead and build your software company with autodidacts. Have fun maintaining anything more complex than 1 kloc.
Going to the back-end with JavaScript is still considered crazy by many, including myself. :P
And yes, I did some front-end projects in JavaScript (mostly AngularJS which was actually relatively nice to work with). As I usually do projects with 10s or 100s of thousands of lines of code I rather have strong, static typing to ease development and maintenance. Plus the usage of libraries in JavaScript is outrageous. I remember couple years ago a library for absolutely ridiculous small and easy string manipulations (iirc) was removed from npm or alike and suddenly all big frameworks and other libraries would suddenly not build anymore. I mean, at least JavaScript is better than PHP (which is an unstructured and inconsistent abomination), but I would argue it's domain is not industrial software back-ends or compute intense workloads but rather Web UIs.
Not to say, though, that Java does not have it's own fair share of problems (like the way generics are implemented - type erasure, and the old date-time APIs, among others).
There is a difference between having to work for existence or working on something because of passion. Nobody flips burgers because of meaning or purpose. While there will be many people not knowing what to do with their time, there will be many following their passion and actually strife for meaning in their life and not just subsistence.
You can totally bookmark and annotated PDFs with doodles or texts. Doing this all the time.
Could you write a kernel with that amount of training? A DBMS? A graphics card driver? The code for a self-driving car (that doesn't crash every couple meters)?
While you might be able to write useful code after just some courses the program will be tiny, have lots of errors and will only solve a tiny simple problem, likely only for a sub-set of parameters, not very efficiently (in lines of code and in resources used) and probably hard to maintain. Which might be totally fine for your small personal problem at hand.
I am not saying that every programmer is a genius, but please stop this "everybody can be a programmer with little training" crap. You can't. As any non-trivial profession it takes lots of training and experience to actually get good at it. So much, that you, as in engineering or medicine, have to specialize in one small subset you want to actually get proficient, because your lifetime would not suffice to learn everything. Me being able to fix my bike doesn't make me a mechanic or even a mechanical engineer.
Yes, anyone having a working brain can write the equivalent in complexity of a hello world, but many things are way more complicated than this. Software projects often go into the 100.000s and multi-million lines of code. Good luck working on that after only some part-time courses, and my pity for your successors. The key word is complexity – in the problem domain and in the solution domain. Yes, the same as in mechanical / structural / electrical / chemical engineering and brain surgery. In any case you need knowledge, experience, concentration, analytical capabilities and a well thought out plan to cope with it. Of course you can forgo those things, but then you end up with stuff like PHP and the plug-ins of Wordpress.
By hacking and dumping emails, Russia is trying 'to denigrate the American electoral system, to make it look chaotic, make it look manipulable, make it look subject to intrusion, cheating and vulnerable so you can't trust it...to make us look no better than the Russian electoral system.
I'm going out on a limb here, but wouldn't that impression be the actual truth? How the democrats rigged against Sanders, that apparently the Democrats and their candidat got hacked, we know for ages that voting machines are not trustworthy, there is the concept of gerrymandering, and how on earth became Trump even a candidate, not speaking about that the charges against Hillary were dropped.
Not sure whom to attribute those hacks, but isn't it actually a good thing, that this knowledge is now spread between the voters so they can make a more informed decision? Isn't it better to know what is going on than to life in fluffy unicorn land?
All the governments are always saying: No need to fear, if you have nothing to hide. Well...
This is true and there are definitely use cases for high precision GPS, requiring special receivers. But the summary and headline were explicitly talking about self-driving cars, where this accuracy is not needed.
If it was the case we would be in deep trouble considering the typical error in GPS. That is the reason why other sensors like LIDAR and cameras are also used. GPS is for having a general clue where you are, and 1,5 m accuracy would be plenty for that.
Slashdot editing...
I can assure you, that most people would strife for more than meeting their basic needs, which would be cheap, simple housing, cheap, simple food, cheap clothes and education, might add social participation like going to museum or so.
It would seem rather odd, if most people would be fine with that.
If Mr ans Ms Smith are jobless, just as the rest of your neighborhood they might a) have no need for somebody else moving their lawn and b) might also have no money to pay other people doing stuff they could do themselves.
It is far fetched to state there is or even will be enough work for everybody. Most jobs, if not all can be automated. And the threshold, where it is worth to do so is falling continuously. How many people are required in farming today, how many people are actually working in a factory today, how many accountants are needed today, how many people are needed to service a computer today? With self-checkout lines in supermarkets and replacing of people for computers even in fast food chains, where do you think this will end? Clearly most if not all blue collar work can be automated. Not all of those people will qualify for white collar work (otherwise they would do this work already, i guess). And actually not even white collar work might be safe in the long run, seeing the current rise of expert systems. So it comes down to: who owns the machines is getting money, the rest would have no income. And it's not far fetched to say, that only VERY few will be the owners of the machines, probably the people who are already rich today, or their children. In my view it is, and will be even more so, necessary to distribute wealth in society. It's not even about injustice. Just think about it: Who would buy stuff from the rich robot owners, if everybody has essentially no money at all?
Society and even capitalism live from wealth being spread.
Or, you know, we could all just not buy from shady sources for multiple times the normal price and let those idiots sit on their 1012 tickets. This should teach them.
And even if you had a trillion channels to main memory, you'd still only improve bandwidth and keep the same latency.
First it means he can code (or hack) really small things. It's not an indication he would fare well in big, long-living projects.
Please take also into consideration, that coding is one of the smaller tasks a programmer does. Most is reading, reasoning, planning as well as learning. It does not help if you have the fastest guy in Lisp if he can't learn new things as fast as it's needed.
I am student, worked in projects, that existed for many years and had for the most part more than 15 coders simultaneously and take part in CodeJam and TopCoder competitions. Big projects and speed coding require totally different sets of skills.
Learning by the book is only part of it. With only learning by the book, you will get the so called "self-taught programmers" which I would keep out at all costs. What one really need to improve is constructive criticism by experts or at least people better than oneself. Anything else is just an echo chamber.
I would not. Solving a small problem fast requires different skills then solving a big problem in a way that is maintainable and durable and secure. Yet I also take part in those competitions.
Then you are doing it wrong. I find everything that is not totally obscure like some error cases in a library almost nobody uses.
While this might be true, as far as I can tell our best or even good developers would not go to a spy agency as they are intelligent people with concience.
Greed is not the only problem. Yes it is a big factor, but I also saw researchers doing things they should have gotten be laughed about, not published, which happened just because of lack knowledge or rigor.
I also had this problem. And when I asked an PhD student about a thing that seems suspicious in his papers experiment setup he admitted that it's actually not as great as described.
Another big problem is research in development processes like Scrum, XP, Waterfall etc.. I argued quite a bit with my professor as all the experiments cited where like "take a bunch of students and let them work on a toy project, which never has changing requirements and is tiny in code size." Well this of course can't be used to make any conclusions of real software projects with real programmers, yet the results where generalized. This is just bad science. And we should call people out for it and definitely not publish this stuff. A better but still wrong approach was getting real programmers and let them work for _one_ day. This is outright ridiculous. What would be the result of this? The problems in software projects arise after _months_ not hours. Also people need time to get used to a style of working, which will at least take a couple of days.
Even worse the professor was really in awe with this experiment, as somebody actually used real developers. When I talked with him about this flaw he just waived his hands telling me, then no real experiment could be conducted. This is actually right, but what he meant was actually: this is better than nothing. I strongly disagree.
Also allow me to remark, that working overtime also is not necessarily a sign of professionalism, maybe even a sign of absence. I know how many hours I can work, before I am mentally exhausted and will introduce more errors / damage then benefit. As a professional thus I will insist staying below this threshold for the better of my employer and myself.
A contract is two-sided. If one sides wishes to divert from the agreed-on terms I am sure the other side will be open for honest renegotiation so everything stays fair.
Also working overtime is a sign of bad planning, which might be the workers or his managers fault. Either the worker agreed on deadlines he should not have accepted or the manager tried to put too much work on the worker. Yet it should have been noticed early enough and the time / work could have been renegotiated. This of course requires professionalism of both sides: Don't try to hide your errors and give a early enough notice, and listening to employers and accepting that errors _are_ happing, if you are told or not.
I don't think the companies owning the dark fiber would sell / rent it so expensive that it's easier to lay it oneself. In that way they will never sell it which is even worse then selling with loss.
I disagree: Give me a really concise documentation and if there is still time then go wild on a conversational info page / demo / tutorial / best practices
First one should be easier and faster to do and you can always reference to it for details in the more wordy thing. Examples and explanations are important especially if one just starts using the software / API, but cumbersome if I only want to know the expected boundaries of a parameter or so.
So both are important, but for different things. Probably one should not skip any of these. ;)
Because of the high resolution.
Okay, I suppose you don't mind we also stop pretending the Five Eyes (especially the USA) and Israel at not in a low level war with any other country? Right?
The thing you linked more or less said design pattern are bad because... he doesn't like it. He says there is no scientific proof they are good and thus they must be bad (without giving any proof) and because people used them wrong and introduced unnecessary complexity. The argumentation of the GoF is as sound or unsound as his. I can always construct an argument against something if I point out how it is used incorrectly. By this argumentation Assembler, C, C++ and actually every programming language is bad, because I can write really messy code.
I wrote that design patterns are usefull to _me_, yes. I can't generalize my experience, of course. Yet I learned design patterns only quite some years after I started programming. And I really prefer it this way over everyone reinventing the wheel. The code bases I worked on were many years old and more than a million lines of code or so. It just would not have worked without design patterns and code formating rules.
The problem is, that there are almost no useful experiments in software engineering. Each one I saw until now was set up way too small, too short or used students instead of professionals or any combination of this. Really good experiments are just wayyy too expensive, as you would have to watch programming efforts with and without, on the same project, over years, with professionals. Nobody will finance that, unfortunately. And case studies are just case studies and can't be generalized. Thus it is hard to scientifical sound say what is bad or good. It would be great if we could, of course.