64
A Day in the Life of an Application Developer Rene Vogt-Lowell Technical Education Consultant EMC Corporation [email protected] Paul Brant Technical Education Consultant EMC Corporation [email protected]

A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 2: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 2

Table of Contents

Table of Figures...................................................................................................5

Abstract ................................................................................................................7

Introduction .........................................................................................................9

Who We Are .............................................................................................................. 10

Dev On - The ascent of the Application Developer ................................................. 11

Plug In, Turn On, Drop Out ..................................................................................... 11

The Application and the Business .............................................................................. 12

The rise of Acquihire ............................................................................................... 12

The 1000X factor .................................................................................................... 12

Who wants to be a Rock Star? - Do you have an Agent? ....................................... 13

The importance of the application ........................................................................... 13

Every Company is a Software Company ................................................................ 14

Need for a new business mindset ........................................................................... 14

Dev On - The Social Developer ........................................................................ 15

Open Source ............................................................................................................. 15

The importance of OpenSource .............................................................................. 16

Driving towards perfection ...................................................................................... 17

Drives 2nd and 3rd Platform Development ................................................................ 18

DevOps ..................................................................................................................... 19

Agile and Lean approaches .................................................................................... 20

Dev On - The Tech Developer .......................................................................... 21

The Art of the Game .................................................................................................. 21

Page 3: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 3

Culture .................................................................................................................... 21

Continuous Delivery ............................................................................................... 21

Lateral Team Movement ......................................................................................... 22

Autonomous Enablement ....................................................................................... 22

Design Principles ....................................................................................................... 22

Management .......................................................................................................... 23

The Design Trifecta ................................................................................................ 25

Scrum ..................................................................................................................... 26

Kanban ................................................................................................................... 26

XP – Extreme Programming ................................................................................... 28

Developer Tools......................................................................................................... 28

Continuous Integration ............................................................................................ 28

Version Control................................................................................................................ 28

Application Mobility .......................................................................................................... 30

Containers ....................................................................................................................... 30

Release Enablement ....................................................................................................... 31

Continuous Delivery ............................................................................................... 33

Infrastructure as Code ..................................................................................................... 35

Measure and Monitor....................................................................................................... 36

APM – Application Performance Management ................................................................ 37

Half-time ............................................................................................................. 39

Page 4: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 4

Dev On - The Communicator Developer .......................................................... 40

Communicators to the nth degree ............................................................................... 41

Relationships - The connections between the data points matter more .................. 41

The relationships between the human points matter even more than that............... 42

Everyone’s affected ................................................................................................ 44

The value of Mentorship ......................................................................................... 44

Brainstorm, Divide, and Conquer ............................................................................... 46

Stakeholders, Target Audiences, and Niche ........................................................... 47

Diverging Convergence .......................................................................................... 48

Requirements vs Desirements ................................................................................ 49

Under-Promise vs Over-Deliver .............................................................................. 50

Gates, Hurdles and Constraints .............................................................................. 50

Think “inside out” of the Box! .................................................................................. 51

Dangerous Waters .................................................................................................. 52

The Big Picture .......................................................................................................... 54

“Nothing for All” vs “Something for Some” ............................................................. 55

Dev On - The Artisan Developer ...................................................................... 55

Meaning ..................................................................................................................... 55

Infinite to MVP: Replicating Ground Zero ................................................................... 56

ArtDev Evolution? ...................................................................................................... 57

Musical Crossover ..................................................................................................... 58

Creative Crowdsourced Explosions ........................................................................... 58

Priceless Art vs Cheap Apps...................................................................................... 59

Page 5: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 5

Bringing it all together ...................................................................................... 61

Music Video Grand Finale ................................................................................ 62

Authors’ Biographies ........................................................................................ 63

Appendix A – References ................................................................................. 64

Table of Figures

Figure 1 - The 3rd Platform .......................................................................................................16

Figure 2: OpenSource Ecosystem.............................................................................................18

Figure 3: 2nd and 3rd Platform comparision ..............................................................................18

Figure 4: Agile vs. Waterfall ......................................................................................................23

Figure 5: Waterfall Process .......................................................................................................23

Figure 6: Agile Developent Process ..........................................................................................24

Figure 7: Design Management Drivers ......................................................................................25

Figure 8: Agile Practices ...........................................................................................................25

Figure 9: The Scrum Process ....................................................................................................26

Figure 10: Scrum Bottlenecks ...................................................................................................26

Figure 11: KanBan Big Board ....................................................................................................27

Figure 12: Extreme Programming Attributes .............................................................................28

Figure 13: Version Control Architectures ...................................................................................29

Figure 14 - Docker (Container) attributes ..................................................................................30

Figure 15: VM's vs Containers ..................................................................................................30

Figure 16: Code Release Flow ..................................................................................................31

Page 6: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 6

Figure 17 - Continious Integration Example ..............................................................................32

Figure 18 - Traditional Production Infrastructures ......................................................................33

Figure 19: Example Orchestration Platforms .............................................................................34

Figure 20: Infrastructure as Code Example ...............................................................................35

Figure 21: Continious Delivery Integration Example ..................................................................36

Figure 22: Measurement of Success .........................................................................................36

Figure 23: APM Approaches .....................................................................................................37

Figure 24: The key to Understanding ........................................................................................41

Figure 25: MineCraft Masters ....................................................................................................44

Figure 26: Divergent Thinking ...................................................................................................48

Figure 27: Example of Analysis Paralysis ..................................................................................49

Figure 28: Inside vs. Outside the Box ........................................................................................51

Figure 29: Myth of Multitasking .................................................................................................52

Figure 30: Google Open Web Submission ................................................................................57

Figure 31: A Day in the Life of an Application Developer ...........................................................62

Disclaimer: The views, processes or methodologies published in this article are those of the

authors. They do not necessarily reflect EMC Corporation’s views, processes or methodologies.

Page 7: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 7

Abstract

Humans have always been long on power and short on thinking about the consequences of

technology influence. In today’s technology driven world, humans who create the intelligence

that runs on computer hardware are becoming important. This is because we rely on intelligent

systems driven by software more and more. This human has a title; they are called Application

Developers.

With statements by visionaries like Marc Andreessen, the creator of the first web browser,

stating “Software is Eating the World”, one can easily see that Application Developers or

AppDevs are becoming even more critical to our way of life.

Therefore, the importance of understanding whom these people are, what, when, why and how

they do what they do is important for all of us to understand.

For example, if an application can be built, there will always be someone who will build it without

contemplating a safer, saner way of doing so, let alone whether the technology should even be

built in the first place. The software then gets written. Who cares where and how it's used?

That's a task for somebody in some corner office.

One also needs to understand the challenges and goals of the AppDevs. There are many

hurdles in the development of an application. For example, what specific functionality is needed

for a release to get the job done? What is that job?

How does an application get distilled from an originally infinite number of possibilities down to a

constrained number of realities based on all the gates, obstacles & constraints AppDevs need to

move through? Do software-defined data centers (SDDC) alleviate some of those constraints?

Do these constraints stifle or induce creativity? These folks often find themselves placed inside

a box while being asked to think outside of it - how do they achieve that?!

What are the processes, practices and tools used by the practitioner?

Do they undergo an artisan process of creating priceless art or just cheap apps?

Quite often, Application Developers are nonchalantly being asked to make or add “just one

simple little update/feature” to a well thought out solution. As a result, this simple change does

Page 8: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 8

not always take into consideration the cohesive masterpiece already created when initially

weighing and balancing all of the original sets of interdependent requirements.

Is this a mere question of a software development life cycle (SDLC) preference? Are we just

talking about Waterfall vs Agile here or do our disposable perspectives on software products,

and the “ease” in which they seem to be modified, risk the creation of “nothing for all” solutions

instead of “something for some”.

Identifying niche needs and limiting the application to solving just these while purposefully

putting on a blind eye to all others is a challenging but important practice for preventing these

“nothing for all” solutions.

What causes AppDevs to reinvent the wheel and drive similar solutions to the same problems

over and over again, each time with the “latest language” and tools? Are either external third

party vendor greed or internal “not invented here” (NIH) syndrome to blame?

Applications need a solid foundation on how they are supported and how the software code

executes its logic. After all, in the world of IT, all of the pieces of the infrastructure like the

network, storage, host processing and supporting services is a means to an end; and that end is

the application.

This Knowledge Sharing article will explain and discuss “A day in the life of an Application

Developer” and all that comes with it.

Page 9: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 9

Introduction

Let us look at a few amazing people; some have called them rock stars. In 1970, a 15 year old

started a business with a friend. They developed a computer program called "Traf-o-Data," an

application that monitored traffic patterns. At the age of 18, he enrolled at Harvard University

thinking of a career in law. The problem was he spent more time in the computer lab than in

class and he eventually dropped out!

In 1996, a 12 year old created a messaging application that his parents used inside their house.

At 18, this person also enrolled at Harvard University. By his sophomore year at the Ivy League

school, he had developed a reputation as the go-to software developer on campus. It was at

that time he built a program called CourseMatch among others. The “others” you might have

heard about. Soon after that, he also dropped out!

It appears that these two individuals had many things in common. They obviously liked

technology and even though they pursued a formal higher education at the same school, that

educational venue did not seem to suit them. They also have one other major similarity.

If I could speak for either of them, I am sure they

would say; “We make beautiful apps!!! ->

I am sure you have heard their names. They are Bill

Gates, who is the richest man in the United States

and Mark Zuckerberg, co-founder and CEO of

Facebook, as well as one of the world’s youngest

billionaires!

Many believe that not only are they or were great

application developers, but they are also respected

and admired around the world.

Page 10: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 10

What then makes these two people as well as millions like them so influential, respected, and

highly compensated for what they do? The answer is simple; they are application developers.

Let us understand what that title “Application Developer” means, why they are

so important, and how they get their job done. As we will see, Application

Developers are really becoming rock stars for many reasons. If John Lennon

was an Application Developer, I bet he would say, “I’d love to Dev

You On”; If you want to jump ahead, check out the

video link on page 61, developed as a complement to this article!

Dev On!

Finally, we will find out what it takes to become one and what the day of an application

developer really looks like.

Who We Are

An application developer is often a computer software engineer, but can have educational

backgrounds much more diverse. Primary responsibilities include developing new types of

applications for computers, mobile phones, and other types of electronic devices.

An application developer would benefit from an advanced understanding of mathematics and of

the binary codes that computers use but those skills are not mandatory. Algorithms, which are

instructional codes used by computers, are created and put through extensive testing to see if

the computers can function correctly based upon the information provided. In most instances,

teams of developers work together and attempt to enhance over time sample applications until

the application reaches a point where it is ready to be marketed.

Developers often make several versions of the same basic application that can be read by

different types of devices, such as cell phones, tablets, and personal computers. Once an

application goes into production, the developer has to work on creating updates to the

application, also known as patches that are released periodically to the public so that the

application can continue to function alongside other constantly evolving types of software. For

example, in order to remain competitive, most software companies hire developers to begin

Page 11: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 11

work on more advanced applications to replace applications that have yet to be released to the

public

Dev On - The ascent of the Application Developer

Not very long ago, developers were often seen as geeky smart people that were too eccentric

and stand-offish to be taken seriously or capable of exerting much influence. We will find out

that has all changed as developers have attained a new status as the real movers and shakers

who hold more power and influence than anyone would anticipate. There is a shift in the role of

the application developer.

The Developer takes a more data-driven, real world look at the new realities facing today’s IT

organizations and the role that development teams play in creating them. A lot has been written

about The Nerd Economy and how it is leading us in a new direction. Developers are now

wielding unprecedented power. Polyglot environments, database fragmentation, and cloud and

open source adoption are only a few of the recent tools used. As developers, they are shaping

product and user experiences in new ways. Organizations that understand and embrace the

value of this shift will be the most successful in the years to come. Today, developers are

becoming one of the most important chattels a business has; regardless of the industry.

Plug In, Turn On, Drop Out

Back in the 1960’s during the hippy movement there where many catch phrases. One was “I’d

love to turn you on”; or how about “Turn on, tune in, drop out”. Today, many want-to-be

application developers are saying “Plug In, Turn On, and Drop Out”. I think we all get the “Drop

Out” part from our friends Bill G. and Mark Z.

