Common Sense Software Engineering: Letter to a Young Woman (Part III)

Author Notes:

This is the third and final part of a three-part series.   It is a huge piece of writing.  It resulted from a conversation I had with a young woman who showed interest in learning how to program and possibly enter the IT profession.  It is also an attempt to bring the realities of the Information Technology profession as it is today into perspective so that a young woman interested in this field can make informed choices as to how she may be able to enter the field either professionally or for self-interest.

Those who read this piece and would like to pursue further study are more than welcome to contact me with their questions and requests for assistance at support@blackfalconsoftware.com.

I will do everything I can to help you on this long but potentially exciting journey while also offering advice on how to avoid the most serious pitfalls you may encounter.

In addition, since this is such a long piece, it is also available in downloadable PDF form at the following address… https://1drv.ms/b/s!AnW5gyh0E3V-g2bQ4UCq4Df-V2tf

Addendum:

Since this paper was written, Microsoft has released its latest version of Visual Studio, Visual Studio 2017.  This replaces Visual Studio 2015, which has been noted throughout this paper.  Please note that both Visual Studio 2015 and 2017 are completely compatible with each other regarding development processes.  As a result, notes pertaining to Visual Studio 2015 will be just as applicable to Visual Studio 2017 and visa versa.

If you want to download the installation for Visual Studio 2017, please use the following link…

https://www.visualstudio.com/downloads/

Select the Community Edition (Free Download)

 

Requirements for Installing Visual Studio 2015 & the .NET Framework

The minimum requirements for installing Visual Studio 2015 and the .NET Framework is a machine running Windows 7/Service Pack 1. If you have a brand new machine you will most likely have Windows 10 on it, which is fine.

Installing Visual Studio & the .NET Framework

With a single installation package you can install both the Visual Studio 2015 Community Edition and the .NET Framework Version 4.6. Depending on the deployment of the Visual Studio Community Edition that you download you may get version 4.6, 4.6.1, or 4.6.2 of the .NET Framework. All of these latest frameworks are capable of supporting any application type you wish to create.

To get the download package, go to the following site address…

https://www.microsoft.com/en-us/download/details.aspx?id=48146

On this web page you will see a button entitled, “Download”. This will bring you to a secondary page where you will be provided with the option to download the file labeled, “vs_community.exe” or the one labeled, “VS2015.com_enu.iso”.

The “vs_community.exe” file will allow you to install the package over the web after you have saved the file to a selected directory on your computer.

The “VS2015.com_enu.iso” file is the complete package in downloadable form. Like an “exe” file, the “iso” file can also be launched by double-clicking on it. However, this file will immediately request that you burn it to a DVD since “iso” files cannot be directly executed.

The download page(s) will also provide you with detailed descriptions for either type of installation package.

Either installation method will provide you with all the tools you may require to study and learn C# and application development.

Read more of this post

Common Sense Software Engineering: Letter to a Young Woman (Part II)

youngtechnologywomen

Author Notes:

This is the second part of a three-part series.   It is a huge piece of writing.  It resulted from a conversation I had with a young woman who showed interest in learning how to program and possibly enter the IT profession.  It is also an attempt to bring the realities of Information Technology profession as it is today into perspective so that a young woman interested in this field can make informed choices as to how she may be able to enter the field either professionally or for self-interest.

Those who read this piece and would like to pursue further study are more than welcome to contact me with their questions and requests for assistance at support@blackfalconsoftware.com.

I will do everything I can to help you on this long but potentially exciting journey while also offering advice on how to avoid the most serious pitfalls you may encounter.

In addition, since this is such a long piece, it is also available in downloadable PDF form at the following address… https://1drv.ms/b/s!AnW5gyh0E3V-g2bQ4UCq4Df-V2tf

 

The 21st Century

By 2000, Microsoft had introduced its next generation operating system, Windows 2000, which could take advantage of the newer 486 chip sets and then the Pentium chip sets, which though still 32bit machines could process computer instructions even faster due to advances in the internal chip architectures.

And then the Dot.com economic bubble reared its head as a frenzy in the field began to unfold as the Internet became the platform of choice for development.

New startup companies began popping up in the technical industry like an uncontrolled growth in lawn weeds.  A new generation of young professionals was entering the industry in droves and was suddenly being offered highly inflated salaries for their technical, educational backgrounds, though few had any real-world experience.  Venture capitalists were pouring in monies like water into new companies that barely had legitimate business plans for development.

The result, in a word was… chaos.   The only real change to come out of this economic fantasy was a severe increase in working hours for developers and the beginnings of a decrease in job security.

