Learn Basic Programming So You Aren't At the Mercy of Programmers
An anonymous reader writes "Derek Sivers, creator of online indie music store CD Baby, has a post about why he thinks basic programming is a useful skill for everybody. He quotes a line from a musician he took guitar lessons from as a kid: "You need to learn to sing. Because if you don't, you're always going to be at the mercy of some a****** singer." Sivers recommends translating that to other areas of life. He says, 'The most common thing I hear from aspiring entrepreneurs is, "I have this idea for an app or site. But I'm not technical, so I need to find someone who can make it for me." I point them to my advice about how to hire a programmer, but as most of the good ones are already booked solid, it's a pretty helpless position to be in. If you heard someone say, "I have this idea for a song. But I'm not musical, so I need to find someone who will write, perform, and record it for me." — you'd probably advise them to just take some time to sit down with a guitar or piano and learn enough to turn their ideas into reality. And so comes my advice: Yes, learn some programming basics. Just some HTML, CSS, and JavaScript should be enough to start. ... You don't need to become an expert, just know the basics, so you're not helpless.'"
It's in one of the comments, and a pointer from that linked page shows some exercises his instructor had him perform -- singing at different speeds and pitches. I myself wonder why software engineering never tries to teach solving the same problem in a variety of paradigms or languages; 99 bottles is the closest example I can find.
... just askin'
Muchas Gracias, Señor Edward Snowden !
But not Basic?
You might need to whip up a Visual Basic GUI one day...
http://michaelsmith.id.au
"I have an idea for an app" is exactly what riles up programmers. Ideas are a dime a dozen. If you, the "nontechnical person", do your job right, then you'll find a competent and cooperative programmer. If, on the other hand, and this is is much too common, you expect the programmer to do your work (requirements engineering, reading your mind for what you want, correcting your conceptual mistakes, graphics design, business planning to get the scale right, etc.) on top of the actual programming in return for a one-time payment while you expect to sell "your" startup for millions, then you'll get asshole programmers - and you deserve them.
Sure, learn enough client side tech and you can fumble through putting together an interface - but what then? What about storing state or any number of instances where you need to talk with a DB or do some type of server side magic? And another thing to consider, it's not just learn some HTML, JavaScript and CSS - it's also figure out how the different browsers handle the quirks of each of those technologies. It's one thing to be an informed consumer, and an entirely different thing to be a backseat driver who does not actually know how to drive.
A clear conscience is usually the sign of a bad memory.
No training, no knowledge of computer science, algorithms - nothing. Just some HTML, some JS, and you're developing rocking apps and sites! What can possibly go wrong with that stellar advise...
If I understand his paper on 'the cruelty of really teaching computer science', at least Edsger Dijkstra would have said "no". I'm not sure that applies to the scale and type of software projects since his time, though.
I AM a basic programmer, learned when I was a kid in the 80's, writing a applesoft program now for a retro compo, wrote a qbasic program the other day to half ass something at work.
did the VB scene, do the VB.net scene... I can puke basic out faster than a college freshman that just discovered that jagermeister and goldschlager dont mix well... and I can say
NO, FUCKING STOP
you want to write stuff, fine, but seriously there are so many languages out there now that are not only better, but can easily morph into each-other if you decide to expand your skills. dont waste your time with basic in this day and age.
Using HTML, JavaScript and CSS is more like designing.Next thing you know someone thinks of using TeX and LaTeX as programming instead of writing a book or article.
...because if I don't, I'm always going to be at the mercy of some a****** slashdot comment writer.
By the same token you should also know a little about raising pigs as you won't be held a****** farmer, or mechanic, and lets not forget those a****** astrophysicists, clearly everybody should be able to calculate the amount of redshift from a distant star. In todays society we need to specialize and not everyone can learn a little of everything.
While I have no problem with programming I am at the mercy of an artist for my games. So the last couple months I've been practising drawing with Vectors (I've actually found InkScape to be easier than Illustrator) so that I no longer have to find a willing graphics artist for my games. I've been drawing the assets for my next project as I figured that's the best way to learn, never have to stop and think of what to practice drawing next as I have the list in front of me.
It also means if I end up with sub-par results at least I've improved my art skills and have a strong list of assets for the artist! Plus it's another step that forces me to consider each asset before throwing it in there as not only do I need to design and code but now I need to spend the time drawing it, the end result being a cheaper contract rate from fewer art assets.
Go on, get started on learning some programming skills. Your programming language of choice will give you all the rope to hang yourself, and then just a bit more to be sure. Once you know enough about programming not to be at the mercy of programmers, maybe you'll finally start to appreciate the ones that have been doing it for a living for ten years or more, and you'll gladly surrender.
> 'The most common thing I hear from aspiring entrepreneurs is, "I have this idea for an app or site. But I'm not technical, so I need to find someone who can make it for me."
He should be telling them: "Ideas are a dime a dozen. The value is in the execution. If you cant execute your idea, then what are you bringing to the table?"
G'day, Frosty!
Did you mean "Übernerds" and "Übernerdliness"?
ProTip: The best trolls all use Windows-1252. Unicode is vastly overrated.
Yours in Umeå,
Roald Engelbregt Gravning Amundsen
Not really, the basics can be learned through books.
Like loops, variable types, arrays, etc.
Computers are just used to compile code so you understand what you are doing, learn mistakes, learn proper methods, and how to debug.
As one used to say, a little knowledge is a dangerous thing, so this argument isn't really convincing.
I've worked for people in the past who knew a little basic and then believed that they knew how some large, multi-tiered thing could be re-architected in a few lines, as in a Hollywood film [or Dilbert].
A little technical knowledge [rather than just knowing buzzwords, another common trap] may at least help filter some of the more hopeless potential 'programmers' for your project but it needs to be combined with a healthy dose of reality and knowing ones limits: http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
On y va, qui mal y pense!
Nitpick: The question was "does programming necessitate the use of a computer", not "does learning to program necessitate the use of a computer". Even the theoretical computer science guys have their abstract machines, so yes, programming necessitates the use of a (real or virtual) computer.
I'm sure it would be a delight to listen to an MBA who took some lessons in Python as he gives valuable advice to engineers. We sure need more pointy hair experts..
Plauger's essay, many years ago, about programmer types struck me as better advice: If you enjoy programming, do it. If you don't mind it, but don't really enjoy it, feel free to do it, but have other things available. If you hate it, don't do it, because you will be dramatically worse off than if you did something you enjoyed and were probably good at.
It's a great thought to "not be at the mercy of some programmer". Makes sense for singing, for musicians. Thing is, you don't have to sing particularly well to sing adequately to get stuff recorded. Might not make a lot of money, but you can do pretty well if you can carry a tune at all. Or even if you can't, if you're charismatic. But a bad programmer doesn't just produce tolerable but sort of flawed programs; a bad programmer produces programs that are frequently worse than not having a program at all.
My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
Yes, everyone should get to it right after they learn carpentry, blacksmithy, masonry etc. Then they will never be at the mercy of others when they get ideas.
Meh, I completely disagree with everything you said. The advice is not 'become a world class expert', the advice is 'know enough to be able to do what you want, which is probably easier than you would expect. There is currently no such thing in the computer world, it is all an absolute of 'us programmers' and 'them users', which is spastic.
For example, I would probably find it hard to build a bike from a bunch of steel tubes and scrap aluminum and rubber, even if I have a rough understanding of the process. But I do know enough to not have to limp pathetically to a bike service shop if I break a derailleur or bend my wheels or break a spoke, and an appreciation of exactly how all its parts operate means I am not stupid enough think wasting 3 grand on a flashy toy is going to make me ride better. Extrapolate that logic to whatever field you choose.
PS. I also grow nice veg.... but last time I checked I am not on a farm...
He says, 'The most common thing I hear from aspiring entrepreneurs is, "I have this idea for an app or site. But I'm not technical, so I need to find someone who can make it for me." I point them to my advice about how to hire a programmer, but as most of the good ones are already booked solid...
As a good coder who writes applications for aspiring entrepreneurs for a living, I can tell you we aren't all booked up. I can also tell you that even if your hypothetical newbie learned how to code a basic application, it's not going to help them one iota when they wants to get that app made. Now he or she can make a basic app...great.
But their real app is nothing like their learn-to-code app. It's going to have to have TCP/IP in-out, a server, mess with the registry, a installer, low-level optimizations, QT bindings, API calls, assembly, links to command-line programs, cross-platform code, multithreading or the thousand other things that consumer-grade have, but a newly minted coder isn't going to know how to do or know how to do well. So what does the person get for their time? A slightly better appreciation of what that coder they still need to hire is going to have to do perhaps.
You are also forgetting about opportunity costs. Your advice is like telling a strait women she should try being a lesbian for a while, because all the good men are already married. You lose time and unless you actually are a lesbian want to be one or find it interesting for its own sake, there isn't much point.
Big apple, new Yorik, undig it, something's unrotting in Edenmark.
I'm learning C++ along with my 8 year old daughter. I think people underestimate what kids can do. If everyone started learning programming at an early age, I truly believe the world would be a far better place.
Programming? Yes, just like learning to play the piano requires a piano.
Computer science? Strictly speaking, no.
DATABASE WOW WOW
Just some HTML, CSS, and JavaScript should be enough to start. ... You don't need to become an expert, just know the basics, so you're not helpless.'"
As we didnt have enough badly written, insecure and slow web applications which were not designed by somebody whose description fits to the above.....
Programming is HARD. Maybe not for people posting here, but for everyone else. Very few people are going to have the time or ability at their disposal to get to a high enough competence level that they'll gain the insight he's talking about. In fact, I bet that a little knowledge is even worse as that might inspire a false level of competence; e.g. "here's my idea, should be easy since it only took me 2 hours to figure out 'Hello World' in C#" BTW, I saw plenty of these kinds of posts on work posting site.
I swear to God...I swear to God! That is NOT how you treat your human!
His advice is sane as long as you remember never to micromanage the guys who'll implement your vision. Knowing CPR is a good thing, but forcing it on a person with a bullet in his chest could do more harm than good. Other examples: an accomplished writer would not necessarily make a good editor if he chooses to rewrite a novel to suit his own writing style. An art critic who paints on the side might be tempted to show off his technical knowledge of a medium instead of writing a general review that the public can understand.
Knowing good design is better than knowing just a little HTML.
Singing and programming takes time to learn. If you can't sing, sing only in your shower. If you can't code, thank you not for pretending that you do. How often have you heard somebody mention that Fortran lab they did back in their college days to get street credibility among a software development team. That's like telling Pavarotti that since I know words to "Mary had a little lamb" I'm just like you.
You could start as follows:
10 Print "Hello World"
20 goto 10
30 ???
40 rem profit
[said with nick burns tone] you're welcome!!
*** Suerte a todos y Feliz dia!
As Dijkstra once said - "computer science is no more about computers than astronomy is about telescopes"
Paul Leader
There is code written by a newbie and there is code written by someone with years of experience. Now which is going to be
1) more usable
2) more maintainable
etc etc etc
If you are a programmer and you doubt this then you are clearly in the wrong profession. Like a Surgeon, Mechanic, Photographer, your skills develop over time and your success rate goes up.
If it does not then you are a hacker IMHO should not be let anywhere near a computer. I picked up a project last May from someone who had worked on it for some time. They called themselves a professional and were charging appropriate rates as a contractor for it. I took one look at his code and wept. It was pure and utter crap. Not a comment in sight. One great monolithic block including repeated lumps of error handling. Needless to say, that person's contract was terminated on the spot and legal moves were taken to reclaim most if not all of the fees paid to him.
Since then I have re-written the whole thing and brought some structure to the project. I could have done better if I'd had more time but it needed to go live by a certain date.
Yes Coding is hard. Good coding is even harder.
Frankly I do not want to see more people develp apps past the prototype stage. There is a huge cavernous gap the size of the Grany Canyon between cobbling together a prototype and making some worthy of being put into production..
And yes I have quit a job where the boss said, 'Use the prototype. It works doesn't it?'. That company went bust less than a year later.
I'd rather be riding my '63 Triumph T120.
sing, so you dont need justin bieber...oh wait.. do some basic plumbing do give money to the state, so IRS doesnt rob you print money, so the state doesnt tax you how to do it yourself, so women dont screw you... how to care of yourself, so doctors dont cheat you. how to build a notebook, so wallmart doesnt sell you crap. how to build clothes... how to grow your own food... meh, why is it that people think they can do others people job has long they own a computer? I can buy a stethoscope, or powertools, or a cutting hair machine but that doesn't turn me into a MD, or a plumbing man, or into an hairdresser.
Most good programmers I know started early..really early in life. I started programming when I was 8 years old and most of my friends that do it started when they were 12 at the oldest. I've found most people that try to take it on during their college years or later are just lost in the code. IME that's a good way to make it stick because for the most part learning a programming language is a lot like learning an actual language along with a heaping side of mathematics. I have respect for older programmers because a lot of them started out on punch cards and calculators you had to plug into the wall while going to college. Learning a little basic programming is about as useful as taking a community ed class in basic Spanish and then moving to mexico assuming that you aren't at the mercy of the cartels because of it. In the world of development things can be cut-throat and just knowing how to program isn't all there is to it. When it comes to being at the mercy of programmers- no tears please its a waste of good suffering.
so you aren't at the mercy of vulture capitalists.
if the entrepreneurs learned programming, maybe they'd realize what many programmers already do: that most of these "entrepreneurial" ideas are really stupid and obvious, and that a lot of the game is just convincing people dumber than you that you're a genius and the idea you came up with on the john a few days ago is going to replace google and facebook and blah blah blah.
looking at the converse question is rather illuminating: why aren't more programmers entrepreneurs? a meritocratic mindset is very inefficient if what you want is to make money in a society which does not directly appreciate merit.
a lot of the challenge of entrepreneurship is realizing that the market really does want fairly obvious, warmed-over ideas packaged extremely fucking well*. pursuing technical training can serve to, paradoxically, blind one to this.
*: of course a truly novel insight packaged extremely fucking well is necessary to be a great success, it's hardly necessary if all you want is, say, to have a decent chance at bagging a few $million.
"They were pure niggers." – Noam Chomsky
Why does everything think "programming" is something that doesn't require educated, skilled and talented people? To bring in the (in)famous car/computer analogy. When was the last time you heard someone say "you should take shop class in high school to make sure when you have an idea for a new car you aren't at the mercy of the damned mechanical engineers!"?
If all you have is an idea and no ability to realize that idea, you have exactly nothing. For every Steve Jobs there is a Woz doing the real work behind the scenes and, sadly, often getting screwed in the process.
The real story here is: If you're actually someone capable of realizing an idea, make sure you educate yourself in how people will try to fuck you over to exploit your abilities.
To suggest that a few evenings learning from a book will mean you're able to do the work itself is laughable, but it does mean you would have a better idea of when you're being spun bullshit by the asshole programmer.
I know nothing about cars, so if I take mine to a mechanic to fix I'm at his mercy - if he bullshits me I have no way of knowing. If I contract a programmer I'm in a position to know whether the work I'm asking for is likely to take a day or a week and whether it really needs the latest fashionable framework.
No more, and not less. Astronomers started by being fascinated looking through telescopes.
And while programming can be abstract logic and algorithms, the fun is that it actually makes computers do stuff. A computer scientist may not need a computer, but he certainly started to get interested in the field by having fun playing with one.
Smart people can (evidently) be wrong sometimes.
Computer science to computers is more like human biology to surgery, than telescopes to astronomy. You can be an expert telescope maker / maintainer, and use a telescope, without knowing a thing about astronomy. You cannot be an expert computer maker / maintainer / programmer without knowing computer science.
// MD_Update(&m,buf,j);
I'm not sure that learning some superficial idea of a language is going to help. And I'll give you a couple of reasons why:
1. Dunning-Kruger. The people with the least knowledge on the domain are those who overrate their knowledge the most.
Now I really wish to believe that some management or marketing guy is willing to sink 10,000 hours into becoming good at programming, and have a good idea of exactly what he's asking for. I really do. But we both know that even if he does a decent amount overtime, that's about 3 years of doing NOTHING BUT programming, i.e., he'd have to not do his real job at all any more. Or more like 15 years if he does some two-hours a day of hobby-style programming in the afternoon. And he probably won't even do that.
What is actually going to happen, if at all, is that he'll plod through it up to first peak of his own sense of how much it knows, i.e., the Dunning-Kruger sweet spot. The point where he thinks he knows it all, except, you know, maybe some minor esoteric stuff that doesn't matter anyway. But is actually the point where he doesn't know jack.
2. And from my experience, those are the worst problem bosses. The kind which is an illustration of Russell's, "The trouble with the world is that the stupid are cocksure and the intelligent are full of doubt." The kind who is cock-sure that he probably is better at programming than you anyway, he just, you know, doesn't have the time to actually do it. (Read: to actually get experience.)
That's the kind who's just moved from just a paranoid suspicion that your making a fuss about the 32414'th change request is taking advantage of him, to the kind who "knows" that you're just an unreasonable asshole. After all, he has no problem making changes to the 1000 line JSP or PHP page he did for practice (half of which being just HTML mixed in with the business code.) If he wants to add a button to that one, hey, his editor even lets him drag and drop it in 5 seconds. Why, he can even change it from displaying a fictive list of widgets to a fictive list of employees. So your wanting to redo a part of the design to accommodate his request to change the whole functionality of a 1,000,000 line program (which is actually quite small) must be some kind of trying to shaft him.
It's the kind who thinks that if he did a simple example program in Visual Fox Pro, a single-user "database", placed the database files on a file server, and then accessed them from another workstation, that makes him qualified to decide he doesn't need MySQL or Oracle for his enterprise system, he can just demand to have it done in Visual Fox Pro. In fact, he "knows" it can be done that way. No, really, this is an actual example that happened to me. Verbatim. I'm not making it up.
3. Well, it doesn't work on other domains either, so I don't see why programming would be any different. People can have a superficial understanding of how a map editor for Skyrim works, and it won't prevent them from coming with some unreasonable idea like that someone should make him every outfit from [insert Anime series] and not just do it for free, but credit him, because, hey, he had the idea. No, seriously, just about every other idiot thinks that the reason someone hasn't done a total conversion from Skyrim to Star Wars is that they didn't have the precious idea.
Basically it's Dunning-Kruger all over again.
I think more than understanding programming, what people need is understanding that ideas are a dime a dozen. What matters is the execution.
What they need to understand is that, no, you're probably not the next Edison or Ford or Steve Jobs or whatever. There are probably a thousand other guys who had the same idea, some may have even tried it, and there might actually be a reason why you never heard of it being actually finished. And even those are remembered for actually having the management skills to make those ideas work, not just for having an idea.
Ford didn't just make it for having the idea of making a cheap
A polar bear is a cartesian bear after a coordinate transform.
(And conversely, programmers also benefit greatly from learning some basics of business to avoid being at the mercy of managers.)
How about "Learn Programming Basics So You Aren't At the Mercy of Programmers" instead? Having "Basic Programming" in the title kind of makes you think that this is about BASIC programming.
If you know a littel of medicine, or mechanic. And you have a accident in the forest, that stuff will help you to repair the engine if is easy, and heal your wounds or stop bleeding.
A small course in programming will not help you "stop bleeding". To even being to create something worthwhile, or repair something complex in software, you must much more information and experience.
-Woof woof woof!
You certainly can be an expert computer maker without knowing computer science. You should know a bit about electrical engineering, though. To program those computers, you can then safely let to the programmers.
The Tao of math: The numbers you can count are not the real numbers.
No, but a computer is probably the most efficient way to actually test your programs. (Even if they're intended to eventually run on something that isn't a computer, such as wired into hardware.)
(1)DOCOMEFROM!2~.2'~#1WHILE:1<-"'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"
If you heard someone say, "I have this idea for a house. But I'm not 'handy', so I need to find someone who will architect and then construct it for me." — you'd probably advise them to just take some time to sit down with a piece of paper and some wood and learn enough to turn their ideas into reality.
Are you kidding?
Modern programming, the real one I mean, requires you to understand algorithms, complexity, system architectures and even compiler bugs.
If you don't want to be at the mercy of "programmers", you need to be a real programmer yourself!
Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
So you're going to some how learn design and testing as well good programming? Oh no that's right you'll just end making yet another insecure ugly web app.
Complex Car mechanics is complex
Simple car mechanics - flat tyre people can do
Complex Programming is Complex
Simple programming is simple - Server needs reboot, shouldnt have uninstalled that app etc
Even if they're intended to eventually run on something that isn't a computer, such as wired into hardware.
That hardware you speak of would be a computer.
Write failed: Broken pipe
many are just wasting my time looking for someone else (me) to do the hard work, but it still might be a good idea so I listen politely. If their business idea makes any sense and they are serious about it then they will invest money in doing it. I explain to them that like any real business they should do good planning and research and that I am prepared to help but they will be invoiced.
The serious ones are the ones who pay the invoices.
My ism, it's full of beliefs.
The suggestion in the original article is (IMHO) completely and utterly wrong, for a mix of reasons explained in other comments.
So let me offer an alternative: instead of learning a smattering of markup language and how to copy JS fragments and trying to modify these for you purpose... learn the basics of being a competent SW TESTER instead.
So when you get a good idea for an app, before looking for a non-asshole programmer, draft a test plan. The more detailed, the better (because tests may also serve as specifications, as TDD teaches us).
When it's done you will have a better idea of the "technical complexity" of your idea, and you don't have to learn any specific programming language for it.
In the olden days patrons or kings would hire composers to create a bit of music. The patron wasn't knowledgeable but had an idea. The composer would create the score and the arrangement and present it to an orchestra. the orchestra would execute the composers vision and thus there would be music played back to the patron. The patron then provides his feedback (applause or derision :) )
The entrepreneur is a patron. The programmer (violin player for e.g.) the project manager (the conductor) are all part of the orchestra.
The missing bit is the composer who is the software architect.
Of course it doesn't hurt for the patron to also understand music as it lets him present his ideas in a way that's more understandable to the composer and the orchestra i.e. removing a layer of intrepretation and also let's him appreciate the complexity of what they are doing but the reality is that he is paying for it and shouldn't need to. The architect should intrepet his idea and present it back to the team in a manner that they understand.
That's the theory atleast :).
Yes sir, I have done a full service on your car, changed the indicator fluid and greased your brake pads so they do not squeak anymore.
Replying to undo a bad mod... admins, we need a confirm button for mods.
I drink to make other people interesting!
That's a great question! It gives me an idea. I'd like to create an Alan Turing! Now if I can just find a hot babe to make him for me ...
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
Guess which is more likely to happen -- that one day you got an idea for an app and need to find a programmer, or that one day you got sick and need to find a doctor, or that one day you got sued and need to find a lawyer?
How about one day you got some savings and need to find a financial/investment adviser? Or you need to buy insurance? etc, etc, etc.
With such logic, how many basic xxx skils one needs to learn in order to simply live a normal life in the modern world?
How about learn some basic social skills so you have friends to refer you to programmers/doctors/lawyers/whomever that aren't assholes when you need them?
A little knowledge is a dangerous thing. All the people I've met that say they can "program" a little over simplify timescales and cost. They also write code poorly and are convinced it's production ready.
Well, no reason why it should. Just about anyone should be able to write some form of pseudocode, however incomplete, for whatever task they want to accomplish with or without the assistance of a computer.
That said, when I first started working with computers back in the '70s, programmers mostly didn't have access to the actual computer hardware, so if the chunk of code was large, we simply wrote out our FORTRAN, Assembly or COBOL programs on a cellulose-fibre "paper" substance called a Coding Sheet with a graphite-filled wooden stick known as a pencil. These were then transcribed on to mag tape by a platoon of very pretty but otherwise non-human keypunch ops who were universally capable of typing at a rate of 6.02 x 10^23 words per minute. (If the program or patch happened to be small or trivial, we used one of those metal card-punch contraptions with an 029 keypad, thus allowing the office door to slam with nothing to restrain it.)
This leisurely approach led to a very different and IMHO more creative attitude to coding, and it was probably no coincidence that many programmers back then were pipe-smokers.
Define "knowing computer science".
Do you mean the sort of common sense you pick up from doing it? If so your definition's circular.
Or are you talking about qualifications? If so would software engineering be a better discipline? Anyway, there are plenty of perfectly competent programmers without any pieces of paper mentioning either.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
By this logic astronomy only exists since the invention of ths telescope. I doubt that.
... as long as the programmer isn't named Zuckerberg.
Figure out how to do a little more than slap together a basic web page.
I agree with his basic concept. It's good for a person to be versatile. There's a famous quote asking the lines of "a man should be able to jump start a car, build a fire, change a diaper, change a faucet washer ...". The idea being, not everyone is a mechanic, but it's good to at least be able to change a tire or jump start a car when needed - to have basic skills in a variety of areas.
By that line of thinking, it's good to be somewhat familiar with shell scripting or Office macros or something similar. HOWEVER, he describes writing web apps for his BUSINESS web site. Rudimentary programming knowledge should include knowing that you shouldn't expose your livelihood to every script kiddie on the planet by writing business web apps without knowing what you are doing. Basic skills in any field include knowing when to get professional assistance. Unfortunately, these days, many coder wannabes learn the very basics by writing web applications, exposing themselves or their employer to significant risks that any competent programer would avoid. That's exactly backwards. Learn on your own desktop first, then let others around you use your programs. Then learn security before exposing your business databases on public internet.
* There's also the whole left brain / right brain thing. I coud never learn to play music, as I simply have no aesthetic sense. Calculus comes easy to me, though. Half of people can never learn programing. They just aren't wired for it.
I don't think that's enough.
Most of the problems with programming aren't writing the code. Anyone can do a write-only program. You can even deliberately go the wrong way about it (I used to do program flow with ONLY goto statements just to annoy a professor who hated goto religiously) and still bend it to do what you wanted.
IMHO to really understand why you need all those patterns, and refactoring, and unit tests, and why you don't just put a connection as a public variable in class X and directly assign it in classes Y and Z (true story, saw that done verbatim), you need to really be thrown into a team and be given a million lines of code written by someone else and be told to make it do something that goes against every assumption that was made at design time. Again, it's not a particularly large system these days, but it will serve to illustrate the point that it's different from immediately finding everything in your own 1000-line test program.
So, no, I don't think just a little BASIC experience will make them understand the real problems better. In fact, it might just make it worse IMHO.
IMHO part of being a good leader is knowing how to delegate. If you're an MBA with no real skills in programming, GUI design, database management, etc, IMHO the solution isn't to learn just enough of ALL of those as to move from "outsider" to "taking decision based on being dangerously incompetent in that field." The solution is to find some people who know that and delegate.
If you don't have anyone you can possibly trust, or, like in TFA, you've actually gotten to the point where you think you're at the mercy of the programmers... well, the first step would be to ask yourself WTH went wrong. But that's ok. You can ask a second opinion. You can get a consultant to eyeball the design and tell you what's wrong or right about it. Or, you know, whatever.
But delegate to those who are the experts. Don't think you've become an expert by learning just a little BASIC. In fact, the latter is the worst possible thing you could do. Or close enough to the worst.
(Of course, in all above it's a generic "you", not, you know, you personally.)
A polar bear is a cartesian bear after a coordinate transform.
Someone on Slashdot pointed me to the Greasemonkey script Moderatrix. It works great.
The Tao of math: The numbers you can count are not the real numbers.
No, not usually a general purpose computer. Just as most programs aren't CPU emulators, most silicon chips aren't general purpose computers. Computers are used to replace special-purpose chips more and more nowadays because they're easily mass-produced, but that's far from essential.
(1)DOCOMEFROM!2~.2'~#1WHILE:1<-"'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"
Programming and computer science should be taught in high schools along with math and physics.
I don't get the "at the mercy of" thing. You aren't at the mercy of musicians. They are at your mercy. They make music and hope someone is willing it listen and, ideally, pay for it.
Learning enough about programming to have some very basic idea of how software works is a decent, but not amazing, idea. Like understanding enough about mechanics to have a basic idea of how a car works.
But, that kind of knowledge really won't make you a better driver or a better tech toy user.
Acquiring the skills and knowledge needed to craft a real application for any platform requires serious effort, more effort than most people are willing to put in. People who are curious should follow their curiosity, but that's it.
-- Slashdot: When Public Access TV Says "No"
Here's a free Monty Python reference - How to play the flute. Just blow in one end and move your fingers on the outside.
That's just what I see happening here. If you think about it, there is a complicated procedure just to be able to get up and start running.
1. Download a (free) programming language.
2. Install it (watch out there... some humps to consider).
3. Find and install dependencies - like an editor, utilities and other tools.
4. Get book(s), reference materials and start collecting links to help sites, forums etc.
5. Learn about APIs, drivers, I/O interfaces
6. Make sure you've got a printer.....
7. Start programming your idea
It's probably simpler to enrol in a course (if one exists) and use that to give you some basis to set yourself up.
But somehow I don't think the author is talking about classical programming. You can't just pick up a programming language that can demonstrate your idea and if you try, it's bound to be the wrong one.
Better advice would be to find out how programming works, what each language can and can't do, what elements you need, what you need to interface with and what you expect as a result. Is it doable?
Maybe all you need is server side knowledge and some html? Certainly easier than playing a flute.
Don't be apathetic. Procrastinate!
Even with a 4-year degree and some talent you wouldn't have the first clue how deep software engineering really is. The different between imperative (the best a neophyte might hope for) and declarative programming alone describes an insurmountable chasm to the casual aspirant.
I think the author may have stumbled over his analogy a bit; rather than suggesting "Learn to sing, or else you'll be at the mercy of an asshole", it's more along the lines of "Learn to sing, so you know what to look for in a good singer". Big Idea People (henceforth referred to as BIPs) are not necessarily a bad thing -- sometimes they do genuinely come up with something good that would benefit the market -- but BIPs have an issue: they tend to have absolutely no concept of what is required to execute their idea.
People on here are imagining CEOs trying to do their jobs and having a good chuckle, but they're missing the point. Your boss, unless he himself used to be a lowly programmer, isn't going to be executing his ideas in any form that could be marketable. I don't believe the author was intentionally arguing this; rather, I think the more important point deals with being able to bring their vision down to a realistic level -- less "My boss is coding our new Android app" and more "My boss now understands why we can't duplicate the functionality of Google in two weeks time". The more he or she codes, the more they begin to understand the work involved.
I've never really considered myself much of a programmer, but having learned to code, I can respect the word involved and that a simple line count doesn't tell the whole story. The same basic principle applies here, too. Not only can it shoot down unrealistic ideas but it can keep them from getting proposed in the first place; they die at his desk, never having left the room, because he figured out long before opening his mouth that, under the current circumstances, it was unreasonable. At the same time, knowing what is possible can potentially give him new ideas about the direction of a project that not only work, but actually might make sense. This is not a bad thing.
Ultimately, there's only so much you can do and there will be limits to what the person in charge of your project knows. Be happy; you're not redundant.
That' why India Owns your ass. That's why I gave up CS.
Learn surgery, so you won't be at the mercy of doctors.
If your idea is any good, there are lots and lots of ways of demonstrating without having to know what a for/each loop is, and it in a way that will open the wallets of a VCs enough for you to hire an effective team who does.
Far better to fail at the prototype stage than fail after hiring an a****e programmer.
I would say a computer is not a necessary prerequisite to programming because all of the thought processes such as defining the problem to the solved, determining the inputs and outputs, if any, for the programme, algorithm creation and verification, etc. can be done entirely with one's brain or in conjunction with pencil and paper. I have designed and implemented entire complex systems solely in my head before touching a keyboard; in nearly every case the defect rate was sufficiently close to zero. When I try developing the software without having it already fully designed in my head, my experience tends to resemble trial-and-error building block assembly. However, most employers do not appreciate seeing their programmers / analysts sitting the their desk not producing any visible work product for hours or often times consecutive days. Worse, the employers turn livid if you suggest leaving the office to think about the problem.
Seriously, after college, the one thing I was never fully prepared for at all was just how astoundingly stupid my own employers were. We're talking about bigtime rich folks who inherited their money from their parents or via other means who never really earned it and really have no business whatsoever being in charge of anything, and yet, they're the ones who make my paycheck possible, so I have to somehow figure out ways to work around their stupidity.
Yeah, just plug in any skill or talent and it's associated profession then realize that one can't do it all.
There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
'The most common thing I hear from aspiring entrepreneurs is, "I have this idea for an app or site. But I'm not technical, so I need to find someone who can make it for me." I point them to my advice about how to hire a programmer, but as most of the good ones are already booked solid, it's a pretty helpless position to be in.
99% of the time it's a "pretty helpless position to be in" because:
1) The "aspiring entrepreneur" will never be able to get a programmer interested because the idea is not good, not original, or neither;
2) The idea is less than half-baked, just the vaguest notion, with no plan nor understanding whatsoever of the massive amount of work required to get from idea to product--yet the "aspiring entrepreneur" will feel he's being generous to offer the programmer 50% of the revenue in exchange for 99.99% of the work.
There's good reasons that most "aspiring entrepreneurs" continue to aspire rather than achieve...
I don't see what the problem is. I mean, it's easy. Just get it done.
IMHO, this is a fish/bicycle argument. Maybe if you're in the business of music i.e. in a band, you need to know how to sing in order to reduce the chance of being replaced as the guitar player. However, in my long experience, middle managers who THINK they have programming knowledge simply make life exceedingly difficult for those of us who actually do the programming. The manager types simply want to feel like they have more control. They'll say "Oh, just change the font in this report so the marketing flakes will be happy" not realizing the hoops you have to jump through when placing form over function. That said, it follows that mangers of programming teams should be cultivated from the programming team and not from some newly minted MBA class.
I don't like this idea because let's say you invest a few hundred hours learning to make a basic prototype. That's cool but what could you have done with those few hundred hours instead? Yep, improve your business.
If you value your time at some hourly wage you just blew a few grand to learn something at a level that you can't really ship to the public. You basically just graduated to that business-y guy who thinks he knows how to program and says great lines like:
"Hi, I have this idea and I think you should use PHP and Javascript to make it. I also have hosting, oh also we need to use sqlite".
Really, why is some business guy trying to decide on which technologies to use for his product? Because he read a few "programming" tutorials on the internet? I won't even work for people like this anymore because they are too annoying. They question everything you do.
As a programmer I am inundated with people telling me their iPhone/ipad app ideas. Most of them are pretty good, and with enough work could be decent and useful apps. I tell them all the same thing. The most time consuming part of development is figuring out the UI, interactions and workflow. These are things they could do on their own with pencil and paper.
If someone came to me with an app idea and had all of the screens and interactions thought through and designed I would jump at it. Because I could make that into an app quickly and easily. So I wouldn't bother learning coding, learn to do mock ups and design workflows. It is necessary for creating good apps anyway and you already know all you need to for a start.
When the first language you learn is basic you have to learn to think very step by step. This is very helpful as you progress into bigger bull dog languages. As you move from Basic to C, C++, Python, Java and etc.... you tend to take your programming methods with you and as you take them you learn to right great structure. Once you have great structure you can learn great coding and from there you become a great programmer. So I say Basic is a great first step to take. You could apply this to other starting languages but for me I started with Basic and I think it helped me in the long run.
The world of "apps" is already a race to the bottom, with a few successful content distribution apps (mostly tied to RIAA and MPAA content) at the top and a gigantic slush pile at the bottom. Do we really need more apps?
God, that's useful.
Astronomy came first. It wasn't until 1608 that a real telescope came to be. That's the Dutch model that Galileo ran with and improved.
Astronomy itself dates back to antiquity. The telescope is just a tool developed for the use of the science.
For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
anyone should be able to write some form of pseudocode
Thinking creatively IS using computer.
Upward mobility is a slippery slope - the higher you climb the more you show your ass.
If your instruction set is too much of a bottleneck, no reasonable amount of programming skill will fully overcome it.
I don't get the "at the mercy of" thing. You aren't at the mercy of musicians. They are at your mercy.
Never worked in an office with a radio playing that wasn't under your control have you?
Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
I don't get the "at the mercy of" thing. You aren't at the mercy of musicians. They are at your mercy. They make music and hope someone is willing it listen and, ideally, pay for it.
Right. There are several million bands on Myspace. A few of which don't suck. "I'm in a band" means less than it used to.
Ideas are a dime a dozen.
Tell that to anyone who's been advised by counsel to apply for a broad patent.
I'd like to create an Alan Turing! Now if I can just find a hot babe to make him for me
You should learn basic gestation so you aren't at the mercy of hot babes.
I don't care if it's 90,000 hectares. That lake was not my doing.
This comment pretty much defines ALL work in the USA. At least it defines every job I have had in 30+ years as an EE. Every operator, electrician, technician, I have worked WITH understands that there IS a division of labor involved; whereas every manager and supervisor I have suffered attemting to work FOR, the executive levels are even worse, uses the excuse that they hired ME to fix everything or they would not have hired me.
The idea that managers and supervisors have ANY responsibility to respond to MY requests for support, either negative or positive, is effectively NON-existent over the last 30+ years at a variety of OEM, power producers, A/E, etc.
When I started out, the only jobs I could get, without experience, was working on BASIC code, developed by managers who thought that, if they could hack something together, that more-or-less worked, then they were programmers.
I was a bloody nightmare. Worst spaghetti code you can imagine. And I could not really complain too much about it. I had to maintain the standards that they developed. It was awful, just bloody awful.
How is computter formed?
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
How hard can it be, right? It shouldn't take that long! The best part is that I'll be able to tell her how to do it better whan I've finished! I can go on, and on, and on ... but, alas, all good things must cum to and end.
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
You appear to have trouble reading. You saw general purpose computer. I just saw computer. General purpose computers are a subset of computers. A thing can be the latter without being the former.
Most analog computers (ask gramps) aren't general purpose, usually far from it.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
...won't be solved by learning some JS and some HTML. If it's enough skill for your app you may as well stop looking for a good programmer and just hire someone cheap and not overbooked, who's done "some JS and some HTML in 24 hours" crash course.
You obviously didn't think before you wrote that. I suggest you do so now.
The fun in chemistry is blowing things up. That doesn't make explosions a necessary nor a sufficient condition for the study of chemistry.
I suppose Charles Babbage, Ada Lovelace, Alan Turing and John von Neumann weren't computer scientists then.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
And so comes my advice: Yes, learn some programming basics. Just some HTML, CSS, and JavaScript should be enough to start.
How on earth is a markup language considered "programming"? If the author can't tell the difference between web monkeys and programmers, he or she has clearly not followed his/her own advice to "learn some programming basics".
If I want to hire a mechanic, and I don't want to be at their mercy, learning to wash cars doesn't help me. Telling the world that I don't know mechanics do more than wash car windows makes me look like an idiot. Honest mechanics will run away from a clueless person.
Dude, anything before about 1965 is antiquity!
(Disclaimer: I was born in 1965)
I think this post really hits the nail on the head. From my own personal experience my basic knowledge of HTML, CSS, PERL, and JAVASCRIPT has allowed me to create an online presence even though my main line of work and experience is engineering. I currently have a website that showcases my residential design work (http://design.medeek.com). It took me about 2 months to cobble this together. Granted I could have sub-contracted it out and not worried about it but then it would have been a black box to me. Now when I need to make any changes I know where exactly everything lives and how it all fits together. If you are any sort of entrepreneur worth his or her salt in today's world I would say that it is almost mandatory to have some sort of web programming skills.
Thank you for your attention.
I have this idea for a song. But I'm not musical, so I need to find someone who will write, perform, and record it for me."
I would say that this is like the business major that approaches us and says they have an idea for a web site but no idea how to program it and no funding and wants to know if we want to start a company with them. And our response is always,"What value do you bring to the company? Why the hell would we want to share the profits with you when you have nothing of value to contribute?" Likewise, "having an idea for a song" is not really adding much if any value to the process of writing it.
"I have this idea for an app or site. But I'm not technical, so I need to find someone who can make it for me.""
Show us the money, idea boy. Otherwise, GTFO.
https://xkcd.com/221/ So you don't fall for this.
I don't know, what is a "computter?"
Upward mobility is a slippery slope - the higher you climb the more you show your ass.
Nay, learn C, since Java has been discredited, and use curses as the interface. A simple prototype program can give the basics of how to initialize curses, address the screen, write text, read from the keyboard with getch(), and close curses.
See the book "Program or be Programmed" by Douglas Rushkoff. It's about this idea, that you should know enough technical stuff not to be bamboozled by it. http://programorbeprogrammed.com/
I think I was first referred to this article here in slashdot Why your idea is worthless.
About 2 decades ago, after having coped w/ CorelDRAW! for longer than I cared to, I started using Altsys Virtuoso --- it suited me perfectly, and I've depended on it for everything from font design to gallery catalogues to books to point-of-presence displays to billboards and to draw up plans for woodworking projects.
Almost 10 years to the day after the FTC told Adobe they had to wait 10 years before acquiring Freehand after their acquisition of Aldus, Adobe bought Macromedia and (ultimately) killed Freehand.
I've tried pretty much every drawing program which is available and they all fall short --- using Illustrator is infuriating, other programs fall short on features or interface --- where possible I've begun coding drawings up using Asymptote and am trying to learn Metafont/post.
I've provided feature feedback to opensource drawing programs, but they've got a long ways to go before they're comparable.
Sphinx of black quartz, judge my vow.
It's shit. You do understand that not all browser windows are the same width, don't you?
It's like a babby without the pragnency.
Re: Just about anyone should be able to write some form of pseudocode, however incomplete,
;>)
Yep. I agree with you there completely. As does (did?) my 3rd-grade teacher, Miss Whitten-Durham, who taught us about "algorithms" by having each of us write down the algorithm for making their favorite sandwiches. I did mine on PB&J cut into four triangles with mom's help! It's the only assignment I remember where many kids wanted to do more than the task required, with many kids writing two sandwich algorithms, and Ralph writing six different recipe algorithms.
"Human biology is no more about surgery than astronomy is about telescopes" still works. Dijkstra wasn't wrong. You are not arguing against what he said. That's called a "strawman". You would be better off trying to work out the ways in which Dijkstra was right, than split semantic hairs to try to prove him wrong. Start with reading comprehension and work from there.
(Next step: elementary set theory, then look at the way direction goes in implication. What he said isn't that complicated, nor is the concept that A => B =/=> B => A.)
Damn, I'd mod that +1 something but I'd already commented. Thanks.
I drink to make other people interesting!
Think you've hit the nail on the head. It's not like cooking or fixing a car where you can learn in small increments that are themselves useful. New recipe, how to change the oil.
You need to learn a lot before you can do anything useful with app development. It's more like a (fairly large) step than a slope.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
You're too kind. I'd be trying to exploit it.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
I can tell if someone else is a good singer or not without having to be able to sing myself. As Doctor Johnson' remarked about critics: "You may scold a carpenter who has made you a bad table, though you cannot make a table. It is not your trade to make tables."
To have a right to do a thing is not at all the same as to be right in doing it
- Learn basic project managment so you aren't at the mercy of project managers
- Learn basic functional analysis so you aren't at the mercy of functional analysts.
Or, in other words, if we all understand where everyone is coming from, we understand each other better.
Then, we can also let go of thinking we are 'at the mercy of' , and really work together as a team ( inspiring each other, not putting each other down ).
and Ralph writing six different recipe algorithms.
Yeah, I knew a fat kid named Ralph, too.
It's almost like the name determines the life. Like calling your daughter Destiny or Britney is just asking for trouble.
There is a lot of overlap between what's in a computer science course and what's in a software engineering course. The fact that there is such an overlap should point us to the fact that computer science isn't this weird abstract offshoot of mathematics that isn't really related to actual computers, but that it is very practical information which gives you a firm grounding in how computers function.
// MD_Update(&m,buf,j);
You are not arguing against what he said.
He was saying that computer science isn't really about computers. I think that is nonsense.
If you want to discuss whether the statement "computer science is no more about computers than astronomy is about telescopes" is strictly logically correct in some way.. I couldn't care less.
// MD_Update(&m,buf,j);
I would say computer science is about theory of computation + study of the actual properties of computing devices.
I see this idea as a two edged sword. It gets around a problem of hiring someone for simple things, but if it suddenly needs to grow into something larger, or if the project was always going to be large it'll be bad.
I've had to put up with people who learned 'a little programming' at work. What usually happens is they write a program and do it all incorrectly. No comments, hard coding things which should be variables, lots of 'goto's', lack of understanding of logic poor structure etc. Then, when something goes wrong or a major change needs to happen they end up coming to me to sort out their mess. When you point out the problems with their code they make statements like, 'Oh, but I'm not a programmer.' and 'You should be able to understand it without comments, you just read it because you can program.'
In the case of people following the advice, they'll learn a little programming and once it hits something difficult, or things don't work, they'll hire someone to sort it out. It isn't the same as learning to sing. If you screw up the singing on a record and need a singer to come in and sing the song for you they don't inherit all the bad singing done before. In music it's probably closer to producing, where if a previous producer did stupid things during the recording process and the session musicians are long gone, you find yourself correcting the things which had been done poorly, and having to hire session musicians to come in a correct parts recorded incorrectly etc.
For simple things it will probably be okay. But for anything with substance the person will either have to get into programming and learn proper coding techniques or hire someone.
Sure enough, the cow costume was hanging up next to the superhero outfit and sailors uniform. (S,Spud)
I am struggling financially right now, I'll still keep practising my guitar as time allows. I learnt few chords through:
http://www.guitarists.net/guitar_lessons/
And hope that you will help me out in my guitar lessons...Hope to hear back from you...thanks!!