I'm one of those programmers who's been doing this for a million years and would much rather talk about my customers' issues than my own.
To me, programming is just a means to an end. The real issue has always been solving the customer's problem, whether I had to dig deeply into the architecture, use fashionable high level tools, or just resort to pencil, paper, and duct tape. Some of my most rewarding accomplishments have been decidedly "low tech".
I usually find programming meet-ups boring and language centric threads here on Hacker News pointless.
I realize that most programmers don't feel the way I do...so, if programmers are outliers among normals and I'm an outlier among programmers, does that make me an outlier squared or an inlier?
To simplify this even more, you believe more in talking about the beautiful houses you've built and how happy the families are in that house. Whereas there is a full sub-culture of those who want to talk about how they found the newest type of wood for making 4x4's or how fast their new hammer swings.
As if my analog can get even more carpenter like...I wrote about this topic more generally recently: http://www.techdisruptive.com/2012/06/29/the-cyclical-nature... I think often we find ourselves obsessing over the importance of the hammer and believe discussions around the hammer are important and therefore warrant endless discussions, meetups, etc.
A hammer is a skill modifier. Don't believe me? Try hammering a nail with the palm of your hand. As a programmer I deal in thoughtstuff, so things like languages and IDEs are decidedly important. We absolutely must obsess over these things else we'll wind up hammering in nails with the palm of our hands (so to speak) forever.
However, should we stick doggedly to a given tool, especially in the presence of something better?
Your point is definitely true. The challenge is that we don't seem to be skilled in distinguish a hammer that is better from one that is simply newer and different. Programming technology seems to be about 20% utility and 80% fashion.
Sure, wearing pants is good and having pockets lets you carry more stuff. But beyond that, changing your wardrobe because cuffs are out or pleats are coming back is just changing just for fashion's sake.
That isn't to say it isn't important: social signaling is a huge part of what human animals do and we can and should never disregard that part of our simian nature. But we also should try to understand when we're picking things for pragmatic versus social reasons.
Cynical people will see a new fashionable language and dismiss it as a pointless new thing to learn. Eager early adopters will jump right in and swear it's the best thing ever. Look, it even makes program X a one-liner!
Both strategies will make suboptimal decisions, but both have their benefits. Sometimes the reason a new language or framework or abstraction or whatever is a bad idea isn't immediately obvious. It takes real experience with something, including the process of learning how to use that thing effectively, to work out when and where it's useful and where it falls down. Cynics are late to see the good. Early adopters are late to see the bad. Hipsters never get around to seeing the bad, or they decide it's irrelevant… until the fashion shifts, anyway.
Whether you pick up every new technology that comes out or whether you wait until they've matured and proven themselves, you'll spend some time using less than optimal tools for whatever you're doing. But I don't think that's avoidable.
Incidentally, I'm not convinced I truly understand a new tool until I can rant about its shortcomings at length and I've spent enough time with it to be reasonably sure it's not just that my brain hasn't yet warped in the right way for it to make sense. And even then I risk being wrong about it.
I think that this sentence echoes with the OP's last statement. That is, many people absolutely cannot distinguish, but the "we" you mention doesn't describe accurately, well, we. Otherwise, why are we wasting our time with Dart and ClojureScript?
> understand when we're picking things for pragmatic
I don't know you personally (to my great sadness), but I'm willing to bet that we do. :-)
Everyone thinks they are able to distinguish it, clearly not everyone can. Therefore we might be wasting our time with Dart and ClojureScript (they may be shiny and new, but not much better, or we might be right that they truely are better hammers).
It wasn't a criticism on edw519 but rather on programmers as a group.
As tptacek once said: "Try to get it through your head: people who can simultaneously (a) crank out code (or arrange to have code cranked out) and (b) take responsibility for the business outcome of the problems that code is supposed to solve --- people who can speak both tech and biz --- are exceptionally rare."[1]
I would put Ed in the exceptionally rare category.
There is definitely a pop-culture around programming - but specifically around web application programming; the culture of "web developers" often reminds me a lot of high school social dynamics.
What I've found is that the older and more experienced programmers, such as yourself, have graduated out of that social vMeme and embraced their craft as a "problem solving" one - not one specific to web development, or mobile apps.
I identify more with incisive problem solving than I do with a specific area of problems - while I professionally make my money in the realm of distributed systems and web applications; I also enjoy (and apply) quite a bit of my own learning in the subjects of:
* Psychology
* Maths
* Carpentry
* Mechanics (I use much of what I know about fixing/building cars in the building of my software!)
* Writing
* Many others &c...
So, yes, while I agree there is a pop-culture I wouldn't necessarily say that it is defining of the individual. I built my own business specifically because it was so difficult for me to find a job writing software in Python and Erlang - the status quo was (and other than Ruby On Rails) and still is PHP in my industry. I define my move from running a consulting business building "web apps" to building a high-tech startup, where the "web app" is just 10% of solution to the problem we are solving, as my graduation from pop-culture programming to the more general "problem solving" culture.
This is a relatively new attitude, mostly due to web startups, which are more similar to rock bands than to "real" companies. Since web startups are successful due to the number of followers, not the amount of money they make, they had to develop cult-like techniques to attract workers and early adopters. As a result new culture of hipster programmers appeared, which thinks that their way is the only true way.
I'm not sure I agree. I feel the roots herald from the great education push of the 90s, where we saw a new found hyper-focus on training to specialize to almost the micro level before being worthy of doing any job. In software, that meant being a developer wasn't good enough, you had to be an expert in, say, Perl to be even considered for the job that used that technology.
I feel we have more recently started to back away from that mindset as we have realized that general software developers are more valuable than <insert specific technology> specialists, but you still see job postings boasting about the software stack being used as a throwback to the way it was once done. Possibly because the people involved are still largely stuck in the old mindset. The mid-twenties to early-thirties group of developers grew up during that time period, so they see it as just the way it is.
> the great education push of the 90s, where we saw a new found hyper-focus on training to specialize to almost the micro level before being worthy of doing any job
This is off-topic, but I'd like to know more about this. Could you give me some keywords to search off, or some links to read, to see what you're talking about?
Agree so hard.
Start a band(startup) in your garage(garage) with four of your talented musician(programmer) buddies, work long hard hours eating ramen for the love of rock music(hipster programming), get a facebook following(twitter/blog following), get an indie record deal(angel funding) then sign a major label deal (VC funding) and then have the record company(VC firm) dictate your musical direction(business decisions) and take most of your royalties(equity) away in exchange for risking the initial advance, which was only a leveraged loan against future earnings anyway.
The VC and record label model are similar too. Invest in 100 promising bands(startups) and hopefully 5 of them are successes and 2 hit it out of the park(IPO).
that is unnecessarily dismissive of an entire class of programmers (who were, let me add, around long before the web startup explosion). focusing on solving the user's problem is a valuable mindset, and is after all what keeps the industry alive, but focusing on solving the programmer's problem is equally valuable, and helps keep the industry productive.
at the end of the day, yes, you can take a deep breath or several and crank out tens of thousands of lines of java which do the job perfectly well. but you can also notice that bits of it are far more easily done in jruby or clojure, and publish an article outlining your observations that lets the next person who has the same problem get it done with a lot less work and a lower error-rate, and surely that is worth something too.
I guess this will get rapidly downvoted, but let me say it anyways, because I've always felt there's more than a grain of truth to it - If you want to obtain $$, and you feel the way to obtain $$ is to find this mythical customer, and then solve that customer's problem, and then get that customer to part with his $$, so his $$ becomes your $$....its extremely longwinded and convoluted and most importantly, unnecessary.
I had this professor at UChicago who used to say people who did not have a ballmark estimate of M1 & M2 should not even talk about money, let alone suggest how to make it ( http://upload.wikimedia.org/wikipedia/en/5/58/MB%2C_M1_and_M... )
Now its one thing if you are working at a high beta startup...going from 0 to 100MM in a few short years is definitely commendable. But otherwise, this whole idea of squirreling away money little bit by little bit as you find customers and solve their mundane IT problems, whilst not taking an interest in the "pointless meetups & language-centric threads"...is like, I dunno, computing the Riemann integral of some exponential function by taking tiny narrow slices and systematically adding them up one by one. While the procedure is very sound & society will commend you for being this patient, upright, model citizen, you are never going to ever compute that integral this way...life is just too short & there will always be 20 year old Zucks around who will plug the upper & lower bounds into a closed form formula & spit out the answer you were chasing for your entire life. Its just not worth it.
I realize that most programmers don't feel the way I do...
That could be selection bias: how many programmers like you are posting in HN threads, blogging, etc.? I'd venture to guess most are, um, programming instead. The best programmers I know certainly are.
Actually I have 25+ years of programming under the belt and I agree with the observation, so I do feel the same way.
And it is not about being a business men as opposed to a programmer. To me is also a means to an end. OF course is nice to develop for the sake of, but is not reality when it becomes the source of your livelihood.
Having say that, I have observed a pop-culture attitude, but I have not found that attitude in programmers with more than 10 years of experience, so I have always attributed it to youthfulness as opposed to be a characteristic of the profession.
I started off that way. I only reluctantly agreed to start programming to "get things done" for clients. I decided I'd be a solid "business programmer", only interested in coding to solve problems.
Unfortunately, discovering technical things proved to be too delightful. Nowadays, I'd much rather spend time figuring out something, playing with algorithms or doing something technical like reverse engineering, rather than actually trying to delivered a production system.
There's joy in solving problems. A 15-minute script saving an employee _hours_ of work a day - that's awesome. But production, finished, systems usually seem to end up with all sorts of boring "cruft" to deal with the imperfections and craziness of the real world.
When the hackers at MIT in the 60s mostly build tools for programming. Lots of people made fun of them, silly people tring to implement fast lisps, debuggers and simular things. Everybody know that one should fucus on developing useful things with the tools that are allready there.
Its ok to focus on current technology to do something for a time but just never advancing and trying something new is not pointless.
No, I'm the same way. Or at least I've started to become that way.
Conversations about all the cool technologies someone has used in their stack bore me. Or hearing about the wonders of automated testing. Etc, etc.
I find it quite useful, though, to be able to understand tech and also know how it sounds to the muggles. I'm a "business guy" with a CS degree. It's pretty valuable these days to be a translator between the two worlds. In fact, that's precisely what the startup I run helps people with (or aims to).
A lesser benefit is perspective. Guys like us are naturally "duct-tape programmers" - we don't enjoy coding for it's own sake, so we prefer quick 'n' dirty solutions. To be fair, most of the time things should be built properly, but sometimes the duct-tape approach is better.
Have you ever thought of being a project manager or biz dev person? That role usually requires (or benefits from) having past programming experience and the ability to have the skill set to translate and have good communication between tech people and non-tech. I'm a front-end dev/designer but I like communicating with non-tech people and being able to relay that back to a developer in a format that makes him more productive.
Not meaning to nitpick but already doing it... I think you're talking about product managers, as opposed to project managers? Most project managers I know are only spreadsheet pushers while the product managers know a lot about the tech and biz aspects of the project.
Not me.
I'm one of those programmers who's been doing this for a million years and would much rather talk about my customers' issues than my own.
To me, programming is just a means to an end. The real issue has always been solving the customer's problem, whether I had to dig deeply into the architecture, use fashionable high level tools, or just resort to pencil, paper, and duct tape. Some of my most rewarding accomplishments have been decidedly "low tech".
I usually find programming meet-ups boring and language centric threads here on Hacker News pointless.
I realize that most programmers don't feel the way I do...so, if programmers are outliers among normals and I'm an outlier among programmers, does that make me an outlier squared or an inlier?