After the Dot.com bubble burst, thousands of technical personnel lost their positions while numerous companies collapsed under the weight of their own mismanagement.  One thing remained; business perceptions that development could be sped up increasingly by cutting corners in the design of applications.

Another outcome, though not a direct result, was that to increase the speed of development while at the same time cutting its costs, US businesses turned to outsourcing technical work at ever increasing levels.  And insourcing increased similarly as well with a new generation of foreign workers entering the US technical workforce who were not trained nearly as well as their earlier counterparts and nor did they have the engaging personalities of their earlier contemporaries.  Foreign outsourcing companies began feeding into the technical pipeline personnel that were simply not qualified to work in the technical profession from a technical standpoint nor from a personal one.

Many of the new foreign personnel were trained only in the details of technology and had little understanding of how systems and applications were actually built for longevity purposes.  They thought they did and many lauded it over their American counterparts along with the foreign management that was increasingly brought in at lower costs as well solely for the purpose of brow-beating developer staffs into fulfilling increasingly deadlier deadlines..  Until the US Millennials would begin entering the profession, the atmosphere in the Information Technology field became one of terrible pressures and arrogance, which caused a complete undercurrent of sociological disruption in the US technical workforce.  US citizens were being viewed as second class members of the profession since so many could not compete with the exploitative circumstances of both the foreign insourced personnel and the outsourced ones.

It was at this point that professional women in the field began leaving the industry in droves as undercurrents of the oppressive working conditions in the work place started to get out of control as developers were seemingly expected to be either working or on call 24/7.  To encourage this perspective, television advertisements began “glorifying” the non-stop work habits of young workers that provided no time for personal lives.

In short, female technical personnel reacted with a sense of sanity towards a profession that was barreling towards an all-consuming, technically-oriented lifestyle as the release of mobile computing technologies emerged along with a maturation of development techniques and tools that in reality had little alternative for innovation in the business environments.  To this end, developers who adapted to the increasing promotions of freely available, open-source software products (software\source code provided freely) started using them to design their own tools with the idea that redundancy was some form of innovation.

“Open Source” software was a new wrinkle in the profession that up through the early 2000s had a substantially successful “cottage industry” where software developers could sell their own crafted software for moderate prices under the aegis of what was called “shareware”, which was simply software that either had a trial period or limited feature sets both enforced by licensing.

The “Open Source” movement grew out of the sociology of the growing Java Community in which many of its promoters were quite young and were still living with their parents or academics who saw writing software on their own time as a way to promote their own ideas.  However, to be fair, this movement was also given impetus by Richard Stall’s “Free Software Foundation”, which promoted that all software should be free.

Read more of this post

Common Sense Software Engineering: Letter to a Young Woman (Part I)

youngtechnologywomen

Author Notes:

 The following is a huge piece of writing.  It resulted from a conversation I had with a young woman who showed interest in learning how to program and possibly enter the IT profession.  It is also an attempt to bring the realities of Information Technology profession as it is today into perspective so that a young woman interested in this field can make informed choices as to how she may be able to enter the field either professionally or for self-interest.

 Those who read this piece and would like to pursue further study are more than welcome to contact me with their questions and requests for assistance at support@blackfalconsoftware.com.

I will do everything I can to help you on this long but potentially exciting journey while also offering advice on how to avoid the most serious pitfalls you may encounter.

In addition, since this is such a long piece, it is also available in downloadable PDF form at the following address… https://1drv.ms/b/s!AnW5gyh0E3V-g2bQ4UCq4Df-V2tf

Opening Notes… And there are many…

In the past several years there has been a noticeable effort to recruit young, capable women into the Information Technology profession.  From the articles I have come across on this subject it appears that there is little understanding as to why so many left the field during the 1990s and early 2000s.  The result is that many such efforts are aimed at technical training with the underlying idea that women are as good as men in this field of endeavor.  However, historically that has never been the point.

The profession used to be populated by a female work force of around 35% to 40%.  This number has now dwindled down to approximately 17%.  This reduction in female technical professionals did not come about due to a lack of self-esteem but more from a better understanding of the field has evolved in the more recent years.

The real question is why would any sane Human being want to engage in a profession that has few if any real professional standards, ever changing technologies that disallow anyone to become finely honed in their preferred skill sets, increasingly thins knowledge bases for what technologies and processes actually work to get the job done, onerous working hours, and most often bad working conditions resulting from the band aids that are being touted as the new software engineering standards?  Only really crazy people would enter such an activity.  And only really crazy people would rationalize that somehow this all so much fun.

