Citizen Programmers

  • Comments posted to this topic are about the item Citizen Programmers

  • I'm a big fan of this.

    Recently I was listening to a Channel 9 Microsoft podcast talking about how their products could be used in developer operator environments. Interestingly the podcast talked about Developer Operations being a subdivision of the central IT department and how once an application was up and running the developer would never hand over support to a separate team to maintain the code. Regards this definition I would go further and suggest that organisations should encourage super users aka citizen programmers to develop processes and applications themselves. A mid-way strategy might be to station professional developers with the applications within the sections for whom they do the work and responsible to the divisional head and NOT the IT section. I suggest the benefits of this approach are as follows;

    Geographical location - Not all users or IT sections work in offices where you have access to 47 inch screens with instant Skype, team viewer access and 24/7 high bandwidth internet access.

    Aligning your staff with Corporate Objectives - there is a reason rental houses tend to be more run down than privately owned properties. If something goes wrong it its not going to be the occupiers cost to fix it - its not my job to make it work well. This is rarely the case with people who build and operate their own systems their motivation quickly aligns with the organisations objectives

    Motivation - if they can make it work better by predicting problems and fixing them before they arise their life is made easier

    Education - Hey guess what you learn things about your work if you know how your tools work. You start making connections that feed back to improved practices.

    Reaction Time - for insurance purposes people are duty bound to mitigate damage. Now they do better job at this if they are actually on site when things happen.

    Prioritisation of Work Load - Local users are far better at judging importance. The importance of a job may not relate to its difficulty or complexity. This makes it a requirement to understand the domain when deciding on what problems need to be solved first.

    Security is a phony excuse - you have no defense other than vigilance against a sustained attack from an internal person who is talented. Central IT sections tend to prioritise security over getting work done. Setting ridiculous security levels on everything to protect against a few valuable parts is totally counter productive. The de-motivation of staff and subsequent inefficiency of process is a far greater danger to the viability of your business than fraud is likely to be. Resulting reduced levels of visibility which ironically can increase the opportunity for fraud and likelihood of major errors.

    Central support has its place but for everything is just inefficient.

  • I strongly believe that in a business that markets itself as professional, the end users should stick to being end users and query and report from data but not try to write the applications that collect that data. They wouldn't fully re-wire their home themselves but would call in a professional and they should do the same for business software.

    I'm currently trying to sort out two systems that have been put together in this way - one is about 40 MS Access databases and the other is poor quality classic asp (vbscript) and sql server. Not one table has a proper primary key and clustered index and there's hundreds of tables in one database, many of which are called things like "xyz backup". The author has discovered the database tuning advisor and submitted several of their queries (which are all "select * from") individually, ignoring the overall workload and common sense and faithfully added every recommended non-clustered index straight from that, complete with dta... names. The web pages open connections and recordsets, but there wasn't a close statement in sight, so the whole system comes to a grinding halt regularly as the server gets overloaded. To combat that they added more hardware!

    And with both systems, they were developing on the live system so the first step was to split that off which reduced the server workload by about 50%.

    The biggest problem with these systems is the politics - how do you nicely tell people and, more importantly, their managers. that they've produced an amateur can of worms?

  • Well if it was not for the VB of the 90's I would not have been a programmer today.

    So certainly, if you look on the flip side of your coin, there are benefits as well. I've been messing with basic (GW, and Q) at the age of 13 already. It was more of a hobby. Then in my working career I started playing with VB, and saw the great benefits it could offer. This sparked an interest to pursue it as a career.

    Although vb tought me many bad habits, as I progressed into c# most of those bad habits was forced away seeing as the code does not allow for it.

  • Thoroughly agree with the ZA Crafty. One of the reasons that the citizen programmer is needed today is because the entry bar has been lifted too high by people who regard themselves as 'professional' programmers, whose first response upon being raised to this level of proficiency is to pull up the drawbriged and prevent others from joining their gang.

    Looking down snootily on those who are trying to build solutions that will provide their businesses with workable systems at a reasonable cost is one of the (many) things gives IT 'Professionals' the reputation for being unable to interact with the rest of the business.

    VB6 was one of the great levelers, and permitted thousands of people to enter the world of programming step by step. Most of these were conscientious individuals who quickly learnt to avoid basic errors and went on to invest time in learning ways to improve.

    While the IT 'fraternity' (I chose this word carefully) continue to try to repulse attempts to actually use their carefully crafted data prisons, there will be a need for tools that empower the people who can actually set it free for everyone else's benefit.

  • ZA_Crafty (12/11/2014)


    Well if it was not for the VB of the 90's I would not have been a programmer today.

    So certainly, if you look on the flip side of your coin, there are benefits as well. I've been messing with basic (GW, and Q) at the age of 13 already. It was more of a hobby. Then in my working career I started playing with VB, and saw the great benefits it could offer. This sparked an interest to pursue it as a career.

    Although vb tought me many bad habits, as I progressed into c# most of those bad habits was forced away seeing as the code does not allow for it.

    The biggest challenge might be indeed to launch a development environment that allows 'young citizen programmers' to create solutions and to discover the joy of programming without too many 'bad habbits'. To build a simple application requires a lot of code in most frameworks. Although most code might be generated by some wizard, it still clutters the view on your own program and leaves an impression of a very complex solution to rather simple problems. Has anyone seen a good example lately of such a 'citizen programmer friendly' framework?

  • There are tools that can empower end users. Unfortunately they get no training and no incentive in the work place to learn and master the tools. I see this all the time with coworkers and Excel.

    As programmers we are in a golden age of powerful tools and utilities, many which are free, except for the time to use and master. But few "citizens" realize this and laziness keeps most from trying. As leader of a programming users group that offers free training and books, very few non-professionals even consider the benefits we offer.

  • I'm not sure that a general purpose programing tool geared toward the general public would be useful. However, the general public can extend the functionality of common applications using things like VBA scripting in MS Office, Excel macros and charting, HTML, and drag/drop game designers for Android and iPhone.

    "Do not seek to follow in the footsteps of the wise. Instead, seek what they sought." - Matsuo Basho

  • If developers gave users what they needed, most people would never attempt to write code. I've used many different RDBMS over the years and can tell you that many of the people who write this software don't understand what the users need from it. Case in point- a well known system I was using had a report which showed all items purchased against a job. Fields in this report included the part number, cost, quantity etc. - but not the description of the item. Apparently the developer thought having the part number was adequate, but most people don't relate to SKU's. In particular it drove my boss nuts. I was playing with VB6 back then, and by using a simple join was able to produce a report he liked.

  • There's several sets of issues here.

    It was one thing to play with VB on your home computer where the main risk (and it did indeed often happen) was a trashed machine and an OS install. When you're in a corporate environment, bugs are a lot riskier, involving lost systems, downtime for many people and potential big security holes. Almost every organization has a well meaning person or two who spends much of their time trying to make their processes work. By comparison middle of the road stuff (Excel, Crystal etc) allows people to work with the information they need with less risk (and less wasted time).

    There is a current craze in the headlines of trying to get '100 million more coders' as if learning some coding is essential on such a scale. There are only so many coders needed in the world (and for each coder we really need far more network support people--who don't really need to write any code). Just look at the repetitive fluff that dominates the Apple and Android stores: same stuff over and over again with only a few (<.1%) really valuable and innovative products. If that 99.9% disappeared tomorrow, it would be no loss, it would make the experience better.

    The world needs skilled auto mechanics, but it's really best if the majority of car owners keep their hands out of the machinery.

    ...

    -- FORTRAN manual for Xerox Computers --

  • Power Query is a no brainer, because everyone has to have clean data. Power Pivot is great also, but you need to be able to do VLOOKUP type joins between the tables and the resulting DAX code. Certainly, the Power BI stack is great for writing reporting code. Or rather, NOT writing reporting code, which is a poor use of programmer time. I have not used Access for reports since I used Power Pivot.

  • Sounds like a lot of whining to me. Our country is full of small businesses who have special needs that are not met by off-the-shelf software. If a non-professional programmer can meet the need, even done poorly, in a manner the company can afford (using the non-professional talents of an existing employee) then the company is better for it. Would the company be better off if it had a professional written piece of software? Probably. But I've seen many a professional company come in and fail at creating what a business really needs because they don't understand the business. So having a professional programmer write the software is no sure pathway to success. Let the non-professionals write code. It solves an immediate business need and perhaps sparks something in the non-professional to become a professional. We were all non-professionals at some point in our lives.

    An this business of IT staff not wanting to work on non-professional written programs, doesn't sound much like a professional to me. If you can't look at code and figure out what's wrong then perhaps you are not such a good professional programmer. It just highlights your own lack of talent and what I believe to be even worse, your own lack of interest in helping the business that pays your salary.

  • gregg_dn (12/11/2014)


    If developers gave users what they needed, most people would never attempt to write code. I've used many different RDBMS over the years and can tell you that many of the people who write this software don't understand what the users need from it. Case in point- a well known system I was using had a report which showed all items purchased against a job. Fields in this report included the part number, cost, quantity etc. - but not the description of the item. Apparently the developer thought having the part number was adequate, but most people don't relate to SKU's. In particular it drove my boss nuts. I was playing with VB6 back then, and by using a simple join was able to produce a report he liked.

    When it comes to "repetitive fluff", consider that there are at least 20x more "musicians", "authors", and "political commentators" who's work is available for instant free access on the internet today than there were a generation ago. However, the number of bands worth listening to hasn't changed since 10 or 20 years ago. It is true that a more interconnected world can discover some hidden talent when it comes to art or programming, but I doubt that even the entire global community can spin up 100 million additional new programmers.

    "Do not seek to follow in the footsteps of the wise. Instead, seek what they sought." - Matsuo Basho

  • Iwas Bornready (12/11/2014)


    An this business of IT staff not wanting to work on non-professional written programs, doesn't sound much like a professional to me. If you can't look at code and figure out what's wrong then perhaps you are not such a good professional programmer. It just highlights your own lack of talent and what I believe to be even worse, your own lack of interest in helping the business that pays your salary.

    The reluctance comes from the different standards that apply to code written and supported by the professional compared to the end-user dabbler.

    For the end-user programmer functionality is all. If it works and does the job, that is all that matters. The professional will want to ensure that issues of robustness, scalability and maintainability are addressed.

    So to take an end-user written application into the IT supported domain requires that not only is the code reverse-engineered to understand what it does, but must also be amended to a degree that it meets the stadards that apply to code written within the IT section. That can often result in a resource commitment equal to writing the application from scratch.

  • ZA_Crafty (12/11/2014)


    Well if it was not for the VB of the 90's I would not have been a programmer today.

    So certainly, if you look on the flip side of your coin, there are benefits as well. I've been messing with basic (GW, and Q) at the age of 13 already. It was more of a hobby. Then in my working career I started playing with VB, and saw the great benefits it could offer. This sparked an interest to pursue it as a career.

    Although vb tought me many bad habits, as I progressed into c# most of those bad habits was forced away seeing as the code does not allow for it.

    Absolutely. This sparked a programming revolution. Doesn't mean it was good code. Doesn't mean that we can't own our mistakes and issues. I wrote a few bad VB4 programs.

Viewing 15 posts - 1 through 15 (of 40 total)

You must be logged in to reply to this topic. Login to reply