[Interest] Roland Qml

Roland Hughes roland at logikalsolutions.com
Wed Jul 15 14:36:36 CEST 2020


On 7/15/20 5:00 AM, Cristián Maureira-Fredes wrote:
> I'm pretty sure you understand how your message breaks our Code of
> Conduct, and making those generalized bias comments about developers
> using other programming languages from different countries
> is not admitted in this mailing list.
>
> I'm certain The Qt project has many people that come from different
> backgrounds, and not because they didn't have "a formal CS education"
> means that they will produce bad code or harm any project

You can find JavaScript people for absolutely no money. Simply look at 
sites like UpWork and see what they bid to do projects.

Not having a formal education is actually a yardstick for measuring 
potential quality of work. That is why you see "B.S. in Computer Science 
or related technology" on soooo many job postings. To do really good 
work, or at least avoid tragedy, you need a solid grounding in the 
fundamentals. Reading one language specific book and hanging out a 
shingle then working on AGILE projects without The Four Holy Documents 
written up front really does mean they are going to produce bad 
solutions if not "bad code" and harm the project.

When a human goes from infancy to adulthood, along the way they are 
taught not to play with matches, the meaning of hot, especially around a 
stove and other basic fundamentals of navigating life. Without being 
taught these fundamentals we get burned badly and sometimes perish. A 
formal CS education provides an infant developer that transitional 
knowledge to "young adulthood." It teaches them many fundamentals to 
avoid getting burned and having their career perish.

When working with actual Software Engineering one can get by with only 
knowing only syntax and having the ability to read. Software Engineering 
requires The Four Holy Documents be created up front. All significant 
design decisions are made for you, "simply" code and test them. (Yes, it 
is not always simple or fast but you don't have to do a lot of deep 
thought.)

Here's a real life example for you which should paint the picture 
perfectly. This happened with an all on-shore team too. All either 
self-taught or having gone to non-rigorous schools, also called diploma 
mills in the states.

The product the company was making was a livestock barn monitoring and 
control system. All fans, curtains, misters, feed augers, waterers, 
lights, heaters, etc. 24/7 monitoring and control without being there. 
The team tried to do much/most/far too much of said system in JavaScript 
and QML. At the core of this system were many sensors for temperature, 
light, feed and water levels, even working on a methane sensor I believe.

Said product got installed in a barn that was soon filled with freshly 
weened young livestock. Seemed to work well for about two days then in 
the middle of the night it, via the watchdog, when into a perpetual 
reboot cycle, exercising the equipment for roughly seven seconds before 
entering another reboot cycle. Roughly 14 hours and an unknown (to me) 
number of dead animals, the storage SD card was replaced "because it 
must have went bad." The system believed it was write protected.

This happened again a few days later; and again. I joined the project 
roughly at the time this started.

Remember the sensors? The self-taught team stored their readings in a 
directory tree by sensor type, one JSON file for each sensor. Many of 
the sensors had 5 readings per second coming back. Each reading required 
the JSON file to be read, data appended, and file rewritten. It took 
roughly two days for the file to get large enough that it could not 
complete being written to "disk" before it had to be read for data 
storage again. This caused a series of error flags in the disk device 
driver which well and truly believed it had a disk in trouble at the 
other end of the connection and put it into write-protect mode to save 
it from further harm. Failed writes in turn triggered the watchdog which 
attempted to correct things via reboot.

Neither the disk driver or the watchdog were at fault. They did exactly 
the jobs they were designed to do. They simply couldn't fix a design 
error brought about by lack of both formal training and The Four Holy 
Documents. Had someone with formal training been involved at the 
beginning JSON would have never been chosen. No file storage method with 
an ever increasing write time would have ever been chosen. Even if the 
I/O could have happened fast enough, the SD card was way larger than 
physical RAM and there were multiple sensors with that reading speed. 
The files would have gotten too large to fit into RAM, especially 
multiples of them being processed by multiple threads.

Formally trained individuals would have reached instinctively for a 
relational database, an indexed file, or even a sequential file, where 
the application could always just write the new record and go. Peer 
review never brought this up. By the time I was brought in there were 
thousands of lines of code built around this tree of JSON files and it 
was integral to the system. It all had to be gutted to put in database 
support. Took way more than a sprint (a month really). Was ugly because 
many other changes were happening at the same time.

It is true that when Software Engineering is used, creating The Four 
Holy Documents up front, a project can use developers who are incredibly 
green first timers that really only know some language syntax. That's 
one of the reasons the documents are created. Those developers cannot 
get into real trouble because all code is reviewed against the 
documents, especially the System Architecture Document. They can't just 
add something to the project because it is neat or cool to them. They 
are also required to participate in the meetings and creation of said 
documents so they learn the processes and the "why" behind each of them.

When you take green first/few timers without formal training and toss 
them into an AGILE shop that doesn't create The Four Holy Documents up 
front, there are no guard rails on the mountain roads. Projects go over 
the edge.


-- 
Roland Hughes, President
Logikal Solutions
(630)-205-1593

http://www.theminimumyouneedtoknow.com
http://www.infiniteexposure.net
http://www.johnsmith-book.com
http://www.logikalblog.com
http://www.interestingauthors.com/blog



More information about the Interest mailing list