9 ms·
One of the key points of the talk happens around the 32-37 minute mark, comparing the crew sizes of various ships. He makes the point that the core of developm
by zackmorris 12y ago
One of the key points of the talk happens around the 32-37 minute mark, comparing the crew sizes of various ships. He makes the point that the core of development is really putting together the requirements, not writing code. Unfortunately we've put nearly all of the resources of our industry into engineering rather than science (tactics rather than strategies). What he stated very succinctly is that a supercomputer can work out the tactics when provided a strategy, so why are we doing this all by hand?
That’s as far as I’ve gotten in the video so far but I find it kind of haunting that I already know what he’s talking about (brute force, simulated annealing, genetic algorithms, and other simple formulas that evolve a solution) and that these all run horribly on current hardware but are trivial to run on highly parallelized CPUs like the kind that can be built with FPGAs. They also would map quite well to existing computer networks, a bit like SETI@home.
Dunno about anyone else, but nearly the entirety of what I do is a waste of time, and I know it, deep down inside. That’s been a big factor in bouts with depression over the years and things like imposter syndrome. I really quite despise the fact that I’m more of a translator between the spoken word and computer code than an engineer, architect or even craftsman. Unfortunately I follow the money for survival, but if it weren’t for that, I really feel that I could be doing world-class work for what basically amounts to room and board. I wonder if anyone here feels the same…
- jpgvm 12y agoSoftware is a force multiplier. If the initial force is headed towards uselessness software won't save it from it's fate, it will in fact just get it there faster. By the same token if you manage to write some software that is magnifying a force of good the results can be staggering. Software allows us to accomplish more net effect in our lifetimes than was ever possible before. However if we spend our time writing glorified forms over and over again we aren't going to live up to that.
- keithpeter 12y ago"...I’m more of a translator between the spoken word and computer code..." At our current level of technology and business sophistication, that strikes me as a hard enough problem to justify a career with good compensation. Any patterns you are noticing in the translation process?
- zackmorris 12y agoI shouldn’t post this. It’s hard for me to single out specific patterns because it feels like the things I’m doing today (taking an idea from a written description, PowerPoint presentation or flowchart and converting it to run in an operating system with a C-based language) are the same things I was doing 25 years ago. It might be easier to identify changes. If there’s one change that stands out, it’s that we’ve gone from imperative programming to somewhat declarative programming. However, where imperative languages like C, Java, Perl, Python etc (for all their warts) were written by a handful of experts, today we have standards designed by committee. So for example, compiling a shell script in C++ that spins up something like Qt to display “Hello, world!” is orders of magnitude more complicated than typing an index.html and opening it in a browser, and that’s fantastic. But what I didn’t see coming is that the standards have gotten so convoluted that a typical HTML5/CSS/Javascript/PHP/MySQL website is so difficult to get right across browsers that it’s an open problem. Building a browser that can reliably display those standards responsively is nontrivial to say the least. That affects everyone, because when the standards are perceived as being so poor, they are ignored. So now we have the iOS/Android mobile bubble employing millions of software engineers, when really these devices should have just been browsers on the existing internet. There was no need to resurrect Objective-C and Java and write native apps. That’s a pretty strong statement I realize, but I started programming when an 8 MHz 68000 was considered a fast CPU, and even then, graphics processing totally dominated usage (like 95% of a game’s slowness was caused by rasterization). So today when most of that has been offloaded to the GPU, it just doesn’t make sense to still be using low level languages. Even if we used Python for everything, it would still be a couple of orders of magnitude faster than the speed we accepted in the 80s. But everything is still slow, slower in fact than what I grew up with, because of internet lag and megabytes of bloatware. I started writing a big rant about it being unconscionable that nearly everyone is not only technologically illiterate, but that their devices are unprogrammable. But then I realized that that’s not quite accurate, because apps do a lot of computation for people without having to be programmed, which is great. I think what makes me uncomfortable about the app ecosystem is that it’s all cookie cutter. People are disenfranchised from their own computing because they don’t know that they could have the full control of it that we take for granted. They are happy with paying a dollar for a reminder app but don’t realize that a properly programmed cluster of their device and all the devices around them could form a distributed agent that could make writing a reminder superfluous. I think in terms of teraflops and petaflops but the mainstream is happy with megaflops (not even gigaflops!) It’s not that I don’t think regular busy people can reason about this stuff. It’s more that there are systemic barriers in place preventing them from doing so. A simple example is that I grew up with a program called MacroMaker. It let me record my actions and play them back to control apps. So I was introduced to programming before I even knew what it was. Where is that today, and why isn’t that one of the first things they show people when they buy a computer? Boggles my mind. Something similar to that, that would allow the mainstream to communicate with developers is Behavior-Driven Development (BDD). The gist of it is that the client writes the business logic rather than the developer, in a human-readable way. It turns out that their business logic description takes the same form as the unit tests we’ve been writing all these years, we just didn’t know it. It turns out to be fairly easy to build a static mockup with BDD/TDD using hardcoded values and then fill in the back end with a programming language to make an app that can run dynamically. Here is an example for Ruby called Cucumber: http://cukes.info http://cukes.info More info: http://dannorth.net/introducing-bdd/ http://dannorth.net/introducing-bdd/ https://www.youtube.com/watch?v=mT8QDNNhExg https://www.youtube.com/watch?v=mT8QDNNhExg http://en.wikipedia.org/wiki/Behavior-driven_development http://en.wikipedia.org/wiki/Behavior-driven_development How this relates back to my parent post is that a supercomputer today can almost fill in the back end if you provide it with the declarative BDD-oriented business logic written in Gherkin. That means that a distributed or cloud app written in something like Go would give the average person enough computing power that they could be writing their apps in business logic, making many of our jobs obsolete (or at the very least letting us move on to real problems). But where’s the money in that?
- SixSigma 12y agoWhen I got to that point ("All I ever do is write forms for editing databases") I switched to physical engineering - got qualified in Six Sigma, got qualified in Manufacturing Engineering and now I'm doing a degree in Supply Chain Management. Love it.
- dperfect 12y ago> ...I’m more of a translator between the spoken word and computer code than an engineer, architect or even craftsman. What are engineers, architects, and craftsmen but translators of spoken word (or ideas) to various media or physical representations? One could argue that the greatest achievements of history were essentially composed of seemingly mundane tasks. We'd all love to feel like we're doing more than that, perhaps by creating intelligence in some form. Maybe as software engineers we can create as you say "simple formulas that evolve a solution" - and those kinds of algorithms/solutions seem to be long overdue - I think we're definitely headed in that direction. But at some point, even those solutions may not be entirely satisfying to the creative mind - after all, once we teach computers to arrive at solutions themselves, can we really take credit for the solutions that are found? If one is after lasting personal fulfillment, maybe it'd be more effective to apply his or her skills (whatever they may be) more directly to the benefit and wellbeing of other people.
- flueedo 12y agoYeah but being a translator is a different kind of activity from being an engineer, architect or craftsman. It feels to me that being a Software Engineer -- though currently I've been working with something else -- is kinda like (grossly simplifying it) a really complicated game of Lego or Tetris, where the 'pieces' (APIs, routines, functions, protocols, legacy code, etc, etc) don't always fit where/how they were supposed to, sometimes you can tweak them, but sometimes they're black boxes. Sometimes you have to build some pieces, after giving up on trying to make do with what you got. I think that's what the OP means by time wasted. We waste a lot of time getting the pieces to fit and (as much as we can verify) work as they should when we should be spending our time focusing on what structure we want built after all the pieces are in place. Engineers, architects and craftsmen don't work, nor waste anywhere near as much time, with as many "pieces" (if any) that behave in such erratic ways.
- innguest 12y agoThank you for the apt metaphor. I often struggle with explaining how I feel about this but you nailed it. We spend too much time getting these tiny pieces to connect correctly, and more often than not they're misaligned slightly or in ways we can't see yet (until it blows up). It's way too much micro for not enough macro. And there isn't even a way to "sketch" as I can with drawing - you know, loosely define the shape of something before starting to fill in with the details. I keep trying to think of a visual way to "sketch" a program so that it would at least mock-run at first, and then I could fill in the function definitions. I don't mean TDD.
- david927 12y agoThat's exactly it. I sometimes wonder how many brilliant people have left this industry because they were similarly enlightened. (One prominent person in applied computer science recently told me she was considering going to go into medicine because she wanted to do something useful.) It doesn't have to be like this. We have the brain power. But I feel we squander it on making silly websites/apps when we could be making history.
- jsprogrammer 12y agoI think the previous poster already identified the problem: >I follow the money for survival Maybe we can have a system where people can survive without money?
- colund 12y agoNice, however that would remove an incentive for innovation
- perfunctory 12y ago> incentive for innovation Do you think Alan Kay was incentivised by money to do all the stuff he talked about in this video?
- minthd 12y agoOK - so alan kay did working on creating this great system. Is there any knowledge from it used in a practical application today ? Probably no, because a.It's probably too soon. b.It often takes boring work(and money) to transfer pure ideas to successful practical applications.
- perfunctory 12y agowe were talking about insentives for innovation, not insentives for boring work. I agree that boring work should be insentivised by money.
- innguest 12y agoYes, I feel exactly the same. I ride the rollercoaster of depression and the impostor syndrome is definitely there. Most of what I do is mired in incidental complexities that have little to do with the task at hand. Programming in itself is simple because it's a closed system that you can learn and master. What makes it seem hard is having to manage the logistics of it with the crude tools we have (checking logs instead of having a nice graphical control panel for instance). I also feel like all the problems I have to solve are ultimately the same, even if in wildly different areas, because it's all about how do I put these function calls in the right order to get my result. I can never shake the feeling that there could be a generic-programming genetic algorithm that tries a bunch of permutations of function calls and the way the results are the arguments for the next calls, given a list of functions I know are necessary for the solution. I always feel like I am still having to do computer things in my head, while sitting in front of the computer.
- dredmorbius 12y agonearly the entirety of what I do... You are not even hardly alone. And while I suspect the PoV is prevalent in IT, it's hardly specific to it. There's a guy who wrote a book about this so long ago that we don't remember his name. He's known only as "the preacher", sometimes as "the teacher" or "the gatherer". It's Ecclesiastes, in the old testament of the Bible, and begins with "Vanity of vanities, saith the Preacher, vanity of vanities; all is vanity." I'm quite an atheist, not religious, and generally not given to quoting scripture. I find this particular book exceptionally insightful. Much of what you describe is in fact reality for most people -- we "follow the money for survival", but the purpose of it all quite frequently eludes me. I started asking myself two or three years back, "what are the really big problems", largely as I saw that the areas in which they _might_ be addressed, both in Silicon Valley and in the not-for-profit world, there was little real focus on them. I've pursued that question to a series of others (you can find my list elsewhere, though I encourage you to come up with your own set -- I'll tip you to mine if requested). My interest initially (and still principally) has been focusing on asking the right questions -- which I feel a great many disciplines and ideologies have not been doing. Having settled on at least a few of the major ones, I'm exploring their dynamics and trying to come to answers, though those are even harder. It's been an interesting inquiry, and it's illuminated to me at least why the problem exists -- that Life (and its activities) seeks out and exploits entropic gradients, reduces them, and either continues to something else or dies out. You'll find that concept in the Darwin-Lotka Energy Law, named by ecologist Howard Odum in the 1970s, and more recently in the work of UK physicist Jeremy England. Both conclude that evolution is actually a process which maximizes net power throughput -- a case which if true explains a great many paradoxes of human existence. But it does raise the question of what humans do after we've exploited the current set of entropy gradients -- fossil fuels, mineral resources, topsoil and freshwater resources. A question Odum posed in the 1970s and which I arrived at independently in the late 1980s (I found Odum's version, in Environment, Power, and Society only in the past year). But yes, it's a very curious situation.
- heeen2 12y agoThe comparison of the sailship, submarine and the airplane doesn't really hold, though. A sailship travels for weeks or months, has not a single piece of automation and has to be maintained during the journey. Similarily the submarine is meant to travel for long periods of time during which it has to be operated and maintained. Both of those are designed to be self-sufficient, so they have to provide facilities for the crew, and the crew grows due to maintenance required, medical and battle stations. The airplane travels for 16 hours tops and is supported by a sizable crew of engineers, ground control, and for passenger planes, cooks and cleaning personell, on the ground.
- Animats 12y agoRight. Warships try to be self-sufficient and able to deal with battle damage, which means a large on-board crew. The biggest Maersk container ships have a crew of 22. Nimitz-class aircraft carriers have about 3,000, plus 1,500 in the air units. US Navy frigates have about 220. If you want a sense of how many people are behind an airline flight, watch "Air City", which is a Korean drama series about a woman operations manager for Inchon Airport. The Japanese series "Tokyo Airport" is similar. Both were made with extensive airport cooperation, and you get to see all the details. (This, by the way, is typical of Asian dramas about work-related topics. They show how work gets done. US entertainment seldom does that, except for police procedurals.) None of this seems to be relevant to computing.
- mavdi 12y agoThis is exactly how I feel. Even though my income has quadrupled in the last three years I haven't made a single positive impact to anyone's life using my skills. This was a very sad realisation that I've basically been reinventing wheels for a living and not really engineering anything.
- jmickey 12y agoI find it hard to believe that someone would pay you a salary for three years to do something that is completely useless to everyone. At the very minimum, the fruits of your labour are useful to your boss/customer. That is already a single positive impact in someone's life right there. Most likely, your boss/customer then used your developments in their primary business, which, no doubt, affects even more people in a positive way. I believe being in technology, we have the capability to positively affect many orders of magnitude more people, than in most other industries. So cheer up! ;)
- normloman 12y agoI'd caution against making the argument "If someone pays you, it's useful to somebody." It reminds me of the naive assumption of economists, that people are rational and seek to maximize utility. But exceptions easily come to mind. People waste money all the time. Maybe the OP's boss paid him three years salary to do something the boss thought was important, but really just wasted time. And nobody knew it wasted time, because it was hard to measure.
- thirdtruck 12y agoI agree. You may be "helping" your manager, but that may mean helping them displace their political opponent for the sole purpose of taking more power for themselves. That, and I've seen far too many inane requirements and heard too many stories of code that was never used to remain especially optimistic.
- im2w1l 12y agoPursuing promising avenues is not wasted time, even if it ultimately comes to nothing.
- ANTSANTS 12y agoSomeday, mankind will give birth to an artificial intelligence far more sophisticated than anything we can comprehend, and our species will cease to be relevant. A very long time from then, the universe will become too cool to support life as we know it and our entire history will have been for naught. And long before any of that, you and I and everyone here will die and be completely, utterly forgotten, from the basement dwellers to the billionaires. It's called an existential crisis. It's not a special Sillicon Valley angst thing, everyone gets them. Try not to let it get to you too much.
- stickperson 12y agoDoesn't that depend on where you work and what you're working on though?
- tonyedgecombe 12y agoMost workplaces are broken in some way or other, eventually you either learn to grin and bear it or you find a way to escape the system.
- jes5199 12y agoMuch of programming is mindless plumbing, but the problem of specifying what problem you're trying to solve will never go away. Focus your attention there.
- Futurebot 12y agoI do often wonder how many people would do something with a great deal more positive impact (research, full-time work on free software, working on that crazy, but possibly actual world-changing idea/startup, whatever) if they didn't have to worry every day about survival, aging out of their field, being forced to run faster just to stay where they are, etc. One day perhaps we'll get to see what that looks like. For now, though, chasing the money is often the rational thing to do, even if that means building yet another hyperlocal mobile social dog sharing photo app.
- thirdtruck 12y agoI feel exactly the same way. That's been a major driver behind my current career frustration, and one reason that I want to move away from full-time employment categorically. So much of it comes down to focusing on everything but requirements. If someone asks for directions to the wrong destination, it doesn't matter how exceptional of a map you draw. And, despite the importance of requirements, we often trust the requirements gathering tasks to non-technical people. Worse, in large corporate environments, the tasks are often foisted on uncommonly incompetent individuals. When I hear about "Do you want to ...?" popups that are supposed to only have a "Yes" button, I know something is fundamentally broken. I haven't escaped the corporate rat race yet, but I'm taking baby-steps toward a more self-directed work-life. Here's hoping that such a move helps.
- eli_gottlieb 12y ago>Unfortunately I follow the money for survival, but if it weren’t for that, I really feel that I could be doing world-class work for what basically amounts to room and board. I wonder if anyone here feels the same… Ok. So find where to do that, and do it. If you don't have children to support or other family to stick by, you're only excuse is your fear of doing something too unconventional. You want to do world-class work? Cool, let's talk about it. What's world-class to you? What would get you out of bed rather than give you an existential crisis?
- zackmorris 12y agoFor me, doing work that eliminates work is something to aspire to. It doesn't even matter if it's challenging. I would actually prefer to be down in the trenches doing something arduous if the end result is that nobody ever has to do it again. But that only happens in the software world. The real world seems to thrive on inefficiency, so much so that I think it's synonymous with employment. Automate the world, and everyone is out of work. I had a lot more written here but the gist of it is that I would work to eliminate labor, while simultaneously searching for a way that we can all receive a basic income from the newfound productivity. That's sort of my definition of the future, or at least a way of looking at it that might allow us to move on to doing the "real" real work of increasing human longevity or exploring space or evolving artificial intelligence or whatever.
- eli_gottlieb 12y agoWell, there are lots of firms to work at whose primary goal is something that permanently eliminates work. Here's a list I just happened to have on hand: https://hackpad.com/Science-Tech-Startups-zSZ0KdT6Zk1 https://hackpad.com/Science-Tech-Startups-zSZ0KdT6Zk1