Like this:

As a Software Developer in Dallas, TX it is very obvious that the demographics of my profession have absolutely nothing in common with the demographics of my city. To be frank, it’s mostly Caucasian males (~65%), Indian males & females (33%), the later weighted towards immigrant workers.

This is just a mind dump on something larger I’m working on. Please forgive the formatting.

Dallas and Fort Worth have a rough population breakdown of 50% White, 24% Black/African American, 42% Hispanic / Latino (this classification spans races), and various Eastern Asian races making up 1-2% of the remaining. For these totals I’ve settled on the data found at http://en.wikipedia.org/wiki/Demographics_of_Dallas%E2%80%93Fort_Worth after checking with many sources, and it’s a great average on those.

To get employment data on my industry in my area I used http://qwiexplorer.ces.census.gov/. I included the Dallas, Tarrant, and Denton counties as the industry is spread across these three.

The numbers you are about to read are preliminary, and therefore skewed. I’ve listed a few areas which seemed odd to me, why so, and my current hypothesis as to why that area may be wrong.

Strange Point:
The percentage of persons employed who are black in the area changes almost nothing when filtered down to just my industry didn’t change at all. My hypothesis is that this is skewed because my filter is “Information” workers, and there are large call centers here for mobile phone support which one will find a statistically large population. These jobs don’t pay very well, which may in turn have a loot to do with the salary difference from the Caucasian numbers.

The Hispanic numbers at first surprised me the most, but I believe cultural differences adequately account for the population strangeness. The same biases are expected with Hispanic numbers as Black, but the fact that they are significantly lower isn’t in line with industries.

It’s my belief that my local industry should reflect my city demographics. There’s enough of a under-employment problem here that it certainly seems like an area of interest. If employers feel they need to pursue HB-1 workers, that means they can’t find those educated to do the job here (in theory).

Secondly, but perhaps more importantly, software development, design, and project management have evolved in these fields through the concerted effort of those in it to bring their own culture, knowledge, and experience to improve these systems. Every last one of them is in a rutt, even after Agile was supposed to be savior. Agile is great, but even it teaches at its core to be flexible and evolve when challenges arise. I believe the entire process is lacking underlying cultural and cognitive paradigms from these underutilized brethren. No matter how much technical accuracy we’ve designed into our processes and designs, not one person working in this industry hasn’t heard about the importance of a new hire being a good culture fit.

When you fail to merge branches before building, dependencies are silently lost.

Like this:

Have you ever heard this? I have, and as a negative. We as developers work in a very collaborative way, so at first it’s understandable where this could be viewed poorly. However, when developing products for a client, how does one know when they are pushing idealism vs. professionalism?

In the world of JavaScript development there is no lack of developers with ideas. Looking to our predecessors in previous languages every community starts this way. As the language evolves and standardizes we see at least 2 schools emerge: One whose idealism helped evolve the language, providing the language its individuality. The other, built tried and true development strategies. Although this second school may adopt slightly different syntax or names for these structures, it always finds its roots in architecture, both software and real world. Both these schools can build great things, but effectively very differently.

So I posit: Idealism builds brand new things. Professionalism builds those things right.

These are by no means mutually exclusive, but as my posit reads, they do have an order when considering your client. In this example (my situation) the client is a large enterprise re-engineering their entire control infrastructure. To make things more interesting, my group was brought in to create the user interface for this project, and I was hired as their JavaScript expert. The current staff was mainly UX and UI designers with a couple decent JS developers, both of which admitted it was not their first language, and they hadn’t the advanced experience to complete the project. This is obviously an extreme example, but I feel confident in stating that most shops are looking for their developers to implement known, learned techniques, not create extremely brand new things. I took this as a teaching opportunity, with the understanding that as a UI group with a Java backend team that JS was of a bit wild-west middle ground, and our input would be appreciated.

After review of the code, having recently moved out of Dojo to Durandal, the code was structured, but fractured. Nothing was testable (a quality desired by both client and team). My answer was to bring in solid architectural principles based on the design of AngularJS. The shop was already using Durandal with future plans to move to Angular 2.0, so it seemed natural. I offered the ideas, was encouraged to share, and gave an informative (albeit direct) presentation to the back-end and front-end developers of what I dubbed a “client side data layer” to handle our communications. The Java developers grilled me hard, but we all agreed this was nothing more than a back and forth about understand the fullness of the design, not an argument. My team disagreed, thinking I had pushed too much. I later confirmed with the Java team this wasn’t the case.

Pause

Idealism or professionalism, what have I delivered here? This design was radically new to the client’s team, still in the phase of JavaScript mistrust. My team understood some of the concepts, had some reading to do, but could definitely complete it. We had documented practices and code to follow from examples I provided and a great Angular code-base & community.

Until I got push back, from my own team.

Unpause

2 iterations after being allotted sprint time by the client my team lead had still been reallocating my time to bug fix tasks. I don’t mind helping, but 2 sprints of fixing bugs after such a successful start can be, truthfully, annoying. Along with other personal problems my work time suffered. The UI firm and I parted ways. Aside my time, “You pushed your ideas”, was the only other thing mentioned.

Idealism or professionalism, what have I witnessed? Should a developer strive to provide the solutions to the problems presented him, or should they earn money from the client through hand holding the client while they decide what they want? The first I truly know to be a right way. There are honest people that earn money doing the second. Is their title “Developer”, “Architect”, or “Programmer”? It’s obvious my opinion is no. I believe my experience is exactly what I am hired for, and in a niche where misinformation is rampant, clarity is key.

I understand many UI firms have a certain image they promote: “Creative Support” I like to call it. Help them believe your ideas are their own. I see a fundamental flaw when this approach is applied to code development.

Art is subjective, JavaScript used to be. Professional JS developers know better.