In a society where technology and the Internet have become incredibly prominent elements of our daily lives, being able to program is akin to having a super power. In fact, a programmer is able to not only easily interact with cutting edge technology, but also to take advantage of said technology to transform pure thoughts into something as tangible and useful as software.
I would argue that there has never been a more exciting time for being able to program. While being a part of our industry back in the late seventies and early eighties must have been a very exciting time for programmers, I feel that what we have in our hands now is an even greater opportunity.
Today we are standing on the shoulders of giants, and are able to access amazing development tools, frameworks, and libraries – mostly for free thanks to the FOSS movement (and even some commercial powerhouses are now available in free versions).
Cloud computing gets rid of most upfront costs and allows us to scale our apps as the need arises. Mobile marketplaces enable us to target millions of mobile users. Documentation to help you learn how to program abounds in a myriad of media, from blog posts all the way to complete video tutorials.
In addition, programming support forums are becoming ever more amazing, thanks to initiatives like StackOverflow. As such, it’s never been easier (or cheaper, for that matter) to create software that has a major impact on the world.
Even if you have the funds at your disposal to hire programmers to do all the work for you, learning (at least the fundamental basics of) how to program will make your job as a “product guy” considerably easier. Possessing this ability will allow you to better gauge the skill levels of those you’re hiring, and then better communicate your ideas to them, and also understand what the limitations and technical challenges of a given implementation are.
As professional programmers it can be easy to forget how our skills are anything but common. This post is just a thought I wanted to share with those who are considering the possibility of becoming programmers, but haven’t yet donned the proverbial cape and made the leap (or should I say, the single bound).
Photo credit: Julian Fong
Get more stuff like this
Subscribe to my mailing list to receive similar updates about programming.
Thank you for subscribing. Please check your email to confirm your subscription.
Something went wrong.
You’re right Antonio, it’s the era of hacking, programming and experimenting.
this is not the era of hacking, that was 20-30 years ago….
I beg to differ:
http://en.wikipedia.org/wiki/Hackerspace
Yep, the majority of ‘so called’ programmers are basically kids with glue.
someone else did the hard work for them.
probably some 30-40 years ago.
No wonder you’re alone in a boat. What a naive comment grandad.
Saying that is like saying people who invented computers were lame because they didn’t invent electricity, they just used it. Technology is about progress and specialization. Nobody can be a master of all.
it will always be an era of hacking, just at another level! hacking means to tinker and learn. no one man can be expected to know all the technologies out there, that being said he will be a hacker first
hackers rock, they make things possible and fill the gap where others give up expecting to be spoon feed with how-to(s) docs
Jose, that depends on your definition of hacking as well as your abilities. I’m with Aminedigirep on this 🙂
Like Robert A. Henlein, I believe that “programming” is a basic life skill that every human should possess. Mind you, I’m God’s worst programmer; but I can sorta-kinda-maybe get it done. And I’m always trying to (very slowly) learn SOMETHING.
I’d love to hear opinions about what NEW programmer-wannabes should study. If someone brand new wants to learn programming, what should they look at?
I’ll cover my take on this in a new post soon.
Agreed – in my opinion, programming is the new literacy. And we need to start teaching it better, and sooner.
If you’re brand new and want to get into programming, a good approach might be Javascript and a HTML5 gaming framework. It’s fun, and in the worst case you can do with a basic text editor and a browser…
I would agree! Programming should be taught in schools as we progress and not just be an option to pay for this education. I am currently learning C++ at Uni and its very expensive, but also some topics hard to grasp because I have no real foundation for it.
But in reply to the above comment “Javascript and HTML5” are NOT programming languages its Scripting!! I am very experienced with HTML, PHP and Javascript none of which are helping with my programming!
I would recomend small projects and plenty of books on the subjects it seems the more you do the more it sinks in and you can learn constantly trying different way of solving the same problems to find the best solution for the application.
Hey Jim,
I believe the most important thing on the route to be a good programmer is to keep learning. As you mentioned in your post, it will feel slow, but constant effort to learn new things is transforming your techniques and competence dramatically while you may think you are going slow. Imho, this is the most important quality and you obviously have it. Keep up the good work.
highercomputingforeveryone.com, amazing, amazing tutorial to start from absolute 0 understanding about programming. Im sure even some more experienced programmers could find something new
I’ve long regarded all kinds of creative skills as Powers to be sought out, honed, and heartily appreciated. Not just programming, but hardware hacking, screen printing, homebrewing, carpentry, painting, agriculture, sound engineering…
Take advantage of the resources available to us in the form of online information and community, and you’ve got your own Xavier’s School for Gifted Children…
I am trying to teach my self as much C++ as possible before heading off to college and in turn I run into some ‘tough spots’ but, It’s fun I can also say this learning to code has really helped my analytical skills . But I completely agree with you Caner, I think slowly learning something and actually understanding it is better then trying to rush threw and not actually grasping even the basic functionality of it.
Learning to program can be a truly transformative experience; I’ve done a lot of teaching (mostly C++) in the corporate world and just recently I had a student my own age (early 50’s) who started in the 8-bit world like I did, and we shared some of the same memories of the sense of wonder and, well, “super”-ness that came from creating algorithms and then watching your very own computer executing that code at the rate of millions of instructions per second. I used to be mesmerized by “das blinkenlights” on my IMSAI 8080.
While you’re probably correct about far greater power of contemporary software tools and environments, especially in conjunction with social networking, there’s an aspect of what it was like in the mid 70’s that will never be reproduced: when you donned that cape and performed those feats of computation back then, NO ONE KNEW WHAT THE HECK YOU WERE DOING unless you took a long time to explain it to them. I mean, even VAGUELY what you were doing, lol. To me, in several ways that was actually a blessing, as I didn’t have to explain myself to someone who didn’t even know how to formulate the correct questions. But it was also kind of lonely…
That’s awesome, Leor. Thanks for sharing your experience.
Leor – I blame you and your damned isanely excelllent BDS C compiler for my foray into programming :). It was a transformative product.
Your C compiler was my second transformative experience. My first was soldering up a microprocessor system I designed from the Signetics 2650 application notes and seeing it work and thinking that “crickey, these things are going to be in our washing machines, cars. I had better get busy”.
As for this blog topic. I agree. Today is even more exciting.
Well thanks, that’s one of the nicest things anyone has ever said about BDS C 😉
I had some interesting soldering experiences myself…I’d never picked up a soldering iron before assembling my IMSAI. So, new Weller Soldering Station (which I still have in working condition) in hand, I attacked the power supply first…what could go wrong with that, right? Plug it in and it smokes. Had the leads on the electrolytic caps reversed.
Next were the circuit boards: IC sockets, bags of resisters, capacitors, etc… did CPU board first (less stuff on it than the control panel). After turning it all on, dead as a doornail.
Brought the whole machine in to the Computer Mart in Orange County, where’d I’d bought it. Their tech was “The Computer Doctor”. I got it back, working, along with a bill for $20. I learned later that the guy had spent 8 hours tracing down a solder bridge under an IC socket. He knew I was a high-schooler and basically did the work for nothing.
The “Computer Doctor”‘s name? George Tate. 😉
Well BDS C was a very important part of the CP/M ecosystem for a while. I think it had a lot to do with the general takeup of C programming at that time. It was lightning fast compared to the others, and generated reliable code. Most of the BBS systems of the day were compiled with BDS C. I used your compiler at one time to write an assembler for a 6800.
There was an active homebrew community on this side of the Pacific (Sydney) during that time. We messed around a lot here with S2650s, 6800s Z80s. Euro bus kit was pretty popular too. Later on CP/M took off. I remember drooling over the ads in Byte magazine for S100 cards, Tarbell tape interfaces, ADM3A terminals and crap.
My day job at the time was fixing minis and super minis in the field. You should try changing the heads on a washing machine sized disk drive at a customer’s premises after a head crash 🙂 . I kind of drifted into hardware design, communications controllers mainly and then software got to me and for the last 25 years have been solely a software developer.
Today there are so many tools and technologies available to explore that it truly is a wonderful time to be a programmer.
Excellent post, and I could not agree more. Without StackOverflow, it would have taken more than 500 hours to put together a site allowing the general public to review Canada’s climate data:
http://www.whitemagicsoftware.com/software/climate/guru.shtml
Back in grade school (about 30 years ago) I was horrible with math. It was really boring to me, so I chose to NOT complete my homework! However, after I learned to program at home, on my Commodore 64 (Microsoft BASIC v2 and 6510 assembly language), I was suddenly able to breeze right through math.
After my experience, I believe that all children should be taught some form of programming or scripting as a logical thinking primer, before bothering with other subjects (math, chemistry, physics) that will actually be accelerated from that knowledge.
Sorry, but I have to disagree with the idea of this being an ‘exciting time’ to program. It’s not. It’s duller than it’s ever been, and I’ve been doing this since the mid-70s.
Why? Well, the bar to entry is very low now, because all the super dev tools have meant you need to understand very little in order to get a result.
Companies have commodified the profession, treating us like interchangeable cogs (easier to manage than the prima donnas we once were, granted).
Bottom line – I actively discourage you people from joining the profession, largely because it’s become so boring during my lifetime that I can’t imagine what it will be like in another 30 years.
On the other hand, I do believe that internalizing logical thought and understanding problem decomposition are key life skills.
Please, feel free to censor my “colourful” language, if it is not “civil” enough, but I just couldn’t take it anymore!
“As professional programmers it can be easy to forget how our skills are anything but common.”
Typical programmer bullshit.
I’m so fed up with this shit. Programmers must be the most full of shit people ever. It’s like the rest of the world (medics, engineers, firefighters, bakers, quantum physicists etc.) is made up of losers that do some shitty jobs that any programmer can ace. Wrong!
Stop being so full of yourselves!
Oh, and by the way, for the ones that will find my message offensive, I must say that I am also a programmer. I love coding. I’m just not that full of myself.
100% agree with your comment!
RRR and Bilco have it right. Corporate Programming is just a crappy desk job now. The techniques, processes and procedures have been formalised to the stage that we are just production workers, and the software environment takes away all the need for real in-depth knowledge.
There is no such thing as software – there is only hardware in different states.
RNW, RRR and Hershal have it nailed. Job requirements through agencies are can you use this framework, this language, this new version of .NET, can you use this particular flavor of SQL. All of these questions asked by someone who would probably take a lot of convincing that a hard drive is not a computer case.
SQL is prety much SQL and there is never anything that cant be learned in the new version of .Net. There is a new and even more bloated web framework out every few months and websites are slowly becoming facebook pages.
I agree that programming is a great skill, but don’t forget about the IT guys, the networking guys. I am one for a medium sized software company, and those guys would never get any programming done if I wasn’t there to fix there computers for them, get them on the network, and set up their servers. Being elite in Linux makes you a digital super hero, a cybermancer, a techno-mage…
well said Antonio ! programming is a super power and this is the best time for programmers bcos they easily got help from internet and googling……….
Computer is one of the tools that human being created. They use tools to extent their natural capabilities in both physics and thought. Basically people invent, make, and use tools for two reasons. First, tools make it possible for people to do things that were originally impossible for them to do due to the human body and brain natural limitations. Second, tools help them to do thing much faster with much less cost, less danger.
Programming language, just like human language, is an extension of expression of thought. Programming, like speaking, is expressing of what you are thinking. Therefore, a program is a product of ideas.
Being able to use an application in an iPhone or a PC is like being able to drive a car. While being able to programming, is like being able to make a car. With the same manufacturing capability, you could be able to make a space shuttle, and nuclear power plant, or whatsoever. As a MS .NET programmer like me, I am just a worker at a work station of an assemble line to operate a giant monster of robot.
PROGRAMMERS ARE DYING HUNGRY. THERE’S NO GRATIFICATION TO BE A PROGRAMMER ANY MORE. BEING A PROGRAMMER IS CLOSE TO BEING A SUCKER.
Hi Antonio,
I can agree with you that programming could be a super power, but what I would add is that “with great power comes great responsibility”.
Often programmers loose the perspective on real world.
Marco
Programming is so hardly, studying…