However, Billionaire PayPal co-founder and Facebook’s first investor, Peter Thiel, has lately

been making waves by calling a 4-year college education “a bad investment”. He even created

his own fellowship to offer top students $100,000 to drop out of college and become technology

entrepreneurs. In an interview with Morley Safer of CBS’ 60 Minutes, Thiel argues that getting a

traditional college education is no longer needed to be successful. As mentioned, “Mark

Zuckerberg from Facebook didn’t complete Harvard. Steve Jobs dropped out of Reed College.

Bill Gates dropped out of Harvard.”

Many believe that if you do something entrepreneurial, the credentials are not what really

matters. What matters is having the right idea at the right time, the right place.

Page 12: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 12

Cynics believe that good ideas are many and at the same time success stories such as

Facebook are rare. They also believe a college education gives students the full set of skills for

turning good ideas into successful inventions. Others believe that the current education system

restricts the skills needed for success in today’s world. One can go one step further. In a well-

known TED Talk by Sir Ken Robinson titled, “How Schools Kill Creativity”, it states that the

whole process of higher education, stifles creativity. In addition, having a huge student loan

forces many students to take a more conservative and less risky career path.

The Application and the Business

Hiring software developers and computer architects used to be for high tech companies only.

That is no longer the case. Government agencies, shoe manufacturers, and most every other

business vertical you can think of have apps. The venture capitalist Marc Andreessen was

quoted recently that, “Companies are dying for talent. They’re like lying on the beach gasping

because they can’t get enough talented people in for these jobs.”

The conventional wisdom these days states that how computer science is being taught is more

theory and less commercial application, sort of like a trade school approach and the latter is

more beneficial. There are boot camps called “General Assembly”, trying to fill the gap, teaching

crash courses in how to design Web sites and write code.

The rise of Acquihire

It is amazing that quite often the largest corporations are fighting a bidding war for the best

programmers. For example, Christopher Fry, an engineering manager who works at Twitter,

landed a job which paid more than ten million dollars in stock options. To prevent programmers

from jumping ship, there is now a term called Aquihire. This occurs when large companies such

as Google or DropBox spend a lot of money to acquire an entire company in order to get the

application developers. It really does not matter what the acquired company did, they just want

the application developers. In this game, startups have a problem. They do not have enough

money to throw at these developers. Yes, equity can be offered, but there are so many startups,

they are becoming superfluous.

The 1000X factor

Many believe that top application developers are worth their weight in gold. Traditional workers

in a company might be worth three to four times the revenue produced. However, this is in

Page 13: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 13

contrast to an application developer that can create a great application that can generate one

thousand times their compensation. For example, if a developer can create an app that can

support twenty million users, you or a group of developers could potentially create hundreds or

thousands times the revenue for your company relative to your compensation. This is just

another way of saying Dev On!

Who wants to be a Rock Star? - Do you have an Agent?

Traditionally, internal or external recruiters have hired developers and other employees. In

addition, for short-term projects, what is known as “dev. shops” or “body-shops” are out there.

They are consulting businesses that employ engineers or freelancers taking a cut of the billing

rate. Freelancers are not always happy with that since they often get a very small percentage of

the overall billing amount.

The trend now for experienced developers is to get an agent. Agents work with and are paid by

the programmers rather than with the companies actually doing the hiring. The goal is to make

freelancing less risk averse and make it more viable while at the same time making short-term

work cyclical. Having an agent often allows a more balanced lifestyle for Application

Developers. For example, there are companies offering agent services for application

developers like 10X Management and Hack-Match. A company called OfferLetter.io helps

engineers negotiate, and Hired.com lets them market their services, employing “talent

advocates” to help them polish their profiles.

Rock-star developers are, not surprisingly, very different from actual rock stars. Some music

Rock stars have huge egos. Application Developers often have opposite personalities being

more introverted. However, there are similarities. Both rock stars work late hours and often have

a non-traditional life style. In addition, like actual rock stars, rock-star developers come in a

range of personality types. For example, front-end (GUI – Graphical User Interface) designers

and engineers make products that interact with the general public which requires a lot of social

endowment. As a result, they are somewhat with-it and trendy. The further you go down the

“stack,” the more socially challenged a developer can become.

The importance of the application

What is a software application? Application software can be divided into two general classes:

application software and system software. Application software (also called end-user programs)

Page 14: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 14

includes such things as database programs, word processors, web browsers, and

spreadsheets. System software is code that is created that helps end-user software do its job or

it is part of a closed system or appliance. In both cases, underlying hardware, electronic, and

mechanical mechanisms is needed. Therefore, the importance of the application is it usually is

where the intelligence is. Now the application in many ways is becoming not just the

intelligence, but also the business itself. Let us see why.

Every Company is a Software Company

It can be argued that whatever your company does, it really is now a software company. If a

company does not think this way, they are in big trouble! With analytics driving intelligence on

the back end and applications touching customers on the front end, applications are

everywhere. In addition, these new tools are changing how we do business. The result is your

company must, using software and technology, become as responsive and agile as your

customers by measuring, monitoring, evaluating, and responding to data about your products

and services as well as what the impact will be to society. For example, Ford Motor Company

(FMC) drove the 20th-century industrial model.

FMC’s CEO Bill Ford was quoted that when he was growing up he used to worry about making

more cars. Now he worries what if Ford only made more cars? Ford sees cars becoming

“sophisticated computers-on-wheels.” From Wi-Fi receivers that make your car a mobile hot

spot to built-in software that helps increase fuel efficiency; Ford wants to integrate our lives the

same way that Facebook and Twitter are doing today.

Need for a new business mindset

It will be a rocky road for many businesses to embrace this new “life Integration” mind set.

Responsive and agile applications will be the cornerstone in achieving this goal. Businesses

need to work smarter by building organizations that are far more adaptable, inspirational, and

fun. All this drives and creates innovation. The challenge is often changing managements’

approach in making decisions. The leadership style of the 1950’s often no longer works. The

top-down leadership style of the boss telling everyone else what to do no longer works.

Innovative companies create ideas from the bottom up and one can only hope management will

listen.

Page 15: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 15

For example, FedEx, took the approach up front to see that the “Information” or metadata of the

package is as important as or even more important than the shipment itself. This company has

hundreds of developers who build and deploy software products for tracking. Now, FedEx

considers itself a software company that also happens to deliver packages. Going one step

further, FedEx is considering selling its software to other customers and even competitors

making the actual shipping part secondary.

Dev On - The Social Developer

Let’s face it, Social Networking is here to stay. Developers are people too. As a developer, it’s

important to understand how “social” relates to what you are and what you will be doing. The

problem, especially in the enterprise, is how to deliver it in a secure and controlled way. The

goal and benefits is empowering developers to work faster, communicate well, and get

information quickly without constant searches of an ocean of emails. Using Enterprise Social

technologies that enable companies to engage, inform, and connect their employees, partners,

and suppliers is the key. The solution requires:

1. A comprehensive and connected platform – A seamless social experience across many

familiar applications, as well as customers’ data centers, service providers, and the

public cloud, and intelligently mapping interactions to generate personalized insights.

2. A familiar and intuitive user experience – The goal is to improve productivity for users

and better business results. A cloud-based solution that drives faster, lower-cost

implementations reduces the barrier to higher user adoption, which leads to improved

productivity and better business results.

Distributed and mobile workforces are becoming the norm. Being able to obtain input and listen

to all workers wherever they may be is critical.

Open Source

The traditional way of developing software from large software companies like IBM, Microsoft,

and even Apple is developing proprietary software and hardware. For example, mainframes

offered compute power created through a closed approach. Then came the personal computer

running on Microsoft’s software that eventually became the Windows operating system or IBM’s

OS/2 and Apple Computer with various propriety operating systems that over the years

Page 16: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 16

continued this “closed” approach. However, in the 1980’s, the Internet, which had democratic

values and other open initiatives started to loosen the domineering grip, offering choices. Unix

and Linux are examples of an open world. Then came the Open Source initiative.

**What is Open Source? Generally, Open Source refers to a method of creating computer

programs in which the source code is available to the public for use and/or modification from its

original design. Open Source code is typically created as a collaborative effort in which

programmers improve upon the code

and share the changes within the

community. Open Source sprouted in

the technological community as a

response to proprietary software

owned by corporations.

The importance of OpenSource

Open Source is really becoming

important to IT and even EMC. The reason is for developers to address open collaborative

markets and business opportunities including Cloud

Computing, Big Data, Social, and Mobile using

democratized code is now becoming a given. This is also

known as the third Platform. IDC calls the 3rd Platform as

the next big thing beyond PC’s, LAN/Internet, and

Client/Server as shown in Figure 1. For example, EMC,

VMware, and Pivotal are all using Open Source.

In the case of Pivotal, the Open Source Apache Hadoop project was the primary core-code

base of development efforts in Greenplum® big data solutions. Another example is “Cloud

Foundry”, which is a PaaS (Platform as a Service) offering, which is also leveraging Open

Source programming code. In other words, Pivotal’s Big Data and application fabric platform-

development teams use Open Source as the basis or part of its products and solutions. In

addition, not only do they use Open Source, they also contribute code to the public.

How does Open Source work? The open-source model includes the concept of concurrent yet

different agendas and differing approaches in producing software, in contrast with more

Figure 1 - The 3rd Platform

Page 17: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 17

centralized models of development, such as those typically used in commercial software

companies. A main principle and practice of open-source software development is peer

production by bartering and collaboration, with the product, source-material, blueprints, and

documentation available at no cost to the public. Open Source is also a process; even the

military is getting into the Open Source game as outlined in the “Power to the Edge” approach.

Power to the edge refers to the ability of an organization to dynamically

synchronize its actions; achieve command and control and agility; and

increase the speed of command over a network of resources. It is also

an information and organization management philosophy. In effect, it

means getting stuff done more efficiently, faster, and in a more

innovative way than before.

Driving towards perfection

Open Source today is not perfect and has had many challenges. You might think that Open

Source would be highly democratic, distributed, and egalitarian because developers work

together to develop it for everyone else to use. Unfortunately, this has not always been the

case. In reality, even though collaboration and fairness among developers is the goal, many

Open Source software projects have been created and maintained by a privileged few

professional developers. The reasons are many, but most of the issues have to do with

managing the project. To help resolve this management issue, a web-based hosting service

called GitHub was created; it helps the software creation process by making Open Source

development much more decentralized. GitHub made things more personal, democratic, and

easy for developers to become a part of the community and part of the team.

Open Source using GitHub has empowered a new generation of people to collaborate, create,

and produce. GitHub was intended to be an open-software-collaboration platform, but it’s

become a platform for much, much more than code. It’s now being used by artists, builders,

homeowners, and everyone in between, along with entire companies and cities. For example,

people are managing home renovation projects on GitHub. GitHub was once just a place to

store a user’s code, data, and applications; now it’s re-shaping the culture of Open Source.

Page 18: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 18

We are truly living in wonderful times, especially for developers. Open Source is providing an

open, collaborative, and democratic way of producing wonderful software for big data, social

and mobile applications as shown in the ecosystem

outlined in Figure 2. Big companies like Microsoft and other

traditional software vendors may not like Open Source so

much, but they are seeing the light. For example, the all-

powerful and mighty Microsoft is morphing its “.NET”

development platform to be Open Source. They really

have no choice. To keep the hearts and minds of

Application Developers, they have to.

What's essential to understand about OpenSource is it can be shared freely; and as such

becomes very important to social code application development. Social is all about openness

and collaborating in developing applications. In addition, OpenSource is often used in

developing 3rd platform applications as well as the infrastructure that supports it. Let’s look at

what we mean by 2nd and 3rd platforms.

Drives 2nd and 3rd Platform Development

Traditional enterprise

applications such as Oracle are

supported using 2nd platform

infrastructures. Client/Server,

ERM, and Outlook are other

examples of 2nd platform

applications. The 3rd platform is

what’s next!

Web-based applications are

examples of 3rd platform

workloads. Typically, application

developers, especially who are

enterprise focused, need to

support both! That’s why it’s

important for IT infrastructure vendors like EMC and others to support both and offer customers

Figure 2: OpenSource Ecosystem

2nd

Platform

3rd

Platform

Choice

=+

vSphere

vRealize suite

VBlock

vCloud Air

Infrastructure

