Thoughts toward a "Pseudo"-resume ...
(weak attempt at geek joke)
Aug 2012: Five months ago, my original intention was to update my skills and
knowledge of the current 'trends'in software testing, and implicitly, web development.
I've made great strides (of course, studying 14/7)
but every few days, I read about, or Mark mentions "another "thing I
need to learn...", i.e., some new tool or framework or ..
The scary things is that I want to learn, or at least learn about,
eveything.
It is when I look at job listing
that I realize that the gap - how much I've missed in recent years- is far wider than I'd realized.
During the past
twelve years
...as the size and usage of the internet expanded and web
design and development saw the addition of
Cascading Style Sheets,
Flash,
Javascript
and its recent resurgence (proliferation of server-side
JavaScript implementations and
node.js),
AJAX
the evolution of
HTML
to XHTML and now
HTML5,
the
Semantic Web design movement,
Single Page website design,
User-Generated Content,
and, more recently mobile and other device types on which to access the web and run
native apps,
and now the sprint-forward of HTML5 and CSS3 and
all related "New Exciting Web Techologies"
... and as the expansion of the use of relatively new programming languages,
such as
Ruby,
Python 2.0,
PHP
and web application
frameworks and the
decline of the use of
Perl
... as well as the emergence of new software development disciplines
-
Agile
for example, was introduced in 2001 with the publication of Schwaber and Beedle's
Agile Software Development with Scrum -
AND
... as the
software testing
methods adapted, and became more diverse and
automated,
in part with the assistance of less expensive or free automation tools,
and while testing may not be
dead, as predicted and asserted by some,
the role of testers.. has most definitely changed
I wasn't looking ...
or, at least, wasn't seeing, nor, it seemed, were my coworkers or shrinking circle of friends,
(except one, who, for the past three years, as a startup, has been developing a
complex web based application,
but whose efforts had gotten little of my attention, even though we live in the same house).
Meanwhile....
I worked in ___ QA/Test/Release___ on large, complex,
high perfromance integrated systems for LARGE SCALE, image-based --BACK END,
remittance document processing, the clients for which are high profile banks.
Originally created in the late '90s and developed with C and Perl on both
FreeBSD and RHEL (Red Hat Linux), these systems operate on private intranets with
web technologies limited to Apache,
HTML,CSS, Perl and some Javascript. The complexity is such that all testing must be
manual and exploratory, within a loosely 'waterfall' development/test model
(though we didn't refer to it by name).
Though the system was large, the developemnt and test/release groups combined were a
diminutive 16 souls and we worked very closely together and with the small customer support group.
It is a 'real challenge', to describe in a few sentences, the
GIGANTIC scope and difficulty of testing/integrating/releasing RIDS -
the 'learning curve' for which is six months to a year -
so as to convey
the level of my problem-solving abilities as well as the
kind of environments in which I can work and
the daily challenges I can meet
Most people are unfamilar with, and therfore cannot appreciate,
just what is involved in the developing, integrating, testing, releasing and supporting
of project-based systems such as those with which I have most of my experience.
- the mammoth volume of processing at some customer sites combined with ..
- the urgency of must-be-processed-within-a-single-day nature of banking systems
- the gravity of (i.e, client profit-affecting) production-stopping software errors
- the enormously complex set of business rules of each of the banks themselves
as well as
- the huge web of banking laws, federal and state, especially with the
introduction of check21
- over a dozen possible processing streams (as well as numerous input and
output options) for a given bank, each of which is almost a unique application
- the large number of special cases
- ...
- ...
Back to Top of Page
The skills and expertise that I used regularly were ..
- excellent testing skills: inquisitive, systematic, thorough, tenacious
- writing structured, traceable test plans [based on SW specifications, if available],
and test cases of a complexity appropriate to the task at hand
- actively seeking additional information when needed
- being nagged by detail
- solving problems
- logging, tracking and following up on the resolution of software and specification defects
- sharing information with and trained coworkers
- ...
Generally ... borrowing change.org's format:
- I POSSESS
- "extensive" experience in Software QA/Testing/Writing
- an understanding of, and experience with, all phases of the
SW Development Life Cycle (SDLC),
and Test development, from Product Specification, Test Plan and
Test Case Development, all levels of Testing, Troubleshooting,
End User Training and Documentation and Customer Support.
- "proven" capacity for working under severe time pressure
in a multi-project environment, both as a team member and a
team lead responsible for on-time product release into production
- the ability to learn new technologies quickly
- I AM
- generally acknowledged to be:
- tenacious / diligent/ persistent
- committed to seeing a project completed and done well
- resourceful and highly dependable
- flexible in mind and action
- able to work on more than one thing at a time, but realize that
the popular notion of "mutltitasking" is a myth: the mind
can't truly focus on multiple things at a time ..
- recognize the need to prioritize workload so as to meet deadlines
- I CAN
- [ must ] work well alone AND with developers AND in a team with shifting priorities
- and do consistently contribute ...
- figure out what to look for and what questions to ask..
- describe / explain software defects very well in writing, good verbally
- investigate..
- analyze and troubleshoot test results
- push myself to solve a problem before asking for help, but maintain an awareness
of when it is time to ask for assistance
- communicate in writing, interpersonally(?) and technically,
to both peers and customers
- translate developers' language (usually written) for the 'lay' person / customer
- keep track of *everything* ..
- regularly review own performance in all areas and strive for improvement
(for my own sanity)
- I DO
- analyze the project scope, system requirements, and overall functionality
of new code from available project documentation,
formal and informal, as well as from discussions with appropriate inter-departmental
project resources.
- determine the best approach to verify that the new code not only meets the
requirements as specified, but that the overall design is the most efficient and
understandable for the end-user.
- write structured, traceable test plans [based on SW specifications - if available] and
test cases in accordance with that best test approach.
- work closely with developers during the Development,Integration and
Testing phases of a project:
- strive to be flexible when testing in parallel with ongoing software development;
- pay close attention, adapt to changes in design and scope and provide
ongoing feedback
- take initiative to pursue what needs doing
- I LIKE...
- learning to write Python and Javascript code
- learning and practicing all that is involved in the creation of this website
- to make things work and to figure out why they don't
- to research and solve problems
- to research, interpret and put together information to use toward some end
- to explain things in writing
- to be self-directed, to work by myself AND with others in pursuit of a 'common goal'
- to share knowledge ...
Accomplishments ?
This would have to be routine things: i.e.,
because in neither of my jobs were there opportunities to do anything
exceptional, or, rather, to be recognized as doing something exceptional,
which is generally the case with positions in qa/testing/writing.
It is the developers and support people who tend to get recognition for such...
- consistently delivered working code with which no problems
were later reported by customers...
- though not in a support role, when necessary I didn't hesitate to
answer quesions or offer explanations
- ... and so on
What I've been studying...
is the subject of this website as well as the website itself
(see Study Topics and Resources)
The options for learning have changed dramatically in 2012
with
the creation of free online education resources -
Codecademy,
Stanford affiliates
Udacity
and
Coursera
and now Harvard/MIT's
EdX,
as well as an endless source of online technical tutorials and
discussion forums.
(Introduced in Oct was"Web Platform Docs",
a new community-driven site that aims to become a comprehensive
and authoritative source for web developer documentation. )
Via
meetup.com dozens of SF Bay Area
technology groups have established themselves and meet regularly to share
and discuss ideas.
In the past year, several of these groups were formed by women, for women,
in part as an effort to get more women into the field.
The continued growth and accessiblitliy of
Open Source software via services such as
github
enables anyone
to view and participate in and existing project or create one's own project
I have taken advantage of all of these opportunities
.. so, that is all 'fine and good', but I must answer the
queston "but what can/could YOU do for US, right now"
What I want to (and think I can) do in the future
- using my new skills and 'old'
Back to Top of Page
The Challenge
I'd really like to work for (5-yr-old) change.org,
but see that, at this point, I only partially qualify (underlined are the things
I don't yet have):
- YOU WANT
- a close-knit team dynamic at a profitable company that is making the world better
(YES!)
- an agile environment (BDD/TDD/ATDD,short release cycles,
collaboration over supervision, lean documentation)
- Mac OS X as your development environment (STILL HAVE A PC)
- to make a significant impact at Change.org as our third dedicated quality engineer
- YOU HAVE
- worked on at least one high-performance, consumer-facing web site
- demonstrated expertise in object-oriented test design
ideally in Ruby using open-source tools
(e.g., Selenium-WebDriver (NOT YET), Watir-WebDriver (Ruby-specific)
- demonstrated expertise in manual and exploratory testing on Mac,
Windows, iOS, and Android platforms
- received praise from developers for clear, reproducible bug reports (YES!)
- YOU CAN
- prioritize tests based on risk and importance of application features (YES!)
- determine the root cause of problems reported by end users (YES!)
- inspect and understand a large database schema (NOT YET)
- drive on-time deliveries of features to production (YES!)
- YOU WILL
- lead automated and manual test strategies on your development team
- manage site quality on multiple browsers and operating systems
- partner with Help Desk to support the user experience (YES!)
- use your skills to make the world better(YES!)
- YOU HAVE
- deep experience in HTML, CSS, and JavaScript, and JQuery
in the context of a large consumer-facing web sites
- familiarity with all tiers of the web application stack (NOT YET)
- rewritten code to help yourself sleep better at night (YES!)
- YOU CAN
- navigate the command-line in a Linux environment (YES!)
- navigate and grok an existing, large code base (YES)
- write
test-driven JavaScript using industry-standard tools and frameworks. (NOT YET)
- YOU WILL
- work closely with designers to implement their interaction designs in code,
in a fast-feedback,
iterative fashion.
- write clean and performant code in ruby, Javascript,
haml,
sass
- contribute to our bottom line through rigorous analytics and A/B testing
- aggressively re-factor the codebase to improve its quality and performance
- YOU HAVE
- worked on at least one high-performance, consumer-facing web site and / or
a github account that speaks for itself (ONE OF MY GOALS!)
- skills in all tiers of the web application stack (NOT YET)
- rewritten code to help yourself sleep better at night (YES!)
- familiarity with Ruby or Python (Python, YES!)
- expertise in both SQL and No-SQL data stores (NOT YET)
- a solid understanding of scalability best practices
in modern web application product development
- YOU CAN
- navigate the command-line in a Linux environment (YES!)
- integrate ruby code with web service APIs
- navigate and grok an existing, large code base
- YOU WILL
- write clean and performant code in ruby, Javascript,
haml,
sass
- contribute to our bottom line through rigorous analytics and A/B testing
- aggressively re-factor the codebase to improve its quality and performance