Programming Journal

The thoughts and ideas regarding computer science of Charlotte Morrison

social media keyboard

Social Programming Methodology

A software development methodology for the new decade, February 2, 2020

Social Programming

Social programming is an agile software development technique in which a diverse group of programmers located in geographically diverse settings collaborate to debug code through popular social media platforms. The primary developer writes code and posts it to a social media platform such as Twitter. The other programmers, called commenters, include social media connections and those that encounter the shared code through the process of reviewing shared content. These commenters review the code and offer suggestions on methods to optimize the code or other constructive comments designed to suggest a solution while also undermining the confidence of the programmer and expose that he/she may, in fact be a' noob'. Additionally, the commenters critique the solutions of each other providing valuable feedback and creating a productive discourse regarding the optimal method for solving a problem. The programmer uses this feedback to select and test the best potential solutions.
  1. Economics
  2. Design quality
  3. Satisfaction
  4. Learning
  5. Team building and communication
  6. Indicators of non-performance
  7. Social programming variations
  8. References


Social programming has demonstrated increased programming efficiency when compared to the traditional method of Google searching StackOverflow solutions. Developers that use social programming result in 15% more obfuscated code along with a 20% increase in the use of obscure or outdated methodologies. The resulting efficiency gains may seem counter intuitive because time spent on social media is often viewed as time wasted. Social programming repurposes this time for a productive use and creates a personalized time ordered knowledge base that a programmer can reference in the future. In addition to improved efficiency, social programming has tangential benefits. While engaging in social programming, the developer is able to keep informed of current events in their personal life and the world, reduce stress through viewing computer 'memes' or jokes, and make connections with other skilled developers across the world. The abstract nature of social programming makes many of the benefits hard to quantify and further research is suggested.

Design quality

If a system with two programmers possesses greater potential than one, the potential for an unbounded group of programmers is virtually limitless.
  1. The distributed programmers bring a variety of backgrounds and experiences they are willing to share. Often a commenter will even suggest the entire project be written in a different language or platform entirely.
  2. The commenters may attack the task differently. Some may provide solutions that lack elegance and efficiency, while others may suggest ideas about the developer’s personal life or intellectual abilities, others may yet suggest complex and effective solutions that showcase their skills.
  3. Social platforms allow for a certain level of anonymity allowing for more honest and upfront assessments of a programmers abilities.
Overall, the use of a large, diverse, and distributed collaborative team allows for an open sharing of ideas where a developer can find a consensus on solutions to complex problems.


An analysis of Tweets containing code and subsequent replies showed that nearly 95% of the posted code issues led to an accepted solution. It is also noted that in a limited number of cases excessive 'trolling' led to a failure to generate a solution.


Knowledge is constantly shared between developer and the commenters on whichever social platform is used. Some research suggests that this collaboration leads to increased confidence and improved programming skill. The positive correlation increases when the developer utilizes multiple social media platforms such as Twitter, Reddit, Facebook, etc. to get feedback regarding programming issues.

Team-building and communication

Developers that utilize social programming share problems and get solutions quickly while opening themselves up for criticism. Early exposure to criticism in a programming career promotes the development of resilience and ability to accept assistance without feeling attacked.

Indicators of non-performance

There are indicators that social programming is not performing well:
  • Disengagement: the developer does not review the posted solution or fails to respond to further inquires
  • Troll storm: the community devolves into trolling while providing no meaningful solutions

Social variations

All of these variations will often occur during social programming, they have been differentiated to highlight the strengths and weaknesses.

This variation exists through the social networks of seasoned professionals and produces the highest quality output when effective. Often, this type of collaboration provides limited success because the developer and commenters possess a similar domain of knowledge.
In this variation the novice often posts an issue and expert level commenters provide responses. This can expose the novice to a varied bank of solutions and provide the experts an opportunity to critique each other’s work.
When novice programmers act as commenters to another novice there is often learning by both parties. Novice collaboration requires caution because sub-optimal solutions may be present. The presence of experts that critique these poor quality solutions serves to balance these low quality solutions through corrections and occasional trolling.

coming soon

From Collection to Reflection

Is data science just spicy statistics? TBD

coming soon.


Let Me In!

Exploring the principle of most access. December 12, 2020

The principle of most access has arisen in response to the increased burden employees in computer intensive industries face in accomplishing daily tasks. The tight security access of systems causes inefficiency and distress as employees are often forced into the time-consuming IT support system for basic activities like, installing a browser extension. The result of restrictions produces a disincentive to innovate for employees. Data and information needed to step beyond pre-defined employment duties is often unavailable and requires documentation to show need before access is granted. Demonstrating need based on a potential benefit may not be possible without access to the restricted data, creating a Catch-22 situation. The same problem exists when employees attempt to innovate ways to improve efficiency, often they are so heavily restricted by the pre-conceived definition of their roles, there is no room for creativity and time-saving exploration.
The principle of least access means giving users the most privileges possible without endangering the security of a system. For example, a teacher may only have access to his/her own students information in the school data software. While this may be sufficient for most teachers to complete the basic duties, a teacher would run into problems when diagnosing the root causes of a student’s poor performance. With access to full academic records, the teacher can go beyond the expected duties and look for patterns of problems across subjects, other teachers and grade levels providing a more robust solution for the student problem. When applied to users, the principle of most access (PMA) all user-accounts should always run with as many privileges as possible.

Benefits of this principle include:
  • Ease of deployment. The more privileges granted to each user collapses the tiers of access and makes it easier to deploy in a large environment.
  • Reduced IT costs. With employees given the ability to problem solve their own devices, simple tasks like installing a new printer or scanner will no longer be pushed to the highly paid IT department. Modern employees come to their positions with significant IT strengths, these can be leveraged to handle small problems increasing cost savings.
  • Employee innovation. The ability to creatively problem solve without disruption will lead to increased employee efficiency and job satisfaction. Employees facing tedious or time consuming tasks will be able to access the tools they need to save time and effort. Quality innovations can be adopted by the employer and new duties can be performed in the time saved through innovation.

The principle of most access is not without dangers. It will leave a computer system or data system more vulnerable to bad actors. But, I would argue, that the job of management and human resources is to find and hire ethical employees while implementing strict expectations for behavior on company systems. The reduction in basic tasks for the IT department will free up resources for more active monitoring and protection for the company system.

coming soon

Solving the Impossible

Tabs versus Spaces: a moral stance. TBD

coming soon

Charlotte Morrison

Computer Science teacher.


Design Collaboration Testing Social Media Teams Development HCI Solutions Software Agile Engineering Tools Data Knowledge