examples

OpenStack

VMware VIO+ =

Self service

Automated

High Availability

Designed for

failure

Application

level resiliency

Infrastructure

Features+ =

Proprietary or

ClosedSource

Infrastructure

creation/

development

OpenSource+ =

Client/Server

AppsWeb Apps

Figure 3: 2nd and 3rd Platform comparision

Page 19: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 19

and application developers choice as shown in Figure 3. In the enterprise today, 2nd platform

applications are most common. It is the most resilient and often offering self-service and

automation. Examples include VMware's infrastructure solutions shown. In most cases,

application source code is proprietary, also known as Closed Source. For 3rd platform

infrastructures, most of the resiliency is performed by the application itself, with the expectation

that the underlying infrastructure may fail. Examples such as OpenStack and VMware's VIO are

infrastructure solutions. In this case, a lot of the source code is OpenSource! As a result, 3rd

platform infrastructures and applications rely heavily of social code applications development

resources.

Nevertheless, there’s more! Social

Application Development can help us

in three ways. It drives innovation, it

accelerates the creation of applications, and it leverages the

collaborative aspects of crowd sourcing techniques in

a new way. In effect, it can drive higher levels of efficiency in application development.

DevOps

Part of being an Application Developer is to understand the importance of how to work with

other groups within the ecosystem of producing an application. A relatively new approach –

DevOps – is getting a lot of support. DevOps is a term for a group of concepts and approaches

that may not be new, but is being embraced within the application development space. It is

really a framework on how to develop applications. DevOps started out as an approach for

Development and Operations teams to communicate. It now includes the entire development

lifecycle, with the inclusion of automation from the beginning of the process through the

deployment of the solution in a system of incremental, such as that embraced by the Agile

method. This idea has now formed another term, “Continuous Delivery”, which defines a

pipeline approach in releasing applications. This approach has taken hold in many business

verticals, especially for dynamic applications deployed on the Internet.

DevOps is primarily about three things, the Agile Infrastructure, Velocity in application

development, and Lean Startups. The advocates pushing the idea of DevOps are practitioners

using real world experience to help define the transformation of software application

development.

Page 20: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 20

1. Agile Infrastructure. This term is also described as “agile system administration” or “agile

operations”. Its genesis derives from applying newer Agile and Lean approaches to

operations work.

2. Velocity in application development – The second approach is exposed with the

expanded understanding of the value of collaboration between development and

operations staff throughout all stages of the development lifecycle when creating an

application or when operating a service. It also is about how operations are becoming

more important as IT becomes a more service-oriented world.

3. Lean Startup – This approach is to get products into the hands of the customer as

quickly as possible. Many startups believe you just have to bang out some code and

customers will accept it. In reality, having a tight closed loop from building, measuring

the results, and finally learning from mistakes in a concise set of steps is the way to go.

DevOps is also the practice of operations and development engineers participating together in

the entire service lifecycle, from design through the development process to production support.

DevOps is also characterized by operations staff making use many of the same techniques as

developers.

Those techniques can range from using source control, to testing, to participating in an Agile

development process.

Agile and Lean approaches

The old view of operations tended toward the “Dev” side being the “makers” and the “Ops” side

being the “people that deal with the creation after its birth”. The realization of the harm that has

been done in the industry of those two being treated as siloed concerns is the core driver behind

DevOps. In this way, DevOps can be implemented as an outgrowth of Agile – agile software

development prescribes close collaboration of customers, product management, developers,

and (sometimes) QA to fill in the gaps and rapidly iterate toward a better product. DevOps is

simply extending Agile principles beyond the boundaries of “the code” to the entire delivered

service.

Page 21: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 21

Dev On - The Tech Developer

As previously discussed, the social aspect is very important in application development. The

question is, how do you achieve these goals? The answer is often through using the right set of

tools. These tools are not just technology-based like IDE’s (Integrated Development

Environments) and source code version control systems. Let’s find out what they are.

The Art of the Game

For many, Application Development is considered an art. In creating art, there are a number of

principles in doing so. Again, DevOps is leading the way.

Culture

A DevOps culture is one created through discussion and

debate. Traditionally, siloed technical teams interact through

complex request procedures, which may require director-level

arbitration. A more DevOps approach talks about the product throughout its lifecycle, discussing

requirements, features, schedules, resources, and whatever else might come up. The focus is

on the product, not individual agendas. Production and build metrics are available to everyone

and prominently displayed.

Responsibility and variety of roles is another key attribute of DevOps. For example, one of the

early controversial aspects of what has become DevOps is the affirmation that Engineering

should be doing on-call rotations. This way, developers would see personally how their

application is performing which is often the best feedback method. In this way, the people who

are empowered to directly make an improvement are the ones who are alerted to the defect.

Additionally, using these approaches, the team is incentivized around your core goal: creating

an awesome product for your customers, whatever that product happens to be.

In this way, development is not rewarded for writing lots of code. Operations are not punished

when not all that code runs as expected in production. The team is rewarded when the product

is amazing, and shares in the improvement process when the product could be more awesome.

Continuous Delivery

Another principle to adhere to is embracing and incorporation of

Page 22: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 22

Continuous Delivery, which includes integration, test, and QA. It is important to make sure the

software is always in a releasable state so that deployment is a simple process, which can be

accomplished on demand.

Lateral Team Movement

Another principle that should be actively encouraged is lateral movement between functional

teams. When IT practitioners move from one functional team

to another, cross-pollination occurs, bringing valuable

information about processes and challenges with them.

All team members should respect all other team members. This might be stating the obvious,

but often it is not the case. Everyone needs to recognize the contributions of all and treat each

team member appropriately. Respectful discussion and listening to other’s opinions is a learning

experience for everyone.

This then leads to trust. Trust is a massive component of achieving a DevOps culture.

Operations must trust that Development is doing what they are because it is the best plan for

the success of the product. Development must trust that QA is not really just there to sabotage

their successes. The Product Manager trusts that Operations is going to give objective feedback

and metrics after the next deployment. If any one part of the team does not trust another part of

the team, often the tools will not work.

Autonomous Enablement

Allowing the development and operations teams to decide which

tools to use drives inclusion and empowerment offering various

levels of autonomy. With today’s open and collaborative

environment, letting the team Choose Its Own Tools is often a viable approach. In addition, if

the members of the team build the infrastructure and apps they want, they are more likely to

stay invested in their work which allows focus on development, which is the ultimate goal.

Design Principles

Application Developers are designers. As such, like any other creation process, having a set of

principles to adhere to is critical. From managing through execution, let’s see how it is done

.

Page 23: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 23

Management

When creating applications, there are various software

project management practices available to a

development team. Two of the more well-known

practices are called “Waterfall” and “Agile” as shown in

Figure 4. The Waterfall model can essentially be

described as a linear or continuous model of software

design. The Agile model is more of an iterative approach

with limited features added per iterative cycle. Let us

take a closer look at Waterfall.

Waterfall employs a sequential design process as shown in Figure 5. Development flows

sequentially from a start point to end, with several different stages: Conception, Initiation,

Analysis, Design, Construction, Testing, Implementation, and Maintenance.

The emphasis of Waterfall is the project plan and therefore before beginning any kind of

development, there needs to be a clear strategy and a clear vision. Because the Waterfall

method requires upfront, extensive planning, often the execution risks can be reduced. The

ability to estimate timetables and budgets more accurately is also another advantage with

Waterfall potentially addressing risk concerns.

In addition, Waterfall development processes tend to soften the loss of team members since the

Waterfall method inherently requires extensive planning and documentation. A new designer

can easily take the old designer’s place, following the development plan without a problem.

What then are the

disadvantages of

Waterfall? It’s extremely

rigid and inflexible. Altering the

project design at any stage in the project can increase the likelihood of delays. Quite often, it is

nearly impossible to make changes to the solution. As a result, a requirement of the Waterfall

design approach is the ability to gather all of the requirements upfront. In addition, another

problem with the Waterfall method is that feedback and testing are deferred until very late into

the project thus reducing feedback on development results. Therefore, if there is a problem, it is

Figure 4: Agile vs. Waterfall

Figure 5: Waterfall Process

Page 24: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 24

very difficult to respond to it, requiring a substantial amount of time, effort, and a potential for

lost business opportunities.

In contrast, the Agile method as shown in Figure 6, proposes an incremental and iterative

approach to software design. It was essentially developed in response to the limitations of

Waterfall, as a way to give designers more freedom. The design process is broken into

individual

modules that

application

developers work

on. There is no

pre-determined

course of action or plan with the Agile method. Rather, developers are free to respond to

changes in requirements as they arise and make changes as the project progresses. The

practice of Agile development is relatively new in development of software applications.

However, it has made substantial gains in use over the last few of years. Let us look in more

detail of the advantages and disadvantages of this design approach.

The advantages to Agile are it offers a highly flexible design model, promoting adaptive planning

and evolutionary development. Agile might be described as freeform software design. Software

developers work on small modules at a time. Customer feedback occurs simultaneously with

development, as does software testing. This has a number of benefits, especially in project

environments where development needs to be able to respond to changes in requirements

rapidly and effectively.

Agile can be especially beneficial in situations where the end-goals of projects are not clearly

defined. For example, if you are working with a client whose needs and goals are a bit hazy, it is

probably worthwhile to employ the Agile method. The client’s requirements will likely gradually

clarify as the project progresses, and development can easily be adapted to meet these new,

evolving requirements. Lastly, this method also facilitates interaction and communication.

Because interaction among different developers and stakeholders is common, it is especially

conducive to teamwork-oriented environments. Different developers work on different modules

throughout the development process and then work to integrate all of these modules into a

cohesive solution.

Figure 6: Agile Developent Process

Page 25: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 25

Though highly flexible, Agile simply does not have the structure that the Waterfall method has

and this does present some drawbacks. Agile projects tend to be hard to predict, from timelines

to budgets. Without a concrete plan, everything remains a bit vague and nebulous.

In addition, as previously discussed, active user involvement and intense collaboration are

required throughout the Agile process. Even though collaboration can be considered a positive,

it does have some negative aspects. For example, highly collaborative development methods

can be quite time consuming, much more so than the Waterfall method due to not having a

concrete plane. More brainstorming and dialog often occurs.

What then is the best

development process for

implementing a DevOps

approach to Application

Development? What are the drivers?

The common drivers are shown in Figure 7 such as customers and requirements changing as

well as technology innovation. The most common answer is with constant and accelerated

changes in business requirements, customers’ needs, and technology innovations, an agile

approach is often the recommended and proper approach. Waterfall tends to be best for static

projects, where it is not likely that many changes will be made throughout the development

process. In contrast, Agile tends to be a better option for dynamic projects where changes are

likely to be made during the design process pipeline.

The Design Trifecta

Let’s look closer at the Agile process. Creating a shorter

design cycle has its benefits; however, with a more agile

build and test cycle, a number of bottlenecks can arise. For

example, the development team can write some great code

but, if they decide to do faster design, build, and test

iterations, they might be wasting time waiting for other teams

to complete their tasks in QA or test. In other words, how do

teams address bottlenecks in the cycle? This is where

Scrum, Kanban, and XP, also known as extreme

Figure 7: Design Management Drivers

Figure 8: Agile Practices

Page 26: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 26

programming comes into play as shown in Figure 8. Each of these approaches is different but

related. Let us go over these agile practices and approaches.

Scrum

The Scrum method of agile software development as shown in Figure 9, is associated with a

regular, repeatable work cycle, known as a sprint or iteration. A sprint is typically about 30 days

long, shorter sprints, such as one-week, two-

week, or three-week sprints are also

common. How long each sprint lasts is

something for the team to decide. The team

must weigh the advantages or disadvantages of a

longer or shorter sprint for their specific development

environment. The important thing is that a sprint is a consistent duration. During each sprint, a

team creates a shippable product, no matter how basic that product is. Working within the

boundaries of such an accelerated timeframe, the team would only be able to build the most

essential functionality. However, placing an emphasis on working code motivates the product

owner to prioritize most essential features of a release. This flow encourages developers to

focus on short-term goals and gives customers a tangible, empirically-based view of progress.

Because a release often requires many sprints for satisfactory completion, each iteration of

work builds on the previous. This is why Scrum is described as “iterative” and “incremental.”

Kanban