To be fair there is a lot of fun to be had in this profession but that enjoyment of creating a personal piece of quality for another has been terribly overshadowed by the sociological changes in US society that has found their way into other societies as well, though maybe not as disastrously.

Women in Human societies have often had and continue to experience a form of second-class citizenship due to their lack of masculine attributes.  Even if they have adopted masculine psychological attributes, acceptance is still in many respects viewed with suspect simply because they have the underlying desire to create, nurture, and build; something which most males of the species don’t seem to comprehend let alone have.

With the exception of such aberrations as the Hillary Clintons, Madeline Albrights, and the Margaret Thatchers of the world, along with their “protégés”, when was the last time anyone can remember an intelligent woman demanding that a country go to war?

Surprisingly as this may sound it is this sociology and its offshoots that has reduced the number of women in a profession that currently appears to only cater to those who don’t mind floundering around in the growing technological quagmire that is the US Information Technology profession.

I doubt any amount of technical education or esteem building seminars directed at young ladies will increase the dismal percentage of female workers in this activity.  So far there have been no noticeable results to crow about.

A young woman I met while she was working at a discount pharmacy my wife and patronize told me she was interested in learning about our profession looking at it from the point of view that she has seemingly acquired that it shouldn’t be a “boys only” field.  She was of course right and it is my guess that the substantial loss of our female counterparts has contributed significantly to the erratic nature of the realities of working in this field.  Women often bring a soothing influence to the environments they inhabit and there is really nothing soothing about having your life upended by the constant cycles of deployment that Agile promoters have brought to the daily lives of professional developers.  Noticeably, there have been quite few pieces written about the constant stresses of such development styles that often lead to burnout.

Read more of this post

Common Sense Software Engineering: Windows Developers Should Follow the Stable Infrastructure and Development Environments of the Java Community and Forget the Hype

n-tieredarchitecture

Overview

In the 1990s when Java began to appear on the developer scene it met its competition from Microsoft head-on in that it struggled to gain an acceptable place within the international development community.  However, over the years Java appears to have arrived at more stable set of infrastructure and development standards than Microsoft appears to offer now.  This is the result of both communities taking maturation trajectories that were in a very real sense diametrically opposites of each other.  Microsoft, at the time, was offering maturing technologies while Java was the “new kid on the block”.  Both communities also offered completely different viewpoints towards their product developments.  Microsoft offered products with “ease of use” as the underlying factor allowing developers to quickly create both desktop and web applications far more quickly than competing solutions.  This was especially true when compared against the new Java tools.  However, Java had its founding basis in the academic and scientific arenas.

One could see this easily with the many Java articles that took apart various interface controls that we in the Microsoft Community took for granted with the exception of third-party control developers.

The Java Community did have a difficult time to get its place as an accepted form of development until it presented an alternative to Microsoft products in the large enterprise development area, which was Microsoft’s weak spot since Microsoft products at the time were targeting division and department level applications.  Once Java tools became more usable for developers, the large enterprise arena saw the advantages of Java development with its better suited enterprise offerings (ie: J2EE, and later, the Spring Framework).

Today, we find a Java Community that appears to be far more stable than that of the Microsoft Community though one would not know it with the subdued reporting around it.  Years ago such reporting was quite different as the two communities fought each other for developer supremacy  Reading online magazines such as jaxEnter.com today, most of the articles appear to concentrate on existing technologies along with their refinements.  The opposite appears to be true for Microsoft, which seemingly approaches product refinement the way the US Pentagon approaches new weapons procurement; both throw out perfectly fine technologies and start over with brand new and completely untested concepts.

In this author’s opinion, and as one who has worked with Microsoft technologies his entire career since leaving the mainframe world around 1989, Microsoft has made some serious mistakes with not only the products they are offering but how their style of developing applications has changed over the years.  This appears to have happened most egregiously with the latest CEO of Microsoft, Satya Narayana Nadella, while under Steve Ballmer; Microsoft appeared to be more stable in this regard despite his terrible reputation.

Read more of this post

The “War Game” and Understanding Complex Application Development

GettysburgWargameMasterScreen

Author’s Note…

Please note that the use of the words game, war game, and simulation are all used interchangeably through this paper.

Merriam-Webster Definition: “War Game”…

a military training activity that is done to prepare for fighting in a war

a simulated battle or campaign to test military concepts

           

Preface

This piece is a somewhat more radical departure from those that I have written before as it is both a sociological and technical one at the same time.  This writing attempts to demonstrate the use of a completely unrelated subject to assist in the development of one’s mind to allow it to understand and encompass large-scale complexities that are most often the underlying foundations in similarly large application development.  This piece uses the somewhat forgotten genre of the historical simulation or war game to promote this concept.

To be sure there are a variety of other pastimes and hobbies that can provide the same orientation.  Writing for example, is one of them.  However, for the technically oriented mind and also from my own experiences, I have found the war game to be an excellent departure from studying technology to learning something completely new and possibly alien that will help younger development professionals grasp the complexities of their careers from a different point of view.

There are many types of war games that are available to the public as well as several commercial versions of military-grade training simulations that can show how actual military officers are trained in the matters of violent conflict.

From still popular board-games that require face-to-face interaction with players to computer-based simulations with increasingly powerful artificial intelligences that also offer Internet and Play-By-Email (PBEM) options, there is literally something for any period in history one may be interested in studying, recreating, or altering…

Read more of this post

Agile, DevOps, & US Fighter Pilots

Russian PAK-50
Russian PAK-50 – Now Considered the World’s Greatest Fighter Jet

 

“Agile” & “DevOps”; Two Sides of The Same type of Coin

In spite of the promotion of the “Agile” development lifecycle, it is a highly flawed technique, which often succumbs to being nothing more than what is known as “controlled chaos”. This is exactly the term that naval aviators use to describe landings on an aircraft carrier; a technique filled with so many dangers and variables that if but a single issue occurs the pilot and craft could be both done. Modern computerized systems aboard such ships have lessened the dangers to some extent by incorporating remote control flight to the planes. However, again if anything goes wrong with the software or the hardware, the pilot is left to land the craft him or herself making the reliance on such software an added danger to pilots in such circumstances. Using such software regularly, the pilots lose their hard learned skills in landing such aircraft, if modern training has taught them such hands-on skills in the first place.

“Agile” has no features or advantages that mature software engineering practices have not already devised and demonstrated successfully across a breadth of different types of software projects. It is merely a methodology that allows developers to escape the necessities of good project implementation and the fact that so many “Agile” projects still incur some level of failure in their endeavors is a testament to this contention.

One of the biggest failings of “Agile” however, is the idea that a developer can do it all following on the trends in the early 2000s that began with businesses eliminating crucial departments that supported the software development process (ie: Quality Control). Between the outsourcing and the reductions in staff, IT organizations were unfairly left to themselves to devise methods to keep the organizations afloat despite dwindling resources. This was the catalyst for such concepts as “Agile”.

However, it was already well known by this time that developers had more than enough on their plates than to be able to start handling increasing technical responsibilities.

Read more of this post

“Agile Development” – The Software Industry’s New Meme

AgileMeme

“Agile” as A Meme

Since the introduction of Agile Development in the early 2000s it has increasingly spread throughout the software industry in the same manner a popular cult is formed; based on supposition, mythology, and rumor for which little real statistical proof has ever been provided.

A more accurate description of the growing popularity of this development paradigm is that of a sociological “meme”. Wikipedia defines the word “meme” using basically the same definition as found in the online version of the Merriam-Webster Dictionary, a standard in English studies, as the following…

“A meme is “an idea, behavior, or style that spreads from person to person within a culture”. A meme acts as a unit for carrying cultural ideas, symbols, or practices that can be transmitted from one mind to another through writing, speech, gestures, rituals, or other imitable phenomena with a mimicked theme. Supporters of the concept regard memes as cultural analogues to genes in that they self-replicate, mutate, and respond to selective pressures.”

The Wikipedia description goes on to elaborate on the transfer of memes in the same way that is found in biological evolution.

“Proponents theorize that memes are a viral phenomenon that may evolve by natural selection in a manner analogous to that of biological evolution. Memes do this through the processes of variation, mutation, competition, and inheritance, each of which influences a meme’s reproductive success. Memes spread through the behavior that they generate in their hosts. Memes that propagate less prolifically may become extinct, while others may survive, spread, and (for better or for worse) mutate. Memes that replicate most effectively enjoy more success, and some may replicate effectively even when they prove to be detrimental to the welfare of their hosts.

In other words, memes are transferred in a culture the same way that natural selection works in biology; except for the fact that with memes, which are transfers of information, they become successful not as a result of intelligent research and understanding by the Human transfer points but in somewhat the same manner that fads are often found to grow in popularity, through simple popularity of an accepted strain of thought.

Read more of this post

%d bloggers like this: