Posts

Showing posts with the label software development

Refactor the Agile Manifesto!

Kill yr idols! by Sonic Youth I enthusiastically cheer to the spirit of agile software development! Though I do have a problem with the agile manifesto . The lines made a stand at that point of time. A stand to claim ownership of software development as the craft of software developers. Sadly the stance is weakened by the discussion that is implicit to the juxtaposition in each line. It can be a resounding message of what agile software development stands for. So why not refactor it? We refactor, rework text and code all the time. So here an unashamed refactor of the manifesto: To develop software with agility: Individuals and their interactions develop software. Their main focus is to develop working software. Responding to change is part of developing working software. The customer’s cooperation is necessary to develop working software. These are the guiding principles of agile software development. Unclear? Suggestions? Refactor needed? Let me kn...

Thinking about tech: Technological Determinism

Technology changes the world. Technology improves our lives. Just look at the Black Lives Matters movement. Social Media will drive the change of society to finally get rid of racism. It is the power of social media that drives this change. Technology marches in seven-league boots from one ruthless, revolutionary conquest to another, tearing down old factories and industries, flinging up new processes with terrifying rapidity. by Charles A. Beard The many grave fallacies in the paragraph above show technological determinism in all its reductionist crudeness. Technological determinism is the belief that technology is the main (positive) force that steers the direction of society. It reduces the full complexity of society to a crude [ technology > societal effect ] vision of history and societal change. The Medium is the Message by Marshall McLuhan From left to right, Karl Marx's idea, that fast-changing technologies alter human lives, is pervasive...

Software development as a growing profession - Future

Software development is a growing profession. In three blogposts we’ll be looking at the past, present and future of software development. This post I’ll be looking at the foreseeable future of our profession.  As a software developer I receive quite a few job offers, even internationally. It’s been rumored that our profession is quite popular. So let’s put our popularity in numbers.  Sadly, I could only find some statistics on the US hint at the popularity of our profession. For the US it’s been estimated that by 2021 there will be a shortage of 1.4 million software developers. This is besides the estimated 7 million developers already to be employed in the US. So 1 in 6 software development positions remain unfulfilled. This doesn’t even seem to take a decline of developers into account, e.g. because of  or just changing their profession.  Because of a lack of data I’ll presume that software developers are globally equal...

Software development as a growing profession - Present

Image
Software development is a growing profession. In three blog posts I’ll take a glance at the past, present and future of software development. This post looks at the amount of software developers today (2020). Today there are an estimated 23 million computer programmers, up to 26,5 million . Of these programmers, 15.5 million are professional software developers. The number still grows with 20% each year.  (I f you regress the number of programmers with a yearly growth factor of 1.2 (20%), you end up with a tidy 8 pro’s and 11 total programmers in 1940 .)  In other words, the number of developers doubles in less than 4 years. This means that on average 1 in 6 developers has less than 1 year of experience. Almost 1 in 3 developers has less than two years of experience. Over 2 in 5 developers has less than three years of experience. And to point out the obvious, half of all developers have less than 4 years of experience. This estimation seems to be confirmed by developers th...

Software development as a growing profession - Past

Image
Software development is a growing profession. In three blog posts I’ll take a glance at the past, present and future of software development. This post is on software development from past to present. Humans have made devices that can compute complex calculations from input, as far back as 100 BC, like the Antikythera mechanism . The next step, programming, has been possible since at least the 9th century . The first programmable devices that we know of were programmable musical instruments. The first programs were thus rhythms and melodies. Centuries later Ada Lovelace appeared. She theoretically programmed an algorithm in 1843. She even wrote proofs that it would work. The software was to be executed by a Charles Babbage Analytical Engine, a mechanical computer. The engine ended up not being build, only sets of plans exist. This, sadly, prevented the growth of the profession of steam(punk) developers.  The principle of modern computers was proposed by Alan Turing in 1936 . Nine y...

A Programmer's Oath - Part 04 - Another amateur's attempt at an oath

“ Programming, as a profession, is of great importance to society. Other professions with similar importance have oaths and codes of conduct to guide the professionals in their field, like M.D’s and lawyers. This has benefited their professions in many ways, like taking the lead in the creation of legislature.” ( Read my extended summary of Uncle Bob’s presentation ) Inspired by Uncle Bob I'm taking a glance at an oath for programmers. Why is it important? How can we build on the experience in other professions? What role could an oath play? After 3 other posts, here is my attempt at a Programmer’s Oath. It is an adjusted copy of the Declaration of Geneva , the most widely sworn oath. I’m quite happy with the outcome. Still, like code, any oath it should be properly reviewed. In programming the direct subjects of our work are the programs we create. An oath shouldn’t be complicated by including possible patrons (e.g. ...

A Programmer's Oath - Part 03 - My experience with oaths

“ Programming, as a profession, is of great importance to society. Other professions with similar importance have oaths and codes of conduct to guide the professionals in their field, like M.D’s and lawyers. This has benefited their professions in many ways, like taking the lead in the creation of legislature.” ( Read my extended summary of Uncle Bob’s presentation ). Inspired by Uncle Bob I'm taking a glance at an oath for programmers. Why is it important? How can we build on the experience in other professions? What role could an oath play? In a profession long ago.. In a galaxy long, long ago (2014), I worked as a licensed an in-house insurance agent. A year later I started as an independent financial advisor. While I worked in the financial sector, the lack of trust in the sector was… noticeable. And yes the sector deserves it. The global financial crisis of 2008 is just one of its sins. Some people experience the fallout even today. Jus...

A Programmer’s Oath - Part 02 - What is an oath? What is the most well known oath?

“ Programming, as a profession, is of great importance to society. Other professions with similar importance have oaths and codes of conduct to guide the professionals in their field, like M.D’s and lawyers. This has benefited their professions in many ways, like taking the lead in the creation of legislature.” ( Read my extended summary of Uncle Bob’s presentation ) Inspired by Uncle Bob I'm taking a glance at an oath for programmers. Why is it important? How can we build on the experience in other professions? What role could an oath play? An oath is a pledge to a third party. A pledge is a sincere statement of fact or a promise. The third party makes the pledge even more sincere and to be taken for truth. Possible third parties are god(s), a ruler, one’s life.  One of the most well known is the Declaration of Geneva . A declaration of a physician’s dedication to the humanitarian goals of medicine. It was intended as a modern revision of th...

Summary: GOTO 2017 - Robert “Uncle Bob” Martin - The Scribe’s Oath

Image
In ancient times reading and writing was considered a highly specialized skill. This skill was practiced by Scribes. This allowed laws to be passed on, stock to be kept of grain stores, planning to be done of crop rotation. Today programmers are the modern scribe. Almost all our important interactions happen through software that programmers have created.  Interacting with a television, microwaves, computers, phones et c . Scribes, as a profession, had an oath, a code of conduct and ethics as a group of professionals. We as programmers do not have these yet. Since 1946 the number of programmers has been rising, Bob says to around 100 million in 2017. And he poses that this doubles every 5 years. The facts say there are only 13 million, but growing with 20% each year . This means that there is a doubling in the amount of developers each 4 years. That also means that the craft of software development gets continuousl...

Jargon: postfix

As a guild of craftsmen, we software developers, should be aware of our jargon when talking to others. The jargon can distract from the intention you're trying to convey. One term that I accidentally stumbled upon was 'postfix'. I was creating a method that concatenated  prefix + term + postfix. While writing the code I started wondering if I should have used the term 'suffix' instead of 'postfix'. [JARGON++] Probably I used the term post(fix), because it's a great contrast to pre. Still I was dumbfounded to discover that postfix is a term specifically originating from our field of computer programming (e.g. postfix operators: expr++ and expr-- ). Suffix on the other hand originated in linguistics, a long time ago. So long story short; don't start an argument with that linguist machine learning colleague of yours, you probably both mean the same thing. Sources: https://english.stackexchange.com/questions/81263/postfix-or-suffix https://w...

Confusion of terms

At my present assignment I work with a seasoned senior. One of my current tickets will have some impact on the @Controller layer of the application, so I casually stated that I wanted to redo the DTO's (data transfer objects). In the application that I'm working on DTO's are used to transfer data from clients to the application. After which we got into a discussion, which ended up being more a case of miscommunication than an actual arguments. Question marks were put to my idea of adjusting the DTO's. At that moment he thought I wanted to adjust the objects responsible for representing data in our data source (db). Apparently it's also common practice to call these objects DTO's in some applications, especially if you work with a DAO (Data Access Object) pattern. To confuse the matter even further, I said that I didn't want to adjust the models too much. In the application that I was talking about models (also) represent data to be saved in the database....