When adhering to a scrum iteration process, often bottlenecks arise as shown in Figure 10. A

software development process can be

thought of as a pipeline with feature

requests entering one end and improved

software emerging from the other end.

Inside the pipeline, there will be some form

of process, which could range from an

informal ad hoc process to a highly formal

phased process. In this case, a simple

phased process of: (1) analyze the

requirements, (2) develop the code, and

Figure 9: The Scrum Process

Figure 10: Scrum Bottlenecks

Page 27: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 27

(3) test that it works is outlined. It could also be a more formalized Scrum sprint as well. A

bottleneck in a pipeline restricts flow. The throughput of the pipeline as a whole is limited to the

throughput of the bottleneck. The effect of this bottleneck is that lead times go up. In addition,

work sitting in the pipeline ties up investment, slows time to market ,and often quality suffers. To

keep up, the testers start to cut corners. The resulting bugs released into production cause

problems for the users and waste future pipeline capacity.

If we knew where the bottleneck was, we could redeploy resources to help relieve it. For

example, the analysts could help with testing and the developers could work on test automation.

However, how do we know where the bottleneck is in any given process? In addition, what

happens when it moves? This

is where Kanban comes in. A

Kanban system, in its simplest

form, consists of a big board on

the wall with cards or sticky

notes placed in columns with

numbers at the top as shown in

Figure 11. The numbers at the

top show the maximum number

of work efforts being allowed within each process

step such as pending, Analysis, Development, and so on.

This allows the development team to see at a high level what is going on in process flow.

Limiting the work-in-progress at each step reveals the bottlenecks so the team can address

them. The cards represent work items as they flow through the development process

represented by the columns. The numbers at the top of each column are limits on the number of

cards allowed in each column. The limits are the critical difference between a Kanban board and

any other visual storyboard. Limiting the amount of work-in-progress (WIP), at each step in the

process prevents overproduction and reveals bottlenecks dynamically so that you can address

them before they get out of hand.

Figure 11: KanBan Big Board

Page 28: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 28

XP – Extreme Programming

Extreme programming (XP) has many facets and there is a lot of overlap with Scrum and

Kanban in the outcomes they derive. Techniques such as pair programming, coding standards,

and small incremental releases are included as shown in Figure 12.

However, one aspect of XP that is unique and complementary

to the others is the aspect of customer interaction. XP is

successful because it stresses customer satisfaction. Instead

of delivering everything you could possibly want on some date

far in the future, this process delivers the software you need

as you need it. XP empowers developers to confidently

respond to changing customer requirements, even late in the

development life cycle.

Extreme Programmers constantly communicate with their

customers and fellow programmers. They keep their design

simple and clean. They get feedback by testing their software

starting on day one. They deliver the system to the customers as early as possible and

implement changes as suggested. Every small success deepens their respect for the unique

contributions of team members. With this foundation, Extreme Programmers are able to

respond quickly to changing requirements and technology.

Developer Tools

Anyone who develops or creates something usually has a set of tools. This is also true of an

Application Developer. Let’s look at some of the most common tools they use.

Continuous Integration

Most developers understand and appreciate version control as it relates to source code. Being

able to save previous versions and releases is a well-known process for most developers.

Version Control

A day in the life of any developer involves version control.

Version control allows developers to manage source code

updates and changes in a logical way. However, it is

Figure 12: Extreme Programming

Attributes

Page 29: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 29

important to appreciate that version control is not just about source code. It’s best practice to

use version control for all production artifacts. This makes it easier for testing and

troubleshooting with changes made during production repeatedly in a reliable, low risk way.

Looking deeper into source code management, automation software tools supporting this

function have been used for years in the management of source code in developing

applications. Source code management software creates checkpoints in one’s work and allows

you to go back to those checkpoints when you want. Once you are back to such a checkpoint,

you can also deviate from the original path that you chose. This is exactly what version control

systems do for you.

As shown in Figure 13, when using version

control, the main code is present either locally on

a shared development platform or on one central

repository using a client-server model or

distributed over many repositories. Local shared version control systems such as “CVS” have

been around the longest and used infrequently given multiple limitations in today’s agile world.

Distributed and/or client-server models are used most often. Centralized systems such as

“subversion” have a single central copy of the code on a server and developers commit changes

to this central copy only. In distributed systems such as “Git”, every user has a copy of the code,

with full history of the project. Subversion’s strength is emphasis on centralized code and RBAC

(Role-based access control), which can be important in an enterprise environment.

Git offers strong support for non-linear development more in line with the Agile or DevOps

approach to collaboration and openness. Git supports rapid branching and merging and

includes specific tools for visualizing and navigating a non-linear development history.

Now that we have manageable code, let us look at the best way of moving from development,

through test, and into production, adhering to the DevOps model of collaboration and

transparency.

Figure 13: Version

Control Architectures

Page 30: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 30

Application Mobility

Most applications are dependent on services, such as a particular operating system, database,

infrastructure architecture, or cloud provider. The challenge then is how does one allow the

application to be easily moved from one infrastructure to another? The answer is containers.

The concept of an application container is not new; examples

include LXC, Vagrant, and others. What is new is how the

container is being designed. This new container is unique in

several ways: it is based on Open Source, which prevents

vendor lock-in, it is lightweight allowing you to massively

scale, and it is backed by some big players, such as

Google and Facebook. For example, Docker is an

example of a container technology that is gaining wide

acceptance. Docker is being embraced by more than just

the Linux open source- based proponents. Proprietary

software companies such as Microsoft have also

incorporated Docker.

By using containers, without making any changes to the application itself or its configuration,

applications can run within one’s development, test, and finally a production environment. In

addition, one can move to any infrastructure environment, be it on a private, hybrid, or public

cloud. An example of a container is “Docker”. Docker does three things as shown in Figure 14.

First, it allows developers to create applications that are very small, allowing millions of

instances to run on a smaller infrastructure

footprint. Second, it allows applications to be

moved anywhere in the cloud at the flip of a

switch. Last, it allows the application to scale

and ensure it is always running and available.

Let us see how this is done.

Containers

Docker containers, as an example, have similar

attributes to VM’s or virtual machines. What then is the difference between containers and

Figure 14 - Docker (Container) attributes

Figure 15: VM's vs Containers

Page 31: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 31

virtual machines as outlined in Figure 15? VM hypervisors, such as ESX, Hyper-V, KVM, and

Xen, are all "based on emulating virtual hardware”. That means that there is a lot of legacy code

and services in terms of system requirements.

Containers, however, use shared operating systems. This offers increased efficiency compared

to hypervisors in terms of system resource. Instead of virtualizing hardware, containers rest on

top of a single Linux instance. This in turn means you can eliminate a high percentage of the

ancillary code leaving you with a small, neat capsule containing your application. As a result, the

number of server application instances can be substantially increased as you can use Xen or

KVM VMs on the same hardware. The time of creation and deployment of each application is

increased.

Docker is built on top of LXC. The key difference between containers and VMs is that while the

hypervisor abstracts an entire device, containers just abstract the operating system kernel. This,

in turn, means that one thing hypervisors can do that containers cannot is to use different

operating systems or kernels. With Docker, all containers must use the same operating system

and kernel. If multiple copies of the same application are what you want, containers is the best

option. The advantage of using containers is with the efficiency it offers, data center or cloud

providers can save tens-of-millions of dollars annually in power and hardware costs.

Release Enablement

The life of an application developer does not end with code development. It is important to be

able to understand what features and functionality are part of every release. Automating this

process with a single repository of the deliverables is the key for automated release processes

and is very important as shown in Figure 16.

Releasing software to a target system is always

a synchronization point for the software itself,

the infrastructure, and the development and

operations teams. Often, “done” is considered

exactly that: the point at which the software has

been successfully deployed and configured to a

target system. Under automatic releasing, major

parts of the release process are performed by scripts and tool chains. A simple single action to

Figure 16: Code Release

Flow

Page 32: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 32

promote automatically created release candidates to release status is the ultimate goal. To gain

fast feedback and synchronize across departments continuously, scripts and tool chain support

is required. The prerequisites of a holistic automatic releasing process include the following:

Having team commitment in collaborative working environments is critical. One must use highly

integrated tool chains consisting of lightweight tools such as Jenkins, Sonar, and Maven, that

can be chosen and orchestrated as needed and that are aligned with specific requirements.

Another key approach to release management is to include source code, database scripts,

middleware, infrastructure, configuration files, such as Java properties files, and build/deploy

scripts into version control. Using declarative formats to set up the automation and releasing

process, wherever possible makes management and modifications less restrictive when doing a

release. Another best practice is to Declare, explicitly, and isolate dependencies of

application, middleware, and infrastructure. Finally, it is important to integrate all

artifact types, including source code, database scripts, and infrastructure scripts

into a single repository.

Let’s look at automated release management that is all part of a

Continuous Integration (CI) and coupled tightly to a

Continuous Delivery process.

Using standards and tools that

are native to the development

and target platform currently in

use is often a good idea when

setting up a holistic software delivery

process. With the following example as

shown in Figure 17., lets illustrate how to use a container construct for the software being

developed and to configure the installed (or updated) application during installation time.

An example of a development or delivery process for Linux-based target systems using RPMs

as the container for the software is shown in Figure 17. As a part of a continuous build, the

developer pushes code (Step 1) to the version control system or Source Control Manager

(SCM), in this case Github. The SCM then notifies the Continuous integration and delivery

server, in this case Jenkins, to pull a code branch (Step 2). Jenkins then checks out source

Source Control

Manager (SCM)

1 - Push updated

Source Code

Continuous

Integration/Delivery

Server

Developer

2 – Notify CI engine to

pull code branch

3 – Pull code

Branch request

4 – Git replys with

code branch

5 – Build

Binaries

Build Repository

(RPM, EARs, etc)

Figure 17 - Continious Integration Example

Page 33: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 33

code branch (step 3) and builds scripts from a version control system or SCM. The SCM system

then notifies Jenkins with a code branch to build upon (Step 4). Jenkins then uses a build

repository to create delivery packages in the form of RPM’s (Red Hat Package Manager) or

EAR’s (Enterprise Archive) files (Step 5). Continuous integration, test-driven development, and

Build automation are not new to DevOps. All of these had a purpose to automate as many parts

as possible of a software product lifecycle. However, the focus of DevOps is often the software

itself, and the infrastructure on which the software runs is still quite often a “work in progress”.

Continuous Delivery

Traditionally, deployments within a

typical production infrastructure had to

do with the configuration of storage,

operating systems, servers, switches,

routers, and firewalls each with its own

separate team managing and monitoring

as shown in Figure 18. Documentation of

the environment has often been limited.

Figure 18 - Traditional

Production

Infrastructures

Page 34: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 34

Given the dynamic nature of Development environments, even close to the period of

deployment, often the architecture is not yet fixed. It is also common that each developer has

set up his or her local development environment with all the components running on one or two

development machines. This leads to different development, test, and production configurations.

To make matters worse, there is also often no central version of the infrastructure that can be

considered always

stable. An approach

to address these

challenges is to

consider the

infrastructure as code

itself. Implementing

this form of

methodology allows a

simplified way of

managing the

infrastructure through

abstracting the underlying

hardware resources. Let us take a closer look.

As previously discussed, deploying an application within a test or production environment often

has been hand-crafted, with scripted solutions and limited documentation. If you embrace the

approach of abstracting the infrastructure as code, the ability to automatically release

applications is enhanced. In recent years, tools in the field of configuration management started

to gain popularity to address these challenges based on well-documented RESTful API’s. These

tools help developers and operations work together and enable more transparency on the

infrastructure level. After all, in today’s world of ever more complex and distributed IT systems,

there is an increasing need for developers to know about the operational aspects. The

infrastructure-as-code paradigm, also known as a software-defined data center and its related

tools can help to achieve this goal.

As shown in Figure 19, by leveraging various orchestration platforms such as vCloud Director

from VMware and OpenStack and the underlying compute, network, and storage abstraction

API’s such as EMC vIPR and VMware NSX, make the infrastructure truly look like code.

Figure 19: Example Orchestration Platforms

Page 35: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 35

Infrastructure as Code

By treating the infrastructure as code, flexibility between how the infrastructure is used and

shared in development, test and

deployment is now possible. As

shown in Figure 20, the infrastructure

as code approach helps to further

the spread and integration of many

tools such as Puppet and Vagrant

and grow the whole community

around them. Vagrant allows one to

easily build lightweight and portable

virtual environments, based on a simple

textual description. Puppet is a configuration

management tool that uses a declarative syntax to describe the desired state of a target

environment and allows this description to be executed to create that state on a target machine.

In this way, developers do not have to set up the environment manually or partly aided by

scripts, but can have those writing executable specifications, utilizing virtualization to create and

destroy their test environments on the fly, as needed. Getting new developers on board would

simply be a matter of having developers check out the specification from the version control

repository, execute it, and use the same environment as their other team members. If the team

decides that changes to the infrastructure have reached a stable level, the specification can be

used to update any shared environments such as for acceptance or integration tests. Once that

is done, it can be passed over to the operations team, who can reuse the specification for

staging and production environments.

Figure 20: Infrastructure as Code Example

Page 36: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 36

Figure 22: Measurement of Success

Finally, as the example shows in Figure 21, Jenkins, in conjunction with provisioning software

such as Vagrant and Puppet or Chef, can push the software code to the target platform, tests

can be done and, once done, the

environment can be completely torn down or

remain and scale accordingly in a production

environment.

DevOps tools offer the connection between

the traditional approach of SDLC

development and the operational focusing

only on the current released application,

middleware, and infrastructure instance.

The software-defined data center (SDDC)

bridges that gap allowing abstraction of the

underlying operational models.

In addition, the SDDC emphasizes the need to handle set up of the infrastructure in the same

way you would handle development of your code: pick the right language or tool to do the job

and start developing a solution that suits your needs, making it an executable specification that

can be applied to target systems efficiently and repeatedly. This can be achieved by using tools

such as VMware vCloud Director, vCAC, and vCloud

Suite. In addition, there are also open source tools such

as Vagrant, for managing virtualized development

environments, and Puppet or Chef, which are tools for

managing infrastructure items.

Measure and Monitor

One of the most important concepts of an application

developer adhering to a DevOps approach is to measure

and monitor the ability for applications to deliver business value. How does one measure

success in that regard? One way, as shown in Figure 22, is to evaluate the number and frequency

of software releases. Another is to determine the number of defects per release or the time or

cost of each release as well as the time it takes to fix defects, also known as the Mean Time To

Figure 21: Continious Delivery Integration

Example

Page 37: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 37

Repair (MTTR). Performance of the application also should be measured. From a business

perspective, understanding the impact of releases from a revenue or profit perspective is also a

criteria of measurement.

APM – Application Performance Management

In line with the DevOps process flow, Application Performance

Management (APM) is the monitoring and management of

performance and availability of software applications. APM strives to

detect and diagnose application performance problems to maintain an

expected level of service. The goal of APM is the interpretation of IT metrics into business

meaning and value.

One metric is the performance experienced by end users of the application such as average

response times under peak load. The load is the volume of transactions processed by the

application, e.g. transactions per second (tps), requests per second, and pages per second. The

response times are the times required for an application to respond to a user's actions at such a

load.

Another metric is the computational resources

(CPU, memory, IO) used by the application for

the load, indicating whether there is adequate

capacity to support the load, as well as

monitoring possible locations of a performance

bottleneck. Measurement of these quantities

establishes an empirical performance baseline

for the application. The baseline can then be

used to detect changes in performance.

Changes in performance can be correlated with

external events and subsequently used to predict future changes in

application performance. In order to monitor application performance, solutions exist to

automate the process of mapping transactions and applications to underlying infrastructure

components as shown in Figure 23.

Figure 23: APM

Approaches

Page 38: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 38

When preparing to implement a runtime application architecture, it is necessary to ensure that

up/down monitoring is in place for all nodes and servers within the environment (aka, bottom-up

monitoring). This helps lay the foundation for event correlation and provides the basis for a

general understanding on how network topologies interact with application architectures.

Monitoring business transaction is also important. It is also important to arrive at a common set

of metrics to collect and report on for each application, then standardize on a common view on

how to present the application performance data. Collecting raw data from the other tool sets

across the APM model provides flexibility in application reporting. This allows for answering a

wide variety of performance questions as they arise, despite the different platforms each

application may be running on. Too much information is overwhelming. That is why it is

important to keep reports simple or they will not be used.

Page 39: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 39

Half-time

You’ve read about the Social and Technological aspects of application developers’ lives. This

first half covered their logistical intelligence, the left brain, concerned with the organization

of the user experience. Now we shift focus to their emotional intelligence, the right brain,

concerned with the passion of the human experience. A Day in the Life of an Application

Developer continues now with the Communication and Artisan sides of this interesting creature

with some hopefully helpful philosophical insights along the way – Dev On!

Just like the college dropouts previously mentioned, AppDevs often “drop-out” of the status quo

and seek to add value where value was once missing. Many AppDevs are dropping out of a 4-

year college education because they feel it’s “a bad investment” to spend more time on theory

than on application (pun definitely intended). They are also dropping out of a job because

management is forcing them to spend more time on mass-producing broken widgets than on

fixing them, or dropping their own children out of a school system because (like Sir Ken

Robinson’s assessment) they feel said school system spends more time on standardization

than on cultivating their child’s unique creativity. AppDevs often recognize that once an idea is

abused past its original intent and starts devaluing humanity, it is time to be painfully honest with

ourselves, till the soil, and re-innovate. As stated earlier, quite often, the most innovative ideas

are created from the bottom up starting with an individual’s creative solutions and not from the

top-down starting with an organization’s consumption model for their consumers. Sometimes

even great ideas become overused, imitated, and saturated by others in a non-optimum way.

For example, in the technology world, everything is a disruption. Everyone wants to be a

disruptor. However, there is nothing uniquely righteous about disrupting, either as a way of

changing the world or as a way of getting rich.

When enough people have applied a great idea as the proverbial hammer towards too

many non-nail problems, the idea can not only begin to lose its original value but also begin

to devalue the human experience as well.

Page 40: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 40

At this point, AppDev’s are often the first to recognize the need to create new solutions for

today’s problems instead of blindly continuing to consume yesteryear’s innovations.

In an IdeaMensch interview with Akhil Nigam

(http://ideamensch.com/akhil-nigam/), Founder

and President of MassChallenge

(http://masschallenge.org/about/vision), the world’s largest

accelerator program and startup competition, Akhil illustrates the

importance of creating new, instead of re-allocating existing, value:

“The MassChallenge epiphany came to [us] in 2009 … At that

moment everyone was focused on the worst global

economic downturn since the great depression. Risk was fleeing

everywhere and the whole economic system came to a standstill with

nobody risking any capital or even lending capital. Our basic premise

was that startups are the source of a majority of the value creation in

society and we need to focus the society more towards value creation

rather than just financial engineering. Too many people and

organizations were taking slices of the pie, and not creating more

pies.” When there is not enough pie for everyone, AppDevs are

usually the first to roll-up their sleeves, put on their chef’s hat and

feed the people. To achieve this, they blend and balance logical

emotion, objective subjectivity, reasonable intuition, and diverging

convergence while being passionate communicators of the ideas that

result from brainstorm sessions with these seemingly opposing paired forces. They apply the

best of these ideas with compassion toward the human experience they intend to elevate. Enter

the Communicator & Artisan Developers.

Dev On - The Communicator Developer

Great communication applies more to the ears/eyes and less to moving mouths. Great coding

applies more to the ears/eyes and less to moving fingers. A day in any application developer’s

life is sure to contain volumes of communication and a wise AppDev understands the

importance of throttling their input to a higher rate than their output. Why? Because to add

Page 41: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 41

value, they first need to learn where value is missing and to learn where value is missing, they

first need to observe their fellow humans in their natural environment.

Communicators to the nth degree

What are people in their department complaining about? Are the problems they are

experiencing technological, procedural, or political? Which technology? Which process? Which

personnel? Why? What have they tried to do about the problem? Have they asked any of their

peers or management for help with this problem? Whom have they asked and what was the

response? How long has the problem existed? Is this particular problem a resurrection of an

earlier problem? Was that earlier problem resolved with alternate technology, process, or

personnel? Which specific one was used? What is the political climate of the department, of the

parent institution? Do people seem afraid to bring up the problem? Was any specific employee

ever blamed for the problem? Did an employee get sent to HR for anger management over the

problem? Does management understand the problem? How does the department rank the

problem in terms of priority?

The scenario above might depict an AppDev’s

problem-solving thought process while

specifically at their job, but AppDevs tend to

generally employ the same nth degree

observation and curious question asking of their

fellow humans in any scenario: at work, while

commuting, during family time, at a party,

wedding, or funeral. The best communicators

keep in mind that many people, problems, and

solutions have come before them and before

attempting to add their own value, they must first

seek to understand and learn from history as shown in Figure 24. The key is to reveal and listen

and finally understand.

Relationships - The connections between the data points matter more

Newborn AppDevs often start-off “reinventing the wheel”. Although we often

hear this phrase uttered with a negative connotation, there is a certain value

of re-achieving someone else’s previous great achievements. You gain an

Figure 24: The key to Understanding

Page 42: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 42

understanding of the problems; compassion for those affected; respect for the solutions’

authors; humility for the magnitude of the solutions’ endeavors; confidence through re-achieving

the solutions yourself, and insights into their potential flaws, limits, and re-applicability.

Once a newborn AppDev becomes a toddler, they are presented with a choice. When they

discover that they can walk (on code :-), they can;

1. Choose to continue creating their own wheels from scratch in Play

Dough or

2. They can learn to connect ready-made ones with other pre-existing

building blocks available in inter-connectable Lego kits.

The first choice retains the ego, the need for control, the need to verify

everything, and a fear of the unknown. When AppDevs succumb to this first

choice, too high an emphasis can often be misplaced on the individual

technology data points themselves than on the more richly valuable relationships between them.

When these relationships are missed altogether, a siloed, solitary, and fragmented

existence results. Roadblocks to innovation are erected and the user experience …

suffers.

The latter choice requires embracing community awareness, trust, collaboration,

and exploration. When AppDevs make this second choice, the relationships

between the data points are uncovered and magnified as the most valuable.

Interconnected roads, bridges, and high-tech recreational vehicles are meshed out of once

disparate pieces of innovation and the human experience … prospers … as we drive IT

together.

The relationships between the human points matter even more than that

The two choices above seem to be less of an issue with the Net Generation (Net Gen) than with

previous ones. Net Gen, also known as the iGeneration, Gen Tech, Gen Wii, Gen Next, Post

Gen & Generation Z, was born into an electronic world of infinite possibilities. They seem to

have been exposed more to the abundance produced through creative collaboration and less to

the scarcity produced through economic paranoia. One only has to look at the numbers of

Minecraft Net Geners to notice this mind-shift at play.

Page 43: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 43

In Minecraft, the Net Gen version of the Lego kit, Net Geners are often iassuming the roles of

teacher, student, creator, and virtual colleague alongside the obvious role of player while

making things out of virtual building blocks. Early immersive game-play like this instinctively

breeds the Communicator AppDev values of the previous second choice in this generation

(community awareness, trust, collaboration, and exploration), invalidating the need to ever

consider the first at all! Much can be learned from these young AppDevs. I originally phrased

the previous sentence with the words future AppDevs but the truth is, they have been behaving

like guru AppDevs for years now, minus the income producing jobs while most of these little

gurus are still at home, so let’s just call them young AppDevs). If you observe them at play,

you eventually notice how much value these AppDevs place on the relationships between the

data points. The choices they make do not pertain to which network connection (WiFi,

Bluetooth, Cat5) or which client device (Android phone/tablet, iPhone/iPad, Chromecast,

Desktop, Xbox, Playstation, Amazon Fire TV) or which programming language ii(Java, straight

Javascript, ScriptCraft) is technologically superior while playing the game. They’re not

concerned with the idea that one technology might eventually supplant another nor do they

spend time worrying which is the most industrially and politically stable one to align with for their

creative endeavors. Should one of these options disappear, these kids will probably be the ones

creating a better solution as they have fun doing it – together! The main choices they make are

based on the questions they ask and answer about the relationships between the data points

affecting gameplay. Sampling my own kids’ conversations with their friends:

“Which server is less ‘laggy’ than the one we’re currently on? Let’s migrate there. What supplies are we missing to

build a house? Wood. Why don’t we have wood? Because we haven’t cut down any trees Why don’t we cut some

trees? Well, it’s nighttime so the ‘hostile mobs’ (monsters) are out and we’re not sufficiently equipped with the right

armor, weapons & tools. What can we do about that? We can quickly mine dirt blocks to build a house, risk felling

some trees in the dark by ourselves or if we group together with other players, we can divide our problem into tasks.

Which tasks? Well, some of us can protect against the monsters, some can collect the wood, some collect food so

we don’t die of starvation, and the rest can build the houses once the wood is safely collected. However, the more

people we have, the more food we’ll need to collect so what do we do about that? Well it’s only possible to die of

hunger in ‘hard mode’. Should we switch to ‘normal mode’? You’ll still lose most of your health from starvation

Page 44: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 44

though. ‘Easy mode’ then? You’ll still lose half of your health from starvation and if there are too many monsters,

some of the food collectors might need to join the protectors. Really, so ‘peaceful mode’ then? In that mode you

don’t ever hunger and there are no monsters.”

With the most important of questions being “What do we feel like creating today and who’s

available online now to do it together?”

They communicate via desktop headsets, server chat-rooms, and mobile phones as they

“playcreate” with each other. They write “mods” to modify the rules and reality of the game

together. They record their own and watch others’ YouTube video tutorials to teach and learn of

new game experiences. They create out of desire, not out of need!

As shown in Figure 25, they are a real-time community of collaborative creatives. As young

AppDevs, they extend the importance of the

relationships to a higher level than just the data

points. The relationships that matter most are

between the human points – in both friendships

and score.

Everyone’s affected

Regardless of generation, every day in the life of an

AppDev comes with a renewed realization that each of our actions and non-actions will have an

effect on those involved and uninvolved alike – everyone’s affected by our choices. The

relationships between data and human points are the observational tools that enable us to

sharpen the scrutiny of the choices we make. Whether you feel you strive insecurely in a world

of scarcity or thrive excitedly in a world of abundance, we’re all connected in either case and in

many ways. A Communicator AppDev chooses wisely yet adventurously but always asks

themselves and others first how their idea might create and destroy value before pursuing it.

The value of Mentorship

Regardless of your trade or discipline, communicating ideas, asking questions, and benefiting

from experience-driven answers is greatly enhanced with a mentor. Communicator AppDevs

understand the value of standing on the shoulders of giants and the best purposefully seek out

Figure 25: MineCraft Masters

Page 45: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 45

these giants. I, among others who have had the opportunity to work alongside these wise,

compassionate, and gentle giant mentors, have had our careers enriched by the experience.

Case in point - Personal experience:

In my case, when I first met Shawn, I was already a practitioner of mentorship but only in

one direction – top down. I hadn’t yet learned the more valuable bi-directional approach

to that concept with which he would soon humbly enable me. Only a few years my

senior, he had developed quite an impressive number of applications that had enabled

the lives of many community college students and had caught the eyes of the Gates

Foundation. He agreed to be my “go to” resource regarding any questions I had while

developing applications for the college’s distance learning department. As busy and

high-profiled as he seemed to be, he always chose to listen and seek to understand my

current points of reference before speaking and biasing me with any of his. He attached

no stigma to asking “stupid” questions. In fact, he had quite the propensity for empathy

and often recognized, by observing my body language, when I felt my questions to be

so. He would take these moments as an opportunity to relate previous similar

experiences, to encourage me to ideate as off-the-wall as I could and to embrace failure

as a teaching tool. Sometimes he even cheer-led me to fail faster so that I could pick up

great understanding of many relationships between the data and human points along the

way!

Failure is such a great humanizer that inevitably, if you find a mentor AppDev as humble as

Shawn was to me, humorous conversations and a relaxed relatable learning experience will

result for both mentor and mentee. Whether we were developing a mobile app, debugging code,

writing technical docs, writing music, or delivering presentations at national conferences

together, his attitude throughout these projects and accompanied light-hearted conversations

always embodied the age-old saying that “knowledge is power” – but with an interesting twist.

Instead of lording knowledge over me (as my previous experiences had taught me to expect),

he sought to enable both of us with it by equally sharing in the failures, successes, and learning

we came across. So there the lines seem to blur. If an AppDev seeks to enable both mentor and

mentee, which one is which? A wise answer might be that they take turns at both roles while

forming a co-mentoring relationship. Co-mentorship not only enables us to combine experiences

from which to derive new ones, but in the process of “teaching” the other, you also gain a better

Page 46: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 46

understanding of what you think you already know by attempting to communicate these ideas

effectively to those processing them for the first time. When you teach, you also learn. I know no

better feeling than when giving and receiving occur simultaneously in each transaction and have

modeled my communication style around this co-mentorship paradigm when working with

colleagues, friends, family, and definitely my young AppDev Net Gen kids who teach me

something new every day.

In his closing address to an online Songwriting class at Coursera.org, Pat

Pattison, a Professor at Berkley College of Music, where he teaches

Lyric Writing and Poetry, summarized this mentorship dichotomy as

follows: “Teaching stimulates more learning for me than anything else. When I try to

articulate something clearly enough for someone else to understand it, it takes on a whole new look. One of my

favorite bands in the 60’s was Procol Harum. Here’s a snippet of a lyric from their third album, Shine on Brightly,

that’s been with me for all these decades:

The lesson lies in learning

And by teaching I’ll be taught

For there’s nothing hidden anywhere

It’s all there to be sought”

Brainstorm, Divide, and Conquer

Whether engaging in voluminous human observations and questions; identifying the

relationships between data points, human points, and the effects our ideas and

choices have on both; or participating in a co-mentorship style of learning, nth

degree communication serves AppDevs well – to a point. When the threshold

of “information overload” is reached however, said information ceases to be

helpful. The TMI (Too Much Information) world we live in, thanks in part to the constant and

disruptive innovations of the information age, is a cold-hard truth AppDevs need to cope with

every single day of their lives. We attempt now to identify the sources of this barrage of data in

which AppDevs choose to brainstorm, divide, conquer and, sometimes … ignore.

Page 47: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 47

Stakeholders, Target Audiences, and Niche

When you develop an application, you need to realize that it’s not yours. Whether an enterprise

developer works on a global team or an indie developer works solo out of their garage,

AppDevs are usually creating something for someone else. They may enjoy creating it, but each

still has to answer to the application’s (1) stakeholders, (2) target audiences, and (3) niche. Any

seasoned AppDev knows that these three are the true owners of the app and successfully

navigating the data-barrage from each is often much trickier than the actual coding. Let’s

identify each;

1. Stakeholders own the application due to the nature of the relationship they have with

you as an AppDev - they are paying you to create something for them or for their target

audience. You as an AppDev report directly to them so any output emanating from this

source must become your input while developing the application.

2. Target audiences own the application due to the relationship they have with your app –

they are using it. They might be indirectly paying you to use the app by paying your

stakeholders who are themselves directly paying you – ex: online science lab

applications for a community college.

They might be directly paying you to use the app when they themselves are the

stakeholders – ex: branding applications for business websites, mobile apps, and email

campaigns. They might be simultaneously paying you both indirectly and directly to use

the app when they pay an “app store” prior to download. As a result, you are getting an

indirect cut from their direct payment to the “app store”. The permutations of this target

audience relationship are many but suffice it to say that once you release your

application into the wild, you as an AppDev report to your target audiences on a

multitude of levels – even more levels when your application has multiple target

audiences (more on that later). Output can emanate from this source in

the form of: app store comments; faculty/student

observations, suggestions and complaints; supporting blogs. In

addition, YouTube video tutorials, and other social accounts

and online communities you might find

yourself needing to moderate; feedback from

conferences and other public speaking

Page 48: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 48

engagements; decisions from steering committees; bug-fixes and patches provided by

the community; analytics collected from client devices in an attempt to provide cross-

platform experiences; integrations with other 3rd party applications. All of these become

your input.

3. Niche owns the application due to the service relationship it originally intended, for you

as an AppDev, to cultivate between your application and target audience. Huh? Yes, it

was difficult to precisely describe that concept in just a few words so let’s try a few more.

Wikipedia defines Niche market as “a focused, targetable portion (subset) of a market

sector”. We’ll borrow some of that definition and say that an AppDev’s conceptual phase

application (when zero lines of code have been written) has “a focused, targetable

portion” of functionality intended to serve “a focused, targetable portion” of humanity.

This, we call, the application’s niche. It’s up to the AppDevs (team or solo) to identify,

clarify, maintain, and protect the application’s niche as soon as the first line of code gets

written and throughout the development life of said application. Doing so preserves the

application’s original service intentions and prevents these from becoming diluted by

later “add-on intentions” that can eventually and silently saturate or bloat the application

into a hammer solution for a non-nail problem. Earlier, we stated that the applications we

create as AppDevs are not ours. This is true even when we own the application’s niche –

we still don’t own the application. However, even when we own the niche as AppDevs,

we report directly to it. In the case of the application’s niche, the source creating the

output is the very same that collects it as input – our conscience.

Diverging Convergence

Stakeholders, target audiences, and niche create volumes of data for AppDevs to swim in. From

past experience, I have found that the best AppDevs are very good data swimmers because of

the creative knack they have for divergent

thinking as shown in Figure 26.

Again, to reference Sir Ken Robinson’s TED

Talk, “How Schools Kill Creativity”, he defines

divergent thinking as “an essential capacity for

creativity” that enables us to see many

possible and non-linear ways of interpreting the Figure 26: Divergent Thinking

Page 49: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 49

Figure 27: Example of Analysis Paralysis

questions to be asked as well as the many possible and non-linear answers to these very

questions. AppDevs equip themselves with this outlook quite well during the ideation or

brainstorming process.

The ELSE is the easier half of

the IF statement presented in

Figure 27 and a seasoned AppDev

needs to be wary of the “analysis

paralysis”, that can result when

combining their divergent thinking with the infinite scenarios and data sources available to them.

Eventually they need to take the infinite outcomes and converge on a specific set. It can be

argued that the Agile approach described in the Design Principles section starting on page 22,

provides AppDevs with a degree of divergent thinking latitude since its process of discrete and

unitary increments of functionality mandate both divergent and convergent thinking per iteration

of development.

Requirements vs Desirements

Divergent thinking creates a wealth of data. When you combine divergent creatives,

stakeholders, target audiences, and niche in the same room, this wealth of data can often lead

to poor choices when AppDevs fail to demand a clear division between requirements and

desirements early on. Regardless of SDLC preference, AppDevs need be good stewards of

each. Requirements need stewardship because these can provide a focused way of uncovering

the truth of the needs the application is meant to fulfill, as well as the descending priorities of

each need (due to available resources, stakeholder buy-in, etc.). Once the uncovered needs

begin scoring a low-enough priority level, these should be consistently and visibly stewarded as

nice-to-have or “desirements” functionality. Desirements provide a safe-guard to forgetful

humans, decision makers who aren’t available during key meetings and late unvetted ideas.

They are also important because everyone likes to feel that their ideas are valuable. If an idea

doesn’t make the requirements list, a desirements list confirms this value without destroying the

value of the application to be developed from the requirements list. If a desirements list sounds

like lip service to any involved parties, note that good AppDevs understand this list to be the

birthplace of future requirements lists during subsequent iterations of the application’s

development.

Page 50: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 50

Under-Promise vs Over-Deliver

A connective tissue to the practice of “requirements vs desirements” is “under-promise vs over-

deliver”. As AppDevs mature, they realize the importance of keeping the implementation details

of the requirements lists to the bare-bones of what’s possible given the resources currently

available to them. As excitable as younger AppDevs might get about the infinite possibilities of

their imaginations, requirements should never be embellished past these finite resources or un-

curated expectations and eventually failure will result from these pie-in-the-sky endeavors.

Should more resources become available (time, headcount, money, technology) after

completing a current list of requirements and you feel like adding muscles to your under-

promised yet completed skeleton and connective tissue, great – over-deliver higher value

anatomy only then! Limit your data-barrage processing to the praise you’ll receive after

unexpectedly wowing your stakeholders!

Gates, Hurdles and Constraints

AppDevs can’t always expect to deal with the data-barrage by brainstorming or dividing their

way around it – sometimes they just need to conquer their way through it.

AppDevs need to traverse many gates and gate keepers on their way to creating that “killer

app”. An “app store” gate might protect its interests, making sure that yours align with theirs

before they ever let you in. SDLC gates might make you forever wait in between testing,

developing, Q&A, and production cycles. Departmental silos sometimes gate the speed of your

development forcing verification by storage, network, compute, security, and legal gatekeepers.

If they’re developing applications for an employer, AppDevs have to abide by all the constraints

imposed by the employer’s existing processes and their relative stakeholders’ needs. If self-

employed, AppDevs have to abide by all their self-imposed (or sometimes self-implode)

constraints: money, energy, health, dreams. They also need the ability to actually maintain

those resources long enough to complete that “killer app”. These constraints often translate into

higher development cost and context switching. Both are costly barriers to developing an

application: Time = Money. However, while financial cost might be the more obvious hurdle to

overcome I, as an AppDev myself, tend to view context switching as the more costly

impediment to developing an application of the two. Case in point: if a pre-existing process

mandates that every time a new feature is added to an app it must be tested, the creative task

of developing is interrupted. The longer the feature flow is interrupted with these context

switches, the more time is lost each time AppDevs need to regroup their thoughts and switch

Page 51: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 51

back to refocus on the original inspiration responsible for generating that last feature. When

AppDevs are prevented from keeping the overall bigger picture in mind long enough to write

systemically coherent code, poorly written applications often result. However, there is a silver

lining when it comes to the cost of developing an app. Cloud computing is relieving some of

these constraints by automating many of the context-switching burdens that divide AppDevs

from the flow of their creations. When manual, mundane, and error-prone tasks can be

automated, more creative autonomy can be afforded the AppDev!

Think “inside out” of the Box!

Whether AppDevs are a divergently convergent creative species to begin with, I propose that all

the gates, hurdles, and constraints they must face are the salt that further seasons the creations

they dish out to humanity! When being placed inside a box they’re simultaneously being asked

to think outside of, AppDevs have to further sharpen their creativity in order to successfully

ideate amidst the imposed limitations and obstacles. Along with thinking “outside the box”,

they’re also often asked to “multitask”, neither of which prescribed bad medicines should ever

be blindly swallowed. Thinking outside the box becomes great medicine only after an AppDev

has already spent a decent amount of observational time inside it. Once you understand the

constraints involved, by all means find a solution that creatively enables you to operate outside

of their limitations without undermining existing processes that depend on them!

In Figure 28, I recently tweeted the following

quote from a great observer of human-

imposed boxes, Pat Pattison. While we

haven’t covered “The Artisan Developer” just

yet, I feel that Pat’s sentiment humorously

identifies with my development experiences

at times when fellow AppDevs and myself

have been asked to think in this way. If it were up to me, I would prescribe a variant to these

box-thinking pills and suggest that you think “inside out” of the box. There’s a time and place for

both. AppDevs need to consider the appropriate context for each.

Multitasking becomes great medicine only after an AppDev has already spent a decent amount

of time experiencing the power of “unitasking”! It’s great to be able to multitask when you have

no other choice, but nothing beats actually completing a single task extremely well before

Figure 28: Inside vs. Outside the Box

Page 52: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 52

Figure 29: Myth of

Multitasking

moving on to the next! It may not always be possible nor desirable for AppDevs to inform their

boss of their unitasking choices but when the end results speak for themselves, well … Many

studies have already proven multitasking to actually decrease productivity but Dave Crenshaw,

author of “The Myth of Multitasking” takes it one interesting step further

by referring to it as “switchtasking” instead. I suggest any would-be

AppDev take Dave’s simple 5 minute test by clicking on the YouTube

video in Figure 29 to understand the dangerous noise that multitasking

can be to their creations and save themselves many wasted years of

unnecessary frustration.

Dangerous Waters

Sometimes constraints can be considered just a nuisance, and the waves of data these create,

just unnecessary noise. In these cases AppDevs can, and sometimes should, learn to ignore

them if they are to lead productive lives. However, sometimes nuisance constraints and noisy

data can rise to the level of actual danger. Before the waves get high enough to cause damage,

AppDevs best move away from the beach’s narrow view of the shore and investigate the source

from the mainland where it’s easier to spot the incoming storm. The sources of damage-

producing data are numerous. We identify a short list of heavy hitters below of which every

AppDev should be aware:

1. Repetitive Strain Injury(RSI)

The best solutions to this ever-present threat involve a healthy combination of ergonomics

and exercise. To achieve a sustainably healthy and productive development environment,

all physically suboptimal scenarios produced by said environment need to be proactively

addressed as they occur.

2. Distractions vs Flow

Being bombarded by distractions at consistently high-peak levels removes an AppDev’s

ability to enter a state of flow, or complete immersion, an essential ingredient for achieving

creative work of any value.

Psygrammer.com summarizes below:

Page 53: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 53

“Programming in the zone — or ‘The Flow’ as it is known in psychology — deserves better understanding. Why? Because

many developers share this experience and rage against environments that don’t support their desire to work in the zone. […]”

“[…] ’achieving a flow state is positively correlated with optimal performance in the fields of artistic and scientific creativity’ […]

‘flow is positively correlated with a higher subsequent motivation to perform and to perform well’ “

“What are the distractions? Open plan offices, interruptions for meetings, talkative colleagues, slow equipment, IM, Twitter,

iTunes, email and much more. What are some other inhibitors? Working on tasks outside your competence; lack of

confidence in your own ability to tackle a task; lack of a clear direction for work.”

Mihaly Csikszentmihalyi’s TED talk calls flow the secret

to productive happiness.

3. Competing Industry Forces

Development frameworks and technology stacks are constantly in a state of flux. It’s

important for AppDevs to keep up with this development flux to a degree. However, when

they catch themselves reinventing the wheel and driving similar solutions to previously

solved problems, AppDevs need to take a step back from the beach and decide who the

“latest language” and tool set is benefiting most. Are either external 3rd party vendor

interests or internal “not invented here” (NIH) syndrome at play? Can the AppDev achieve

the same result via reuse of previous solutions or tools? Remember, tomorrow will always

bring more change.

4. Losing Relevance

The IT industry often preoccupies itself with this fear. Although the concept of “losing

relevance” is not necessarily a myth in need of debunking, the degree to which the industry

uses this fear to influence an AppDev’s decisions often calls for a healthy dose of skepticism

and discernment. Two helpful guidelines to navigating this barrage follow:

Stay relevant by focusing on the relationships between the data and human points.

Page 54: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 54

The only time AppDevs need to worry is when their focus is too heavily placed on the

data points themselves (technologies). With enough time and disruptive innovation,

these do become obsolete and eventually – irrelevant.

The Big Picture

So far, we’ve considered volumes of data from many sources. These included but are not

limited to data from the owners of the application (Stakeholders, Target Audiences, and Niche),

data from diverging convergent brainstorm sessions and data categorized under the label

“dangerous waters” AppDevs need to avoid sinking in. Having considered each of these,

AppDevs then need to compare the top-down vs bottom-up views of this data to reconcile the

two directions into a functional application. An architectural mindset aids in balancing this

ledger. An architectural mindset considers every perspective of a plan: from the solid

foundation, to the structure supported by it, to the variety of tenants and to the diversity of their

current and future needs. AppDevs factor all data and constraints previously outlined into the

conceptual designs of the application and its architecture. Application architecture is often

divided into 3 analogous tiers: back-end, middleware (middle-end) and front-end. In the front-

end, AppDevs focus on items affecting the application’s presentation layer: user interface (UI),

client-side programming, end-user experience, different browsers, different client devices. In

the middle-end, AppDevs focus on items affecting the application’s plumbing layer: server-side

programming, business logic, requirements and desirements from stakeholders, target audience

& niche. In the back-end, AppDevs focus on items affecting the application’s persistence layer:

databases and other data stores. Simultaneously operating from 3 architectural tiers, AppDevs

need to also consider the team’s current skill sets, currently leveraged technologies, future

plans to extend functionality, legacy compatibility and moving target dates. It can quickly

become a very complicated process, especially when AppDevs work alongside those choosing

to specialize in only 1 of the 3 tiers: therefore the notion of back-end developers, middle-end

developers and front-end developers. Some see only the foundation, some see only the

structure and some see only the tenants or target audience. AppDevs need to see all of them.

Some see the architecture from the bottom-up, viewing the foundation as most important and

every layer above less so. Some see the architecture from the top-down, viewing the tenants

as most important and every layer below existing solely to support this top most layer.

Successful AppDevs employ a holistic approach and tackle the architecture from both these

angles to tease out all the details in between.

Page 55: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 55

“Nothing for All” vs “Something for Some”

Employing this architectural mindset serves AppDevs well but even architecture needs to be

used in moderation. When the application’s service expectations become bloated and

AppDevs find themselves over-architecting the app to fit a mold that is useful to too many

people, they need to apply the breaks. Revisiting the originally intended service requirements

with the stakeholders becomes a healthy discussion to have at this point. Stakeholders might

have the ultimate say in the app’s functionality, but they would be quick to agree that an app

achieving “something for some” people is much preferred over an app achieving “nothing for all”

people. AppDevs need to be ever vigilant of these 2 outcomes, cautiously steering the entire

team towards the first. When asked to make or add “just one simple little update/feature” that

seems out of scope, AppDevs need to discern whether these changes take into consideration

the application’s existing architecture, created from initial weighing and balancing of all the

original sets of interdependent requirements. This is not a mere question of a software

development life cycle (SDLC) preference. AppDev proponents of either Waterfall or Agile

(outlined in Design Principles starting on page 22) methodolgies, are subject to the same

disposable perspectives we share as a society on many products – including software. The

“ease” in which software seems to be modified runs in parallel with the constant risk of “easily”

creating bad software. Identifying niche needs and limiting the application to solving just these

while purposefully turning a blind eye to all others is a challenging but important practice for

preventing these “nothing for all” solutions.

Dev On - The Artisan Developer

As a Communicator Developer, we stated the importance of AppDevs using their eyes/ears

more than their mouths/fingers thereby throttling their input to a higher rate than their output.

This helped them humbly learn where value was missing before attempting to add it. A Day in

the Life of an Application Developer continues now with the flipside to that. We observe the

Artisan Developer in their natural environment, where after taking in all the previous inputs and

simmering in them, inspiration now throttles their output much higher.

Meaning

Everyone wants to feel like his or her life has meaning, a purpose. This is no less true of the

AppDev and especially true of the artisan AppDev who chooses to absorb life’s every stimulus

through an amalgam of their body’s five senses and multiple angles of perception – their own

Page 56: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 56

and their world’s combined. After enough stimulation however, these folks need to do something

with all that they’ve taken in, sometimes exploding like a star. Newborn stars explode into

existence while old ones explode out of existence so we leave the interpretation of the star

comparison up to the reader.

Like crowd surfing rock stars, crowd sourcing AppDevs often want to “touch” the lives of many in

meaningful ways: physically, emotionally, spiritually. Towards achieving those ends, rock stars

might say “We Make Beautiful Music” while AppDevs might say “We Make Beautiful Apps”, but

in either case, they both make beautiful human experiences.

Infinite to MVP: Replicating Ground Zero

An AppDev gets an initial creative spark. Their idea spans in infinite directions – it has a central

point that’s focused, very laser sharp and focused, but the possibilities are limitless, endless, as

infinite as the analog waveforms of the infinite brain conceiving the idea. Something new is

born. Maybe something old is made better. Now, how do they get that idea – that infinitely

possible idea – down to a discrete, quantifiable set of zero’s and ones for a computer, for a

mobile phone, for a tablet, for any device to replicate?

AppDevs need to sample their infinite idea into a

much smaller subset. How do they do that?

It’s an art! They can’t replicate the entire idea,

so, they start with a Minimum Viable

Product (MVP). They start, with

ground zero. They try to replicate,

just ground zero soon!

What is their app? What do they want to do? What do they want to change about the world?

What do they want to make better about the world? What do they want to introduce to the

world? That is their app – the MVP, just a window into it! They compress that app from an

infinite number of possibilities down to a constrained number of realities. In time, as constraints

are thoughtfully overcome by the AppDev, the minimum viable becomes multi-viable and the

app’s feature-rich original intentions – explode into being.

Page 57: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 57

ArtDev Evolution?

Over the years, I’ve personally run in enough technology circles to recognize the uncanny

relationship between technology and the arts. It seems more than just a coincidence that these

two intertwine. While recalling my experiences in writing

educational software alongside folks who were both

AppDevs as well as musicians, I submitted the following

to a Google “Open Web” event (Figure 30). proposing:

1. Technology and Arts share a relationship that should

never be separated when teaching our youth.

2. An open web can aid in that cause.

Whether meeting these AppDev musicians at coffee

shops or in bars, over time our conversations would

gravitate toward evolutionary realizations of the roles we

had played and progressed from as AppDevs in this

world. I split our discovered evolutionary path into the

following three categories along with their potentially

controversial definitions, depending on your starting

frame of reference:

1. Software Developer (SoftDev) - develop what’s asked for

2. Application Developer (AppDev) - question what’s developed

3. Artisan Developer (ArtDev) - create what’s not asked for but sorely needed

The general tone of these AppDev Musician conversations indicated that many an AppDev had

identified themselves in the similar chronological order of SoftDev AppDev ArtDev while

progressing through their careers. As they experienced more of the pain and joy that is the

human condition, many had become interested not necessarily in treating it, as you might a

medical condition, but in relating to and elevating it – in a profound way.

Figure 30: Google Open Web Submission

Page 58: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 58

Musical Crossover

The ArtDevs referred to above might stem from an AppDev Musician perspective when

considering their software-to-artware evolution, but our richly growing multimedia- and software-

defined world has the potential to extend this transformation equally well to any AppDev with an

artisan side: AppDev Painters, AppDev Sculptors, AppDev Actors. We’ll continue our

exploration from the AppDev Musician point of view and the affinity of patterns both disciplines

seem to share. A Wikipedia excerpt states this relationship between music and math

“mathematics is ‘the basis of sound’ and sound itself ‘in its musical aspects... exhibits a

remarkable array of number properties’, simply because nature itself ‘is amazingly

mathematical’.” Whether or not they love math, both the AppDev and Musician has a propensity

for being good at recognizing patterns in nature, leveraging these in their creations, and

reflecting them back to the world in a magnified way. For the AppDev, “pattern matching” is

extremely valuable. Whether identifying the cause of failure in error logs or recognizing

emerging trends in technology, better software results when you’re able to “see in numbers” and

appreciate the repeating relationships between data and human points. (And you thought we

were done talking about these?) “Regular expressions”, a syntactical construct available in most

modern programming languages, augments their own natural ability to observe patterns.

Musicians indulge in “pattern matching” every time they play a certain piece of music. Time,

rhythm, meter, and frequency are some of the musical constructs that augment their own

natural ability to observe patterns … in sound. Audience response (dancing, singing, smiling,

frowning, frequency of song requests, genre, digital downloads per zip-code, online fan

communities, t-shirt sales, etc.) are some of the social constructs that augment their own natural

ability to observe patterns … in humanity.

Creative Crowdsourced Explosions

For both AppDev and Musician, being able to identify patterns of human need means they can

begin the process of seeking to solve these. When their natural

ability to “pattern match” is further augmented by software,

beautiful explosions of creation can result, fulfilling the human

need. For Tim Westergren, co-founder of Pandora Radio, the long

road that was Pandora is one such beautiful explosion.

Interestingly, the story begins on the other end of the spectrum

Page 59: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 59

with Tim as a musician prior to diving into the AppDev world. In a 2013 talk at Chicago Ideas

Week, he tells Pandora’s story. While struggling with his own band, Tim noticed many other

extremely talented musicians unable to earn a living and eventually giving up to look for “a job”.

His immersion with the plight of the working musician helped him recognize the overwhelming

pattern of both artists who needed decent exposure and fans who needed a way to find new

music without artificial popularity suggestions. “ … since Pandora's approach to serving up

tunes doesn't use popularity as a criterion, every composition in the catalogue, whether it's

recorded by an unsigned band or by a major-label artist, has an equal chance of getting played

and finding an audience.” The long road to solving this need didn’t begin with Pandora however.

Before Pandora existed, Tim had become a film composer and had developed a manual

process of identifying a film director’s musical tastes as a guide to deciding on the type of music

to eventually write for the film. His idea to codify this process into a product leveraging

technology to build a discovery engine eventually became known as the Music Genome Project.

“The Music Genome Project technology was developed by Glaser with musical input from

Westergren. The idea was to create a separate, individualized radio station for each user having

just the ‘good’ music on it, with none of the ‘junk’ that other users like. In order to achieve that

goal, they had to bring different styles of music

together into a predictable pattern for analysis.”

The Music Genome Project and its complex

mathematical algorithms uncover the

relationships between different music by

comparing over 450 musical characteristics or

“genes” and by crowd-sourcing individual tastes as the core of Pandora, building new

relationships between artisan and fan every day.

Priceless Art vs Cheap Apps

Not all great ideas explode into Pandora-sized apps. AppDevs need to fight through many

gates, hurdles, and constraints on their way to tangibly actualizing the intangible ideas trapped

in their heads. This is especially true for ArtDevs whose technological idea is artisan in nature.

Even when the idea reflects some portion of humanity back to itself in an attempt to solve their

needs, by virtue of being an ArtDev, they might be going about the solution in an unconventional

Page 60: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 60

manner and can expect push-back. Tim Westergren’s road is a long one for a reason and still

is. In the disposable society we’ve adapted to living in, it’s become unconventional to create a

product that cares more about the human condition than about making money from it. Would

you ever ask a painter to update a classic Norman Rockwell to a more edgy, superhuman Stan

Lee? No! Would you ever ask a musician to update a classic Brown-Eyed Girl to a more

alternative, hip hop Black Eyed Peas? No! At least, not unless it’s a dance mix Would you

ever ask an AppDev to redo their finished LMS (learning management system) to behave more

like a MOOC (massive open online course)? Of course you would! But, why is that? Are

developers’ applications dispensable commodity products not worthy of being considered as

one-of-a-kind works of art in their own right? Does the fact that they are easily modifiable and

replicable in comparison to “real art” cause this mentality? What if we thought of applications as

organic art that grows and morphs over time? Would we then value each iteration as a unique

masterpiece or would we keep nonchalantly asking developers to make/add “just one simple

little update/feature” without respecting what was accomplished before? Without first

considering all the interdependencies that may have been injected by all the varying

stakeholders’ “requirements” and “desirements”, we could end up with “nothing for all” solutions.

However, if AppDevs and their artisan sides don’t adapt to the flux this climate brings, they can

find themselves and their artsy ideas quickly becoming irrelevant no matter how good they

might be. Do they need to learn how to fail and morph their creations faster and cheaper by

leveraging dynamic, software-defined cloud development environments like a Platform-as-a-

Service (PaaS)? Will these environments expedite innovation by removing the wait time

between brush and key strokes, enabling them to keep their thoughts and inspiration in constant

united flow? AppDevs with a “Change the World” mentality who feel that music inspires, art

inspires, and code inspires, will do best to remember that performers perspire and don’t mind

sweat equity in a world of constant change. If knowledge is power, power that helps AppDevs

adapt to this change, then creativity is the humble curiosity that helps AppDevs create the

change itself. There’s an abundance of each begging to be thoughtfully combined!

Page 61: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 61

Bringing it all together

We have seen how AppDevs are multifaceted individuals that constantly juggle social,

technological, communication and creative demands. So are they creating Priceless Art or

Cheap Apps? Good AppDevs are experientially focused on how the world will benefit from their

contributions. Conscientious AppDevs are concerned with crafting technological solutions to

every day problems and always have in the forefront a clear understanding of the need these

apps are intended to serve. In other words, they are uniquely "wired" to first identify

opportunities to create value where value is missing and then, develop cutting edge solutions to

support those needs. It’s within the realm of the co-existance between the right side and the left

side of the brain that AppDevs can do what they do best: create effective and functional apps

that enhance the human experience. It is the inherent value of these apps that make them

indispensable to the consumer and in the process, prove to be financially profitable to the

stakeholders. True, this is a fast moving industry where new discoveries or developments often

render “just finished” apps obsolete or replaceable. However, an effective AppDev does not

equate the need to develop need-informed apps expeditiously with cranking out un-functional

apps at breakneck speed. As Marc Andreessen said: "Software is eating the world". At the end

of the day, however, software is supposed to make life easier whether created for the individual

user or for multibillion-dollar corporations. Effective Application Developers are crucial to

making this reality happen.

Page 62: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 62

Music Video Grand Finale

Once again as per the AppDev

way, let us combine the left and

right sides of the brain for maximum

effect as we now see what a “Day

in the Life of an Application

Developer” really looks like through

a music video grand finale! Click

on the image or caption referenced

by Figure 31: A Day in the Life of

an Application Developer, to launch

the video. You can also click on this

link -

http://tiny.cc/ADayInTheLifeOfAnAppDev

Figure 31: A Day in the Life of an Application Developer

Dev On!

Page 63: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 63

Authors’ Biographies

Rene Vogt-Lowell is a Senior Education Technology Consultant at EMC in the New Product

Readiness Group based in Franklin MA and has had the chance to serve humanity in many

ways through 19+ years of multi-faceted IT experiences. A strong believer in mentorship, Rene

strives to balance sharing against receiving of knowledge and perspectives with and from others

through productive co-mentoring relationships. As a senior application developer, Rene lead the

development and mentorship of junior developers on over 20 online science labs, simulations &

mobile learning games. He has presented at many national e-Learning conferences

representing Sinclair Community College where great acclaim and repeated awards were

received for their pioneering online science lab program & their first mobile science lab. As an

independent software consultant, Rene has applied both Adobe and open source solutions in

the education, health, entertainment, data warehousing, medical & automation industries. As a

stage performer, musician, college instructor and father of two, Rene has enjoyed throttling and

repackaging his message delivery against many diverse audiences and backgrounds.

Certifications include EMC Proven Cloud Infrastructure and Services Associate, CompTIA

Linux+ Certified Professional & hopefully soon Coursera Modern Musician so he can indulge in

the creation of Interactive Music Videos

Paul Brant is a Senior Education Technology Consultant at EMC in the New Product Readiness

Group based in Franklin MA. He has over 29 years’ experience in semiconductor design, board

level hardware and software design, as well as IT technical pre-sales solutions selling as well as

marketing, and educational development and delivery. He also holds a number of patents in the

data communication and semiconductor fields. Paul has a Bachelor (BSEE) and Master’s

Degree (MSEE) in Electrical Engineering from New York University (NYU), located in downtown

Manhattan as well as a Master’s in Business Administration (MBA), from Dowling College,

located in Suffolk County, Long Island, NY. In his spare time, he enjoys his family of five,

bicycling, and other various endurance sports. Certifications include EMC Proven Cloud

Architect Expert, Technology Architect, NAS Specialist, VMWare VCP5, Cisco CCDA, CompTIA

Security +.

Page 64: A Day in the Life of an Application Developer · 2020. 11. 25. · Not very long ago, developers were often seen as geeky smart people that were too eccentric and stand-offish to

2015 EMC Proven Professional Knowledge Sharing 64

Appendix A – References

i The game was created by Markus Alexej Persson (born 1 June 1979), so not a Net Gener but a Gen Y (1 gen up). http://en.wikipedia.org/wiki/Markus_Persson The enterprise took over “On September 15, 2014, Mojang AB and all of its assets (including Minecraft) were purchased by Microsoft for US$2.5 billion.” http://minecraft.gamepedia.com/Minecraft_Wiki

ii http://minecraft.gamepedia.com/Minecraft_Wiki https://github.com/walterhiggins/ScriptCraft/blob/master/docs/YoungPersonsGuideToProgrammingMinecraft.md

EMC believes the information in this publication is accurate as of its publication date. The

information is subject to change without notice.

THE INFORMATION IN THIS PUBLICATION IS PROVIDED “AS IS.” EMC CORPORATION

MAKES NO RESPRESENTATIONS OR WARRANTIES OF ANY KIND WITH RESPECT TO

THE INFORMATION IN THIS PUBLICATION, AND SPECIFICALLY DISCLAIMS IMPLIED

WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Use, copying, and distribution of any EMC software described in this publication requires an

applicable software license.