Slashdot Mirror


'Just Let Me Code!'

An anonymous reader writes: Andrew Binstock has an article about the ever-increasing complexity required to write code. He says, "I got into programming because I like creating stuff. Not just any stuff, but stuff other people find useful. I like the constant problem solving, the use of abstractions that exist for long periods nowhere but in my imagination, and I like seeing the transformation into a living presence. ... The simple programs of a few hundred lines of C++ long ago disappeared from my experience. What was the experience of riding a bicycle has become the equivalent of traveling by jumbo jet; replete with the delays, inspections, limitations on personal choices, and sudden, unexplained cancellations — all at a significantly higher cost. ... Project overhead, even for simple projects, is so heavy that it's a wonder anyone can find the time to code, much less derive joy from it. Software development has become a mostly operational activity, rather than a creative one. The fundamental problem here is not the complexity of apps, but the complexity of tools. Tools have gone rather haywire during the last decade chasing shibboleths of scalability, comprehensiveness, performance. Everything except simplicity."

71 of 372 comments (clear)

  1. Code the way you want... by Anonymous Coward · · Score: 5, Insightful

    ...just do it on your own time, and don't expect people to pay for it.

    He who pays the piper calls the tune...

    1. Re:Code the way you want... by Sowelu · · Score: 5, Insightful

      May I also suggest that you make your work and your hobby /different languages/, so you can more easily separate them. When I've worked and coded-for-fun in Java at the same time, I'm miserable. When I started taking up C# at home (can the language hate, it's fine for small projects) I had a lot more fun. Work in the web industry? Write native apps for a hobby! You CAN code for work and for fun, but only if the projects are different enough that you can get in an entirely different headspace while having fun.

    2. Re:Code the way you want... by SQLGuru · · Score: 4, Interesting

      I finally got to code when I switched from being an employee to being a consultant. My bill rate is high enough that they would rather me work than to get bogged down in meetings. Not saying it will work for everyone, but it worked for me. I've done more REAL work in the past two or three years than I did in the previous 10.

    3. Re:Code the way you want... by epyT-R · · Score: 2

      True, but that doesn't mean those paying aren't getting exactly what they asked for. Dumb corporate policies cost money.

    4. Re:Code the way you want... by i+kan+reed · · Score: 3, Informative

      I'm kinda surprised you chose C# as:

      A. Radically different from java
      and
      B. "Fine for small projects"

      I code for work in C#, and for fun in either python or whatever is topical to the project.

      I used to code for work in python, and for fun in C#, and before that any mixture of java, C, assembly, and scripty-fu-fu suited my professors.

    5. Re:Code the way you want... by Sowelu · · Score: 4, Interesting

      Well, it's different in the ways that make a difference for me...which weirdly enough are "different syntactic sugar" and "a different IDE". It's not as different as it could be, but it does have the advantage of keeping me sharp in the same concepts Java uses as well. I don't have to yell at Eclipse when I'm at home, and I get legit excited when I can play with Linq. (What has my life become...) And that's enough to prevent burnout. But, projectwise, instead of writing backend server components for internet things, I'm writing one big program that decompiles an old retro game and extracts its map and graphics data with a nice graphical client. It feels too big for python. I guess at this point, "small projects" means "things that are not fifty-dev enterprise software things". Small enough that one developer can actually do it all.

      I can say that being one dev in control of an entire hobby project makes me a better unit tester (seriously, what company actually follows its own internal UT guidelines) and is great for architecture experience, if you are a midlevel SDE on the rise.

      There's probably something positive intellectually about having two languages with slightly different data structures; when you try to solve a problem the same way and are forced to make minor changes, you might find optimizations that are useful in both languages.

      My hobby language used to be Multi-User Forth. That got tedious.

    6. Re:Code the way you want... by zidium · · Score: 4, Insightful

      Same here. I hire out people to go to my meetings for me. No joke. It works GREAT!

      --
      Slashdot Valentines Beta Massacre: iT WORKED! The boycotts killed Beta!!
    7. Re:Code the way you want... by FatdogHaiku · · Score: 4, Funny

      When your hobby becomes your profession,
      They will both become an obsession.
      You will code all night long,
      While you're singing a song,
      That relates to your own retrogression!
      [BURMA SHAVE]

      --
      You have the right to remain sentient. If you give up the right to remain sentient, you will be elected to public office
    8. Re:Code the way you want... by Xest · · Score: 2

      Don't really agree, I often use the same languages at home as work and I prefer it that way because I'm more productive due to being intimately familiar with the technologies in question.

      Most the work I've done in the last year has been C#, and I've been using it at home also. I'm much better off working like this than using say C++ for game development in my spare time because I can simply get more done. As an indie I'm not writing the latest and greatest FPS so C# with things like Unity, MonoGame and so forth are more than adequate for what I need and also the best option because there's nothing that'll get me up and doing what I want to do any faster. Sure I could use Java and OpenGL, or C++ and OpenGL or DirectX but I want to actually write games, not write engines.

      I don't see what using a different language would get me, other than less productivity. I simply use the right tool for the job and if the job is getting game development done then why wouldn't I use the same language as at work?

      It seems pointless to artificially cripple yourself by excluding a potentially superior tool for the task at hand just because it's also what you use at work.

      I don't really know what you mean by "more easily separate them", I find it easy to know when I'm sat at home rather than in the office, and I find it easy to tell that I'm doing game development rather than business development so I don't see what difference a language change would possibly make. But then, I'm also not sure what you mean by "can the language hate, it's fine for small projects". It's also fine for extremely large projects, so I don't really know where you're coming from there.

      But perhaps I've been developing long enough and have used enough different languages over the years (C, C++, Java, C#, PHP, and Javascript for example) that simply using a different language for the sake of it isn't really something that particularly excites me anymore. I just want to get things done using the best option possible after weighing up all the options available, and if that's the same as the language I'm currently using at work then so be it, and so what? The only reason I'd switch language is because it's either a better option, or because my goal is explicitly to learn or brush up on that language.

      To me the language is a triviality, it's such an irrelevance in the grand scheme of things, it's the design, the problem solving, and the end product that make the difference that keeps me interested in my spare time, I couldn't care less what it is written in, the language is just a small implementation detail, an important initial thing to decide upon, but small in practice once the decision is made. Getting caught up on language and library details is the antithesis of being a productive programmer - you shouldn't be thinking about the language or the libraries at all, the language should just flow from your fingers naturally without thought. It's the problem solving that should be taking up all of your thoughts so I'd wager if you're getting caught up on language details to even notice that you're using the same language as at work or not and that that in some way frustrates you then you may well lack familiarity with the language, its tools, and its libraries more so than you're willing to accept. Switching to something different again will only prolong the time with which it takes you to acquire that necessary familiarity to be productive.

    9. Re: Code the way you want... by BVis · · Score: 2

      What's your point? The main theory behind being an employee or a consultant (doing work for others in exchange for compensation) is to get paid as much as possible while doing as little work as possible. (The opposite is true for your employer/client; they pay you as little as possible while getting as much work as they can out of you.) Consultants extract money from the "job creators" and return it to the economy. Even if they did no work at all, that extraction justifies their existence.

      --
      Never underestimate the power of stupid people in large groups.
    10. Re: Code the way you want... by loufoque · · Score: 2

      Good domain-specific tools are written as command-line utilities, and are even better if you wrote them yourself for your project.
      Text editing (which includes syntax highlighting etc.) is also much better with a text editor.

      Editors are also more flexible, scale better for large projects, and can do anything you need them to do.
      An IDE is extremely constrained and won't work properly whenever you need to do something that wasn't planned by the developer who coded it.

    11. Re:Code the way you want... by bluefoxlucid · · Score: 2

      A true agile process has an incremental delivery schedule. Rather than building the full deliverable and delivering, it identifies milestones as deliverable product. For example: a waterfall process for building a car would intake requirements and output a car; an agile process would produce the platform for inspection by the customer, followed by the suspension system, the engine, the drive train, interior, and so on, in some useful order.

      For a software product, this involves delivering partial functionality to the customer, who then examines it or even integrates it with his workflow. If there are issues, the functionality can be cheaply reworked; building on top of broken functionality could incur major rework when an issue is encountered, so this process actually reduces work.

      Agile is not Rapid Application Development. RAD has consistently been shown to be a large joke. Agile software project management accomplishes what RAD could not.

      You assume that meetings are the only way to convey requirements instead of working closely with the subject matter experts in a more collaborative manner.

      If you can handle two afternoons' worth of reading, I will direct you here (technical) and here (soft skills). These cover stakeholder management, which is "working with people". Part of that is working with SMEs.

      If you want to argue from an actual competent stance, you'll need to bother reading the (horrifically dry) PMBOK, fifth edition, particularly chapters 5 (scope management) and 10 (communications management). I found chapter 9 (human resource management) fascinating as well; chapter 11 (risk management) is a favorite of mine. Much of the content may sound like gibberish out of full context; reading the book from start to finish is like that, too, because they forward-reference things in the beginning (integration management immediately starts talking about the requirements traceability matrix, IIRC, which is 4 chapters later).

      The short of it is: there are many ways to get information out of people. Meetings are a good method, and arranging good meetings is a skill. Meetings have three isolate purposes: to share information, to develop alternatives, and to make decisions. Never perform more than one in the same meeting; you will make horrific decisions.

      To put this into perspective: We've worked closely with SMEs here, and done things wrong. Sometimes, meetings occur without the SMEs, and decisions are made contrary to what the SME recommended; others, the tech workers (network engineers, programmers, etc.) were consulted separately, and then excluded from decisionary meetings. The result is often people making decision and dropping impossible, poorly defined, or useless shit on you. Then you implement it, and they tell you it's wrong.

      By the by, one of the most important features of a good meeting is it's short.

  2. Who is stopping him? by Karmashock · · Score: 2, Insightful

    Yeah there are some complicated tools but you don't have to use them. Use the old tools and code in the old way... most of them still work no problem. And even with the new ones there's simple ways to do the same thing.

    How many people are throwing up snipits of python code... its everywhere. I really don't know what the fuck this guy is talking about.

    --
    I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
    1. Re:Who is stopping him? by nblender · · Score: 2

      Depending on the environment in which you work. Where I work, there are source code auditing tools you are required to run against your code to meet various customer-imposed requirements; there are code-review tools... There are hardware debuggers that are tied to irritating IDE's like Eclipse... There is a veritable cornucopia of mandated tools, none of which actually help me to write code, but exist to make some manager or customer happy.

      I think what the submitter wants is to be able to 'hack' like the old days. Either find a different job or sign up with some open source gig and hack to your heart's desire.

    2. Re:Who is stopping him? by Matheus · · Score: 4, Insightful

      Sounds more like a cranky dev who graduated looking forward to creating Interesting Things(tm) and found themselves in the wealth of jobs out there creating What People Will Pay You To Do(tm) and is trying to find something grander than his lack of interesting job opportunities to fault it on.

      As stated: If you want to create something fun with simple tools THEN FREAKING DO IT! There is nothing in this world holding you back unless all you are willing to work on is what someone is paying you to do.

    3. Re:Who is stopping him? by Karmashock · · Score: 2, Insightful

      Even considering all that, have a standard template that triggers all that crap and then build your little creative projects in subroutines.

      Is it harder to code in windows then in DOS? you're a lot farther from the hardware in windows. There is a lot more going on. But you don't see most of it because its abstracted or hidden away and mostly it doesn't matter.
      Do the same thing with all your debugging shit. Write a template that loads and manages all that shit so you can hack it like you want to while retaining compliance.

      If anything this guy just came up with a good coding project.

      Here you might say that your little coding projects and hacks need to be linked properly to these various systems and that can be a pain in the ass. But again... why are you doing that manually? Write a program or a script that automatically creates the links.

      What's left... documentation? First off, fuck you if you don't want to document your code and then implement it. Seriously. Fuck yourself with a chainsaw... sideways. I can't tell you how many shitty coding projects I've had to go through line by line trying to figure out how the fucking thing works or even what its doing because the asshole that coded it didn't document anything. I mean... some fucking comment lines every so often would be great.

      So what is left?

      Seriously... if you're a coder then you see all of this as something to fix... and then if it actually bothers you or interests you... you then fix it.

      Once you've built your little wrapper you can then hack it like you did in the old days and the program/script will dynamically create all the linkages and load all the debuggers and whatever the hell else you need to make the fuzzy bunnies happy.

      --
      I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
    4. Re:Who is stopping him? by TheGratefulNet · · Score: 3, Interesting

      I fully understand what he's saying and he's right.

      I started doing software work in the early 80's and it was easy, fast and fun.

      now, its about 'scrum' and 'agile' and all that stupid shit (sorry if that offends). we had a simple life with makefiles and cvs, but now the librarians are complex and not intuitive, the build systems are uber complex and the CI (cont. integr.) stuff is a big change (and a whole system in itself) compared to the nightly build idea. code reviews, enforced coding standards add more slowness to the dev cycle. bug reporting systems are also complex.

      in short, its no fun anymore for us old guys. I fully see what he's saying. he's not talking about tiny snippets but getting shipping code out the door - its more process than it really needs to be, and the quality is STILL NOT THERE, so I don't think we made any real progress. and add in java where even idiots are allowed to write code (no need to free, whoopee!) and you have people who get lazy and if they ever have to write in C, they are totally lost.

      lastly, there are too many fad languages and this wastes everyone's time and since you can't be good at so many things, it spreads you too thin if a project has 5+ languages in it.

      --

      --
      "It is now safe to switch off your computer."
    5. Re:Who is stopping him? by Anonymous Coward · · Score: 2, Funny

      Yeah, I got into "computers" because I was looking forward to a subversive career in hacking into corporate systems and selling their secrets to their competitors and to undermining the US. Now we just crack systems so we can sell email addresses to guys pushing dick pills. Reality really sucks.

    6. Re:Who is stopping him? by Motherfucking+Shit · · Score: 5, Insightful

      Let's say you're a competent Java developer and you'd like to build an Android app. I wish you the best of luck!

      First you're going to need to pick an IDE. I've always used Eclipse and hey look, there's an Android SDK for Eclipse. Perfect! Download, extract, fire it up... Errors. This version of Android SDK requires Android API version foo, you have version (foo - 9), please use the SDK manager to upgrade. The hell, the IDE bundle doesn't even launch out of the box?

      Alright, so you're distributing your IDE with an outdated version of your API, I can forgive that. Run SDK Manager like it suggested, let it do its thing,. Update available for SDK tools and SDK platform tools, looks good, do it! ...And, errors. Package not found, blah blah, let's see what Google has to say about this one.

      OK, apparently hundreds of other developers are having the same problem and have, after much wrangling, figured out a solution on their own. I see, I have to go into SDK Manager Settings, create a new User-Defined Add-On Site pointing to https://dl-ssl.google.com/andr... because the URL that ships with the IDE is missing the "s" in "https" and that server doesn't have the right packages available to download. That highly intuitive process would surely have been my first try anyway, but at least someone else found the fix.

      SDK Manager seems to find the packages now, great! Got past that hurdle so let's do the upgrade. Wait, now what! What do you mean you can't upgrade to SDK Tools rev. 23 while SDK Platform Tools 19.0.2 is installed? I checked the boxes to upgrade them both; if Platform Tools has to hit rev. 20 before SDK Tools can be upgraded, why is the installer going in the wrong order?

      If and when you finally get the actual goddamned IDE installed and working, have fun with the official developer tutorials to create your first "Hello World" app. See, the API has changed over the years^Wmonth^Wpast week and so the app architecture that the tutorial talks about isn't valid anymore. XML files that it says should be there, aren't, so there's no way to follow along in the tutorial by editing them.

      I gave up on Android and won't touch it again unless I'm being paid to.

      --
      "BSD: Free as in speech. Linux: Free as in beer. Windows 10: Free as in herpes." --Man On Pink Corner in #52607549.
    7. Re:Who is stopping him? by Anonymous Coward · · Score: 2, Funny

      Lol, I like this complaining format:

      Yeah, I got into [specialty] because I was looking forward to a [edgy adjective] career in [exciting application of specialty]. Now we just [boring application of specialty] so we can sell [boring application revenue stream]. Reality really sucks.

      Example:
      Yeah, I got into machining because I was looking forward to a fast paced career in aerospace manufacturing. Now we just mass produce injection molds so we can sell crappy plastic coffee makers on ebay. Reality really sucks.

    8. Re:Who is stopping him? by NormalVisual · · Score: 4, Insightful

      You are why spec and finished product do not match.

      I think the main reason why spec and finished product don't match is because "spec" is a moving target that never solidifies. Agile processes just make it worse by not even attempting to nail down requirements beforehand - "it's more important to be able to show progress than actually know what we're supposed to end up with, and don't you dare document anything because it's going to change anyway" along with the idea that it's okay to spend thousands of dollars completely rewriting stuff as the requirements continue to change. It's impossible to properly engineer a product when you don't even know what the product is in advance.

      --
      Please stand clear of the doors, por favor mantenganse alejado de las puertas
    9. Re:Who is stopping him? by Earthquake+Retrofit · · Score: 2

      Going back to the time I learned to program my TRS-80 to play the Afghanistan national anthem on the little relay switch and except for teachers, three or four people have ever looked at my code. Perhaps I take the 'person' in personal computing a bit too personally. But it only took a week of working for a soulless minion of orthodoxy to get me to quit. I'm good at it and I love it. I still know the joy of programming. Years later, the first time I wrote and executed code on a Linux machine, well let's just say I didn't need Viagra for three days. None of this should be taken as advice in making important life decisions.

      --
      Fifty years of Yippie! 1968-2018
    10. Re:Who is stopping him? by msobkow · · Score: 3, Informative

      I believe he's bemoaning the complexity of frameworks and toolkits rather than the tools used to work with those frameworks and toolkits. Technically he's correct -- things are a lot more complex than they used to be for getting the most basic of tasks done.

      But you know what? Business isn't interested in basic tasks any more. They want it secure. They want it scalable. They want a web front end, and a desktop client, and apps for Android and iOS. The days of the old "read billing file, produce accounting records" code have not gone away; those projects were just done 30-40 years ago and don't need to be rewritten, just tweaked from time to time to allow for changes in regulations such as tax law or liability.

      Even the last company I worked for wasn't content with a mere rewrite and update of their core business with the new software -- they had a whole new plan of integrating another 5 or 10 vertical functionality features into the system (it was just an autodialer -- they wanted integrated CRM, push button customer calling, call answering, call forwarding, a full phone system with voice mail support and enhancements to the ever popular auto-answering system of branching menus and responses, and the ability to deploy the whole thing as a multi-client web service instead of deploying custom configured hardware to the client sites.)

      The frameworks and toolkits have correspondingly become more complex in order to support those needs. Look at the transaction processing systems of old -- you'd buy a number of seperate products including a message queueing system, a report formatting tool, a database engine, and a transaction processor, each of which had their own APIs and documentation. Each tool was relatively simple, but getting them all coordinated and working together was hard as hell. Now you take JEE, buy just about any message processor and database you like, and it all largely works with the same API regardless of which vendor's tools you chose. So while the JEE framework is incredibly complex compared to a transaction processor of old, what it does in total is also saving you insane gobs of time integrating and debugging disparate products. So technically JEE is far simpler than things used to be, despite the ramp-up learning curve.

      The same is true of every framework or toolkit I've used for over 10 years -- they tie together multiple vendors products consistently so that only small tweaks are needed to adapt to the vendor's products rather than whole-application re-writes if you decide to swap something out.

      Hell, take a look at what I did with Java, six different vendor databases, and JDBC alone for http://msscodefactory.sourceforge.net. The differences between each of those database integration layers are not subtle, but nor are they particularly arcane. All of the products have virtually the same feature set; there are just differences in how you use JDBC and stored procedures for each database. Compared to "the old days", it was a cake walk to do that integration and customization over the past 3-4 years. And remember I worked on that code by myself -- it wasn't a whole team of programmers dealing with the complexity. If one guy can produce that using standardized toolkits in 3-4 years, how can you say things are more complex than they were when it used to take a team of 100-150 programmers 2 years to produce something similar for one database?

      --
      I do not fail; I succeed at finding out what does not work.
    11. Re:Who is stopping him? by Actually,+I+do+RTFA · · Score: 2

      Watch Google punt on the ADT bundle as soon as they take Android Studio out of beta.

      I also expect to see the second coming of Jesus riding unicorns at that point. Beta is the new Gold Master

      --
      Your ad here. Ask me how!
  3. "Just let me build a bridge!" by horm · · Score: 5, Insightful

    Engineering any complex system requires a significant amount of planning and management overhead. When you want to build a bridge, you don't just throw a bunch of construction workers at it and trust them to make the best judgements, even though you might trust each one of them individually to build a sawhorse or something equally trivial.

    1. Re:"Just let me build a bridge!" by aix+tom · · Score: 5, Insightful

      I agree, and that is actually a pretty good example on how it could/should work in IT also.

      You have an architect or an engineer to make the general plans, then split that into chunks the individual construction workers can handle, and then let them do their job. On top of that you have some sort of infrastructure specialist, who might not know much about bridges, but has determined that there is a traffic bottleneck at point X that needs a bridge.

      I would be perfectly happy to be either the architect or the construction worker in a project, but (for projects larger than a sawhorse) those two people SHOULDN'T be the same person. I that sense I sometime would also like to scream "Just let me Code!" instead of dragging me into all sorts of management meetings where people just sit around going "Say, wouldn't a bridge be nice?" First decide THAT you want a bridge, then decide WHERE you want a bridge, only then come to me to be the architect and get someone else to code, or get an architect that then gets me to code.

      But in IT a lot of unnecessary overhead is caused because people call big meetings of construction workers before having even decided if they want a bridge or not.

    2. Re:"Just let me build a bridge!" by Qzukk · · Score: 4, Insightful

      When you want to build a bridge, you don't just throw a bunch of construction workers at it and trust them to make the best judgements, even though you might trust each one of them individually to build a sawhorse or something equally trivial.

      You also don't have the president of the company come in and declare that this week we're switching to agile bridge building and fuck six, we're going to seven sigmas so we can be on the bleeding edge and shift our paradigms into high gear to synchronize our release schedule and get out ahead of the pack as we swing around the final stretch into the processification.

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
    3. Re:"Just let me build a bridge!" by Impy+the+Impiuos+Imp · · Score: 4, Interesting

      I recall attending a Microsoft Visual C++ Developer's Conference about 15 years ago, when COM and interfaces were all the new rage. I recall one MS guy giving a speech about the complexity of developing with it, bragging, "If it came down to usability for developers or functionality, we chose functionality."

      I knew then I was dealing not with real engineers but with clowns proud of a college project.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    4. Re:"Just let me build a bridge!" by Anonymous Coward · · Score: 5, Funny

      What about synergy? Where is the GOD-DAMNED synergy!? Oh shit, this project is totally going to fail.

    5. Re:"Just let me build a bridge!" by Junta · · Score: 3, Interesting

      those two people SHOULDN'T be the same person.

      In my experience, that is the heart of what is wrong with a lot of software projects: it's considered taboo to do both architecting and developing.

      The theory is obvious enough, but in practice an architect that is not implementing overlooks some very significant issues. The implementer has his hands tied because 'the architect said so' and the implementer trudges on also blindly unaware of anything beyond his little island.

      The best teams I've been in have had everyone participate in architecting and development, with healthy amounts of communication.

      The thing about construction projects is that they are simply so massive you need a horde of construction workers. In software development, we often like to *think* we are making something equally massive when in practice if we do need that many people working on it to get to the goal then it 99% of the time means we are doing something wrong in the first place. If we put hubris aside and realized that the scale isn't so grand as to require a trillion little dependencies and components, we produce good code. This doesn't mean the opposite situation of a gigantic monolithic blob is good, but there is a reasonable middle ground.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    6. Re:"Just let me build a bridge!" by JimFive · · Score: 2

      We need thinkers who can define requirements precisely, designers who can describe processes to produce those results, and then turn the design (UML. Warnier-Orr, Flowchart, etc.) over to a generator

      We already do this, that generator is called a compiler. By the time you have specified a design to the same detail as an engineer specifies a bridge you have already written all the code. Engineers specify a design down to every individual bolt. Software specifications do not design down the individual line of code. This is the difference between engineering and programming: in engineering when a design is completed then the object still has to be built, in programming when the design is completed then the program is done.
      --
      JimFive

      --
      Please stop using the word theory when you mean hypothesis.
  4. We need to talk about your TPS reports by Joe_Dragon · · Score: 4, Funny

    It seems that you did not put the new cover letters on them.

  5. Bicycles and Jets by bill_mcgonigle · · Score: 3, Insightful

    If you want to bring three hundred people half way around the world, don't try to do it on your bicycle.

    If you enjoy bicycling far more than piloting a jumbo jet, then you should be in bicycling, not commercial aviation.

    What, you don't like jumbo jets and nobody wants to pay you to ride a bicycle? Maybe you should invent the hyperloop or manage a B&B instead.

    --
    My God, it's Full of Source!
    OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
  6. Cue the "artist" vs. the "engineer" by Anonymous Coward · · Score: 5, Insightful

    This is a old song and dance. It's easy to create software, but it is difficult to create and maintain good software.

    Apply Sturgeon's Law and be done with it.

    I'm tired of whiny youngsters, and not-so-young wimps who think they can program because they took a few classes, or got hired by a tech company who was desperate to hire anybody with even the slightest talent.

    Like the whining by Phil Fish in Indie Game movie about it being hard to write video games. Duh.

    Get over yourself, it's called work. Many people including many programmers have being doing it for several decades now.

    1. Re:Cue the "artist" vs. the "engineer" by Anonymous Coward · · Score: 3, Insightful

      You got that right....

      I'm working on my third decade at this job and I can assure you that the time you spend "coding" is actually one of the smaller tasks you have to do as a programmer. There are all the things you must do to get ready to code, the coordination with the people you work with, design and documentation to go with it and all the things you do AFTER you code, the testing, verification and debugging of the problems uncovered. There is also the "Oh Crap! I didn't write this!" time you use up when trying to figure out other people's code (or perhaps what they did to your code..). Not to mention the "What the!!!! What was I thinking?" time waster. Then there is all the logistics like performance reviews, filling out time cards and taking ethics and sexual harassment training...

      There are two ways to avoid all this...

      1. Only program for fun, not profit. Volunteer for some project, but keep it small.

      2. Only work in small ma & pop shops where you are the only programmer they have and none of your programs exceed a few thousand lines. Don't expect to make any money.

      If you want to make a living at this job, sit down and do the job. Stop griping about the parts you don't like....

      Now you greenhorn Java hacks who think a punch card gets you a free coffee can get off my lawn.

  7. Thats why I stock MILLIONS of retro-components... by MindPrison · · Score: 3, Insightful

    ...Yep, got a pretty solid collection of those components, yesterdays micro controllers, CPU, Ram, Rom, Transistors, Tubes, Electrolytic Caps, Resistors, Varistors, Nuvistors and whatnotstors...

    Yep, they're old...but they've made me a finalist in various international Robotics competitions, given me freedom to invent stuff from scratch without making everything overly complicated, kind of like LEGO building bricks...you can make anything you put your mind to, and I like a CLUTTER FREE mind.

    I do feel the pain of many of todays youngsters who have to go trough extreme learning curves just to get into "the game" from scratch, not easy. Everything is specialized and we literally have no jack-of-all-trades coders anymore, pity...that's what we need IMHO.

    --
    What this world is coming to - is for you and me to decide.
  8. Re: Just let me do brain surgery! by Anonymous Coward · · Score: 5, Insightful

    Actuall, during a surgery every scalpel move does not need to be pre-approved by some clueless administrator. The surgeon knows his job and does it with great freedom. He/She 'just do' brain surgery

    Nobody would survive a brain surgery if a physician would have to go through the same hurdles as a professional programmer

  9. And here I thought it got easier... by Anonymous Coward · · Score: 2, Insightful

    With new processors being absurdly faster than they were 10 years ago, writing programs has never been easier thanks to the plethora of scripting languages available today. It seems like a lot of the tools are easier than ever to use, or still in use (make). Text editors like SublimeText or gEdit can help alleviate some of the terminal based text editor fear in a more "Word" like environment.

    IDEs can do some crazy shit with little or no knowledge of what's going on in the inside, just sit back and "enjoy" the magic.

    I personally write a lot of small programs, and I've never thought "this has gotten harder." Granted, I'm explicitly making the choice to use a scripting language instead of something like C, Java, Haskell, Erlang, etc. but due to the advancements in hardward-- why not? Unless you're programming low-latency server applications or games it really doesn't matter.

    Maybe it's just a problem of you not finding, or having the right tool for the job?

    P.S. Try scaling up a 100 servers on the cloud using Chef, then try doing that with tools/platforms from 10 years ago... No don't. It'd be irritating as shitting on an ant hill.

  10. Documentation by pooh666 · · Score: 5, Informative

    I don't really follow what this guy is talking about in general. But one thing I have noticed is that documentation quality on new tools/APIs has steadily gone downhill. For example, I am really excited about node.js, but on the page proper, their docs just dump some bits of info on standard functions. That ends up making learning something new, really fast, more difficult than it used to be because you have to go to 3rd party sources, they may be full of crap, way out of date or both. It is one thing to have to put in your time to get comfortable with something new, but it is another to have to act like you are hacking a black box to learn it.

    1. Re:Documentation by Tablizer · · Score: 3, Funny

      You don't gettit. See, if they documented node.js well, it would no longer have "nerd cred"; it would become Yet Another Boring Framework/Tool with 20 titles out like Learn Node.Js in 7 Days Unleashed Bible Face-First into the Deep End Without Water instead of an elite tool for elite nerds who can master the arcane and obtuse to write the distributed 3D TwitterFace.com and Fix ObamaCare.org in 3 days.

  11. Re:Just let me do brain surgery! by Anonymous Coward · · Score: 3, Informative

    Actually, there are plenty of doctors who would just like to treat patients. Instead they have to deal with insurance companies, malpractice, paying off their loans, etc. Just the other day I was thinking that this probably explains why there is no shortage of doctors who will give you a "420 recommendation" but there's a shortage of physicians accepting Medicaid patients. The Medicaid program isn't even being properly funded here.

    So yeah, the doctors would really like to treat patients; but there's no satisfaction in it because of the system and in some cases there's not even money. You can't blame some of them for becoming pot doctors.

    I guess maybe the equivalent of being a pot software developer is either to write black hat stuff, or work for the NSA or some other government agency that violates our rights. Kind of ironic, since the pot-heads would be on the other side if you took the government agency route.

    Anyway, your analogy is flawed. You're glossing over the real issues. Any profession can be bogged down with beurocracy and complexity that's perceived as interfering with certain human factors. You can't just gloss over the issue so easily. Some of these extra tasks have a purpose and can't be eliminated; some of them have no purpose other than to satisfy the irrational fears of those who hold the purse strings. Those can and should be eliminated.

  12. The price you pay by petes_PoV · · Score: 4, Insightful

    The simple programs of a few hundred lines of C++ long ago disappeared from my experience

    I think the reason is, that people who pay for software have been bitten by "simple" programs too often.

    With a simple program: one where you open a file, do some stuff and produce an output - that always supposes that everything works as it's expected to. It assumes the input file has the expected name, that it contains the expected data and that the format is what you expect. It also assumes that the data will fall nicely within the bounds of "sensible" values, and that the output can be written as the coder expects.

    However, real-world data is never as neat as we plan for (especially when there is a deadline). There can be missing values, changed formats, some data is floating point or fixed and DATES. Can the "simple" code deal with DD-MM-YY and DD-MM-YYYY or even some people who randomly swap that day / month / year field order, or use names for months - or slip leap years into the fields.

    Basically, with the "simple" libraries that most of us use, there is a fundamental lack of robustness. Our code works with data we expect, but coughs a brick with something unusual - or from a changed specification.

    And then there's the security angle. There's always a security angle

    These are the factors that have made "coding" a complex business. Simply because the simple coding models we use to knock out a couple of hundred lines of code with, have shown themselves up to be wrong, limited an unreliable.

    --
    politicians are like babies' nappies: they should both be changed regularly and for the same reasons
    1. Re:The price you pay by petes_PoV · · Score: 2

      Such checks can be inserted without going beyond a few hundred lines of code

      And then the next guy writes their own set of checks, which work slightly differently and check different things and in a different order. So both of you have spent time writing essentially, the same thing. - And maybe even spent even longer testing it and occasionally documenting it too. OK, maybe that last one''s a stretch. Nobody bothers to document "simple" programs, since we all know the code IS the documentation and any good programmer can work out what is going on (are they still teaching that garbage?)

      And then when there's a change to the data formats, or a migration to a new environment, instead of swapping out one library of standard code - every single soddin' "simple" program has to be checked, re-tested and debugged.

      So no. People who are still doing this sort of thing, even though the industry has been suffering from their intellectual laziness for decades, shouldn't be allowed to develop commercial code.

      --
      politicians are like babies' nappies: they should both be changed regularly and for the same reasons
    2. Re:The price you pay by NormalVisual · · Score: 3, Insightful

      OK, maybe that last one''s a stretch. Nobody bothers to document "simple" programs, since we all know the code IS the documentation and any good programmer can work out what is going on (are they still teaching that garbage?)

      Not just teaching it, *practicing* it. My boss is a hardcore Agile fan, and his official stance is "out of date documentation is worse than no documentation, so don't spend any time documenting anything, and if you can't figure out why this 12-year-old code is doing something, find someone in the group that does". Nice, except none of the guys that actually wrote that cruft are still there, and reading code doesn't necessarily provide any insights as to the higher-level theory of operation when multiple modules work together. Then on top of that, he says "I don't want to see any research tasks in this sprint". So what, I'm supposed to know how this works by osmosis?

      --
      Please stand clear of the doors, por favor mantenganse alejado de las puertas
  13. Boy, do I hear you! by QilessQi · · Score: 4, Insightful

    As a surgeon, I long for the good old days when I could just give my patients a rag to bite on, grab my hacksaw or a good pocket knife, and BOOM, DONE. Now I'm forced to use an "operating room" which has to be "sterilized" along with everything in it -- you wouldn't believe the time it takes! My boss won't even let me use my own hacksaw; instead there's this bewildering array of "scalpels" and "clamps" and things -- they're supposed to make my job easier, but I spend half my time trying to figure out which one's the right one for the job. Oh, and goodbye rag -- I have to have an anaesthesiologist now, and IV tubes for blood and fluids, and all these doohickeys to monitor heartbeat, blood pressure, O2 sat, etc. It's a nightmare!

    Just let me cut!

  14. The complexity has to go somewhere by Krishnoid · · Score: 4, Interesting

    As things become more powerful, you can't just wish away the complexity. Maybe you can hide it in one of these 'shibboleth' things mentioned in the summary. That sounds big enough to hide things. Or maybe we could just use describe things more clearly -- but that's crazy talk.

  15. vi and arduino by cptdondo · · Score: 2

    That's why I work with vi and arduino, or openwrt.... Much more fun, simple, and I can do almost anything I need done.

    But yes, it's a fixie, not a jumbo jet. It's what I like doing, and I happen to make a living at stuff like that. If you are hired to build a jumbo jet, then you need jumbo tools and jumbo overhead. If you don't like it, scale down, hang up a shingle, and get a client. You might be surprised.

  16. the problem is not coding, but coding well. by nimbius · · Score: 5, Informative

    Anyone can write software, but to make it sustainable is a serious challenge. Ive worked at corporations where there was a coding standard that everyone "was expected to know" but it was never told to anyone on their first day (it turns out that was the oreilly perl best practices book.) Im currently working in a shop on a 15 year old application with a confetti development pattern that uses tomcat, jakarta, java, josso, struts, postgres and mysql, as well as a host of other malevolent and unsustainable technology with zero implementation docs and minimal code comments. I understand the love of coding, but as a greybeard i also understand the need for the managerial aspect of it as well so let me try to expound upon what it is we seek to do. im sorry if it comes across in an arrogant way.

    standards, practices, limiting scope and clearly defining goals and objectives prevent redundancy and wasted human time, which lets me keep devs longer because im not constantly sandpitting them in your 'just let me code' app. competent documentation and a service framework with a specific workflow ensure your application can and is debugged in a timely manner when it breaks, meaning I dont drive you out of the company with mandatory 24/7 pagerduty. ITIL and SCRUM are designed to ensure you arent a permanent part of the application, and that I can rely on other teams to help support it if or when you decide to leave for your next job at $corporation. Status updates and progress reviews really dont help you though, they help me. I need this information because at my meetings I have to run defense for you, my star coder. I need to know dates, times, and what it is that you're doing because I translate that into simple english for people in charge of my departments expenditures. "hes just coding" is never an answer i can give to my superiors, because ultimately as a management droid im responsible for you. if something breaks, thats actually my fault. and it makes the entire team look bad, despite it just being your code. If there is an unexplained cancellation and I dont convey it to you, that is also my fault and i expect you to hold me accountable. We're a team.

    I love creativity, i really do, because it means I've hired a good developer. Find a solution, write an application, code a system, but i fully expect you to design it and come up with a unique and functional way to make it the best. But unlike college, the things you do here will impact the company you're a part of for a long time. your code isnt just getting read-and-shred by the adjunct prof, its expected to perform a useful function for us and as such there are dramatically different standards and practices for how you need to code. im only sorry college doesnt teach this; it can be an uncomfortable awakening for many grads.

    --
    Good people go to bed earlier.
  17. Re:web development, and java ee in particular by Daniel+Hoffmann · · Score: 2

    I could throw so many acronyms and language/framework names at you I personally use in a single project that you would want to kill yourself before going into corporate web-dev. And I don't even use Java EE, I use Spring (which is still a beast, but not as bad as Java EE.)

  18. Just some pointers to where you can go by Daniel+Hoffmann · · Score: 2

    void *unemployment;
    struct hell *reality;

  19. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  20. Re:Git Rid of the Java EE Stack and Go Node. by Daniel+Hoffmann · · Score: 2

    I agree, the Java stack in general is way too big and this is from a guy that does Java development with the Spring framework (not as bad as JavaEE.)

    But Java does have one big advantage: It can do anything

    Need to connect to some ancient database? There is a JDBC driver for that.
    Need to dynamically create a new excel spreadsheet, PDF, word document and so on? There is a library for that.
    Need to talk with some bizarre web service that uses some kind of binary format? Probably there is a driver for that.

    Unfortunately for corporate development you really need this kind of flexibility, that is why you don't see Ruby/Python/Node too much in the industry. Even Python (which has a very good set of libraries) comes short in many areas.

    Sure you could write your own driver for Node, but:
    a) You are not that good with node to do it (because it is new and your devs are just learning it)
    b) It will take more time to get it stable than the thing you are trying to build in the first place or it will be buggy as hell

    Sad but true, the language really doesn't matter much these days, what matters most is what the language can talk with and how hard it is to make that language talk. It is getting better though, web-services for example are standardizing in REST APIs.

  21. Yes, no coding. No, problem is not tools by michaelmalak · · Score: 4, Insightful

    Yes, it is true coders have little time to code. But the author misses the primary cause: the ratio of library/framework code to self-written code.

    In the old days (say, 25+ years ago), you would pick up a book -- a single book -- of the OS API calls, memorize, and start coding. Today, with github, it's as if everyone in the world were working on the same single project. Today, a developer needs to learn all these libraries that are coming out daily and how to work with them. In the old days, there was a lot of reinvention and co-invention of the wheel. Today, that is not allowed, because one has an obligation to "buy" (for free) instead of build because of a) of course, development time and b) more importantly, one gets updates/upgrades "for free" without having to invest (much) additional development time, and c) one's organization can advertise in the future for developers who already have experience with that particular library/framework.

    To address specifically the reasons identified by the author:

    • Deployment. This is big, perhaps even as big as the above. In the old days, deployment was copying a single executable file. Today, not only is deployment to various and numerous servers more complicated, but for the past 20 years we've had people dedicated to managing those servers, called sys admins, to handle all those non-coding tasks. Of course, coders end up doing some admin and admins end up doing some coding, so now for the past couple of years we have a new half-breed, the Dev Ops. The very existence of both sysadmin and dev ops are themselves acknowledgement that coding is a smaller percentage of the total work involved.
    • Tools. The author spends most of the piece harping on this, and it's just totally bogus. We've always had source code control, editors, compilers, and linkers, and they've always been a pain at times to work with. But in fact, it's better now because you can find or ask about work-arounds and solutions on StackOverflow instead of calling up tech support at a closed-source vendor.

    But this new development paradigm of the global github hive -- where we're all essentially working on and contributing to this one massive codebase that we all have to understand -- is what the author missed. The amount of custom code to actually code is small now, and the majority of time is spent figuring out how to get the various libraries and frameworks to work.

  22. Re: Just let me do brain surgery! by krlynch · · Score: 4, Insightful

    Of course brain surgeons don't "just do" brain surgery .... in any surgery, there's a ton of pre-operative work, investigation, preparation, paperwork, practice, etc. No one just dives in and cuts open your head.... and just as no one administrator hovers over the scalpel's every move, no manager hovers over every keystroke, either.

  23. Re: Just let me do brain surgery! by Rob+Riggs · · Score: 3, Insightful

    The surgeon knows his job and does it with great freedom. He/She 'just do' brain surgery

    Nobody would survive a brain surgery if a physician would have to go through the same hurdles as a professional programmer

    Very true. By the same token, by the time your average programmer was done with your brain surgery, you'd have toenails growing out of your asshole for some inexplicable reason. "Oh, we'll fix that in the next surgery." *That* is why we have "clueless" administrators pre-approving their shit.

    The brain surgeon has to be worried about malpractice lawsuits; the programmer does not. The brain surgeon requires board certification; the programmer does not. The brain surgeon requires twice the education and years of formal, on the job training before he is ever allowed to operate; your average programmer thinks he/she can write shit-hot code before they even graduate.

    --
    the growth in cynicism and rebellion has not been without cause
  24. DOS had libraries too by tepples · · Score: 2

    In DOS I had to manually draw every UI element.

    Only in your first couple projects. By your third DOS project, you probably would have built up your own UI library.

    But the big thing that DOS did better than Windows back in the early to mid 1990s was using all the features of the VGA. DOS applications could run in low definition (Mode 13h, Mode Y, and Mode X, with resolution of 320x200 to 320x240). This allowed updating the whole screen before Windows finished updating half of a 640x480 standard-definition screen. DOS could also use hardware scrolling to pan over a large virtual area without having to do the bit shifting bullcrap that plagued standard VGA mode back then. Both of these became less relevant, however, as CPU speeds and bus speeds rose and especially as graphics cards began to incorporate 3D rasterizers.

  25. Consider Apple's latest Xcode IDE with Swift by Applehu+Akbar · · Score: 2

    This new language is as much fun to code in as Python without the pure-interpretive overhead. The latest Xcode includes a "playground" prototyping space that makes it easy to experiment with pure code, including library API calls, before cementing your work into the application framework of iOS or OS X. Right now it's a one-manufacturer language, and still beta, but something tells me it's going to spread.

  26. Engineered code vs. created code by davidwr · · Score: 2

    If you have a project that's too big to fit into 1 person's head and you want it to work right and be maintainable, you either have to have a team of people who practically read each other's minds or you have to have a solid design and maintenance process.

    Either that, or you have to accept that unless you get lucky or your code is hardly ever used, you will have problems down the line.

    Having a lightweight or non-existent process is fine for projects that can stay in one person's head and which won't need to be maintained by anyone other than the original author.

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  27. Go work for a bigger company by WaffleMonster · · Score: 2

    Source control, IDEs, build systems and bug trackers... are all very ancient tools that tend to make people more productive so they can spend more time coding... leaving me puzzled and confused by TFA's point.

    He seems to be saying enabling infrastructure to manage a product lifecycle is more difficult or at least non-trivial vs. problem space itself... Suppose if your one of thousands of shops churning out proverbial flashlight and fart apps this could well be the case...otherwise it is hard to understand how it can be true. While supporting infrastructure can and does become very complex for large development efforts there are usually tooling peeps on staff who specialize in each subdomain.

    What makes matters worse you go on to hate DSL's, use NoSQL databases... which leaves me little choice but to assume you hate everything good and nice.

    Either that or you got screwed working for some grossly understaffed rinky dink company with reams of old code nobody understands who lied when they used the word "developer" in job description...LOL.. happens...a..lot.....

  28. Re:Analogies are poor... by Junta · · Score: 2

    My point was that in MS world, you don't have a compiler until you get the SDK (which most people don't even know exists), and most think you only get a compiler through visual studio, whereas in linux it is commonly already there or a 'yum install gcc' or 'apt-get install gcc' away. A *whole* lot of people assume visual studio is a hard requirement to develop with microsoft first-party toolchain and as such you end up with project files for really stupid crap.

    --
    XML is like violence. If it doesn't solve the problem, use more.
  29. doctors like single player systems by Joe_Dragon · · Score: 2

    doctors like single player systems as they don't have to put up that much paper work and billing BS.

  30. Re:Just let me do brain surgery! by k31 · · Score: 2

    This reminds me of the mythical Programmers' Stone project, and how the solution AGC had was to live as a hippy without any money.

    Not, you know, what most people want to do.

    I agree with the insightful replied below (or now, in parallel): there is a lot of stuff that impedes productivity.

    However, I would go further and say, what do you expect to happen if you create an unfair environment from the start? The only way it could get better is if computers were used as tools to empower people, and that hasn't happened since the 8-bit era, and even then, it was by accident.

    Microsoft, Google, Slashdot, and the GNU / Linux project all became big because they empowered people to do what they wanted, at the time. Even with all the problems, Microsoft still makes the best widely available stack to move from idea to product, and they will continue to do so, because Apple only wants clients with "disposable income", but Microsoft wants mindshare first and taxes behind the scenes to maintain their position.

    So as long as you want money up front (Apple, most employees, FOSS in general as consulting fees or attention of peers) and aren't setting up to rule the world (Google, Microsoft) by saturating mindshare, things are going to go the way of "big government", or any big groups, and become so full of red tape that no real innovation can occur.

    Serving the needs of the many requires that you understand how different people are, and how little most people want to pay for something. The concept of "investment" may never be mainstream, and anything which allows people at all levels to make money, most of which does not come directly back to you, then you would be able to dominate minshare... but if you want only competent, professional people on your platform then you will eventually get people who are confident at being professional rather than everyone, including those who want to make the world better or express something new.

    So, if you want to have fun, forget about the professional toolset... it is designed to increase operational level work at the expense of expression, because most of what professionals do is not new, and the more operations it takes, the more hours can be billed and the more job security is created, and the more documentation is left behind in the actual code, even if you do get hit by a bus or try to strike.

    If you want to have fun, get a Raspberry Pi or build your own stack or deal with something that gets you closer to your goals shorter. Or become a novelist, plenty of novelty there.

    The future, if there is any, won't be visible by the professional world, anymore than emulators for game systems can come from the corporate world, or meditation can come directly from big pharma.

  31. Re:If you can get a devkit, that is by Anonymous+Brave+Guy · · Score: 2

    If you're developing on a platform as developer-hostile as that and you're locked into it so your business can't port to other platforms if necessary, I would submit that you have bigger strategic problems and long-term risks than merely being a small company. An arrangement like that is an axe hanging over the head of almost any size of company and you have absolutely no control over when it might fall.

    (No, I don't develop iOS apps or write console games, despite occasionally getting enquiries in those fields, and this is why.)

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  32. Re: Just let me do brain surgery! by Anonymous+Brave+Guy · · Score: 3, Insightful

    Programmers are just cogs in a machine nowadays.

    Code monkeys are, and that's the way that managers who hire code monkeys like it.

    There are plenty of programmers out there creating interesting and useful new software, and plenty of customers/clients willing to pay serious money for the value that software offers them without all the unnecessary bureaucratic overheads and middle management crap.

    If you are a good programmer and professional in your general conduct, you owe it to yourself not to be a code monkey for anyone, IMHO. You have to be really, really unlucky with the time and place when your current gig(s) run out not to have better options in 2014.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  33. I laughed my way through this article by Trillan · · Score: 2

    I laughed my way through this article. The best part was when he said he wasn't the only one, and linked to someone with legitimate concerns.

    Don't want to use a bug tracker? That's fine. Use a TODO file in your directory if you need to put something aside.

    Don't want to use VCS? That's REALLY stupid. Hook a clapper to a backup trigger. "I'm about to do something dangerous! (clap clap!)"

    Why really stupid? Because you can argue git is too complicated, that it lets you do too many things, etc, etc. Great! You might be right. But if you're a beginner, you can get away with:

    The long, laborious setup:
    git init

    Saving changes:
    git add --all .
    git commit -m "This is what I did."

    Undoing changes before saving them:
    git reset --hard
    git clean -fd

    Hell, use a GUI. There's decent ones out there. But use something simple. Start HERE. This gives you an annotated history of what you changed and why. Do NOT argue that's some ridiculous process, because it will probably save you a significant amount of time within your first day.

    Yes, you can set up a remote repository. Yes you can push, branch, merge, whatever the hell you want. But if it's just you, you're damn right that's too much process. So don't do it!

  34. FONC: Fundamentals of New Computing -- Alan Kay by Paul+Fernhout · · Score: 3, Insightful

    From: http://vpri.org/fonc_wiki/inde...
    ---
    We are faced with a need for significant action and the odds are stacked against us. Invention receives no attention, and innovation (even when incorrectly understood) receives lip service in the press but no current-day vehicle exists to to nurture it. This wiki is an open invitation for talented individuals to pool their energy and collaborate towards fundamentally changing computing.

    Over the years many groups have debated how to make progress in computing. There were likely as many opinions as there were people in the debates. Nevertheless personal accounts suggest that initiatives were sometimes reduced to a handful and then pursued with vigour. Consider what could be achieved by following the same pattern today, with the added benefit of doing it as a virtual, distributed team.

    Our goal could be to capture the significant ideas and initiatives that we have been exposed to, are aware of, or can discover, distil them into groups, reduce them to a handful of concepts worthy of vigorous exploration, and focus our efforts on these common ideas with the eventual aim of making substantial progress towards finding a common set of fundamentals of new computing.
    ---

    See also: http://vpri.org/fonc_wiki/inde...

    A big focus of FONC was in reducing lots of complexity. Smalltalk shows what is possible... But in practice new languages and new standards often just add more complexity to the mix and what we often need are better tools for dealing with complexity. And community and trends mean a lot too, as does hireability and ubiquity and easy installability. So, again, in practice, I'm moving to JavaScript with conceptually simple backends (even in, yikes, PHP) -- inspired in part by Dan Ingall's own work with the Lively Kernel which shows what is possible as near-zero-effort-to-install JavaScript apps.

    My own thoughts on FONC from 2010:
    "fonc] On inventing the computing microscope/telescope for the dynamic semantic web"
    https://www.mail-archive.com/f...
    ---
    Biology made a lot of progress by inventing the microscope -- and that was done way before it invented genetic engineering, and even before it understood there were bacteria around. :-)

    What are our computing microscopes now? What are our computing telescopes? Are debuggers crude computing microscopes? Are class hierarchy browsers and package managers and IDEs and web browsers crude computing telescopes?

    Maybe we need to reinvent the computing microscope and computing telescope to help in trying to engineer better digital organisms via FONC? :-) Maybe it is more important to do it first? ...

    It's taken a while for me to see this, but, with JavaScript, essentially each web page can be seen like a Smalltalk ObjectMemory (or text-based image like PataPata writes out). While I work towards using the Pointrel System to add triples in a declarative way, in practice, the web of calling cgi scripts at URLs is a lot like message passing (just more like the earlier Smalltalk-72 way without well-defined syntax). So, essentially, a web of HTML pages with JavaScript and CGI on servers is like the Smalltalk system written large. :-) Just in a very ad hoc and inelegant way. :-)

    ---

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  35. Learn the UNIX Philosophy by Casandro · · Score: 2

    It's an attempt to get the most "bang for the buck". Essentially you write lots of small programs which have limited and well defined functionality, then you hook them up any way you like. In fact taken to the extreme (as with Plan9) you can do anything with simple shell scripts.

    BTW there are simpler developing environments out there which have a decent feature set, without the complexity of a C(++) toolchain. Lazarus is just one example of it. Of course you then loose flexibility. Lazarus, for example, is mostly suitable for GUI applications. Writing a webserver with it is hard. Of course it does GUI decently well, allowing you to have one codebase compiling from everything from your bog standard Linxux (GTK) over MacOSX, Android to even exotic platforms like Win32.

  36. Re: Just let me do brain surgery! by Noah+Haders · · Score: 2

    i had brain surgery once, and I performed brain surgery on somebody else at the same time. that is how you keep the costs down!

  37. I would also like to point out by TsuruchiBrian · · Score: 2

    I would also like to point out that back when it was every coder did everything himself from scratch (i.e. the good old days), the actual products sucked. There was a lot of fun work to be done reinventing the wheel millions of times over, but when 99.9% of the wheels had serious flaws, it was pretty hard for the user of these wheels to get any real work done.

    So it turns out that most programmers are terrible, and they think it's fun to reinvent the wheel, because wheels are the only thing (they think) they understand. They think learning new tools are "boring" or "stupid" but mainly because it's hard to do things in a way you aren't already used to and "hard" things are "stupid" to people that want to use the rationale that the only reason they might not understand something is if it's stupid. The smart programmers learn to use the tools because it actually makes more efficient use of the time spent programming.

    There was a time when programmers complained that compilers were stupid because there was no need to write in a high level language when you could just write in assembly code instead.

    The smart programmers weren't the ones that could read and write in assembly and didn't need high level languages. The smart ones were the ones who recognized that high level languages would make programming more efficient and created that tool.

  38. Complexity as a virtue by anyaristow · · Score: 3, Insightful

    That's because in the 90's programming got more difficult, and programmers *liked* it. No more soccer moms entering the field because they heard it was a way to earn a decent wage.

    Complexity makes programmers feel they can do things most people can't. So, they seek complex solutions. If it's not complex, it must not be the intelligent way to do it, since a lesser person could do the simpler thing.

    They have it backwards, of course. The ability to reduce the complexity of a task is actually a higher skill.

  39. Re:Welcome to engineering by david_thornley · · Score: 2

    Requirements change. The most common reason is that the requirements are normally simply not known until the project is underway. There are exceptions; my wife liked working for accountants because they knew what they wanted ahead of time. However, most people don't know what they need until they see enough things they don't need. Good requirements analysis can help (and I have daydreamed of getting mob enforcers to do it - "Is ya gonna tell me what data you need here or is I gonna break your kneecap?"), but it almost never works all the way. Another reason is that the situation changes, whether by reorganization or new laws. I've also seen requirements people meet with the managers of the workers who are going to use the project, but that's simply bad requirements analysis. I've also been on a very successful scrum project where our hardware engineer was still doing basic design work while we were getting the preparations done. We did know the overall system very well, and so we had a good idea where we were going to have to make changes. I wouldn't recommend that process for everything, but it saved time getting a new process ready for customers.

    Doing visible accounting of the cost of change requests is useful, and on a large project you really do want a change control board. You usually have to be prepared for large changes anyway.

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes