As An Entrepreneur

My (semi?) entrepreurship journey started as a student in 9th Standard, when I started a Video games shop during my summer vacation where kids would come, play video games on a per-10 minute basis. Later when I was in 12th standard, I started (a sort of non-profit, ngo-style, informal venture) named “Nukkkad”, through which young theater artists like me would stage street plays for social causes. This was later followed with me going to one of colleges and teaching acting for a fee, when I was in engineering college. In parallel to my first job in 2003, I started ‘Shiksha’ teaching institute to teach Physics/Chemistry/Maths to high schools students. At its peak, I had 35 students.

And then there was a long gap. Looks like I lost my courage and or I was boggled with fitting into the IT world, being a mechanical engineer. The only saving grace has been that I started and wrote Testing Perspective (www.testingperspective.com) for a period spanning 8 years (2007-2015). This website essentially replaced Testing Perspective in March-15. It wouldn’t be an overkill to say that Testing Perspective was the most important thing to happen to me in terms of shaping my career as an entrepreneur.

Nevertheless, in the year 2012, with encouragement from some of my professional friends, and ignoring those who found it a silly idea, I left my excellently rewarding job at McAfee and became a consultant.

Since then, the story is about Test Mile, starting in June 2012, as a sole proprietorship, followed with Talent Reboot, setup as a sole proprietorship in beginning of 2013. Test Mile later went on to become a PVt Ltd company in 2013 and has 30+ employees as of June 2015, completing its 3 years journey. Talent Reboot, as a training company, became my face as a presenter and teacher and via the platform, I have undertaken 30+ workshops across the Indian IT hubs.

Somewhere in 2013, I became a co-creator of the CMAP family of certifications and this year (2015), CWAP family of certifications would be launched.

With these ventures as my learning, these days I juggle with various entrepreneurial ideas that range from testing products to food joints, from NGOs to fine arts, from recruitment to (…wait, let me see what :-)). In other words, my nomadic instincts are showing the signs.

As a Presenter & Teacher

My journey as a presenter and a teacher goes back to my theater days, which started as early as 1991, when I was in 6th standard. I was a back-up actor, who got the role by chance for the play “Janata Paagal Ho Gay Hai” in my school, the role of a mad person. Dialogues were few and scattered, but somehow the role clicked and I got the Punjab state award that year for Best Actor. This was followed with a string of experiments and awards not just in acting, but later in poetry, debates, stage compering and so on. This continued till high school where I was awarded the University’s Role of Honor, the first in its history for a high school student.

In the IT world, my first presentation was “Be The Best of Whatever You Are” as a part of induction programme assignment in Satyam in the year 2003. It was my first formal presentation which was in English and was received very well. It played its role in rejuvenating the school/college time charm of being on stage. It was a very important step in making me realize that I can fulfill my yearning for stage while being in IT industry as well.

Years passed, during which I mostly confined myself to undertaking presentations within the companies where I was working. With constant encouragement from the way my presentations were received, I presented my first conference talk ‘User Behavior and Performance Perception Analysis’ in the beginning of 2007 at STeP-IN Summit, Bangalore. It changed everything. Since then, I have presented in almost all Indian Testing conferences, as well as at CONQUEST, Germany.

My first extended workshop also started as an internal event organized directly by me at McAfee. It was a 12-hour workshop on Python programming which I undertook for participants across the McAfee India teams. I had no notion at the time that in future I would make a business out of the same. It was followed by various presentations and tutorials as a part of various initiatives in the company.

My first external paid workshop happened some time in the year 2010.By the end of year 2011, I announced my first public workshop on Web Security. In 2012, I launched my various workshops as public and corporate programmes. Later, it would be formalized as a company of its own – Talent Reboot.

With my focus on technical trainings for software testers and architects, and uniqueness of the focus and contents, the response has been great. In many of the teaching areas, if not all, I am one of the few if not the only one teacher conducting multi-day workshops. The contents have improved over time based on feedback and my own experience. What has helped is that I am still a hands-on software tester and developer and I undertake not more than 10 workshops a year. I plan to retain this mix for the coming years.

As A Tester & Developer

I consider my testing profile as a very unique one. I have switched my testing focus and hence jobs/teams to work on one focus area at a time. The switches are so often (timeline-wise), that almost every time, I was advised against it. Each time, I did it, nevertheless.

I can not separate my marginal success as an entrepreneur from my works and decisions as an employee when I worked across companies in a tester role.

(Before the IT story shared next, I worked on the shop floor of a foundry. There were lock-outs and along with the same a string of failures. I failed in quite a few written exams, before Satyam clicked)

My first job as a software tester was with Satyam to work on manual functional testing. The design was already given to us, the target was to execute 40 test cases per day. This (silly?) work continued for a few months. Then I worked on a database migration testing work from IMSDB to DB2, was nominated for H1 Visa (internally), got rejected because my degree was in mechanical engineering. About an year later, I was put into GUI automation work. Towards the last few months, I did a PoC on performance testing using SilkPerformer. Somebody else was sent to US based on my work as my H1 Visa wasn’t approved internally. Reason: Mechanical engineering degree.

(Between the paragraphs, there are semi-successful attempts at learning HTML, JavaScript and C, Oracle, Java, Unix via self-study and attending half-baked trainings in Ameerpet, Hyderabad. There are also rejections in Oracle and Adobe interviews, who found my profile and skills not worthy)

But the damage was done. I became interested in performance testing. Checked for internal opportunities; in the absence of which, I switched my job to AppLabs. The company was kind enough to acknowledge my interest in the area and offered me the job despite no prior experience. The step proved to be useful. I did 17-18 projects in performance testing. That’s a lot for 1.5 years of my stay there.

(On another note, I was subjected to the worst form of politics by some smart-*** guys. My name was suggested for being fired, as being incompetent, not punctual and so on. It’s another story that such deterrents were actually responsible for my early promotion. In a period of 8 months from leaving Satyam till my promotion in AppLabs, I held 4 designations: Software Engineer Trainee -> Software Engineer – > Senior Software Engineer -> Lead )

Post Appabs, I had 3 options for performance work and 1 option (McAfee) in security space. I grabbed the latter. Within McAfee (2007-2012), I made internal switches from CLI testing to performance testing to API testing to white box testing to framework development to internal consulting, every 1 year or lesser. Security testing and Python programming were two learning areas which ran in parallel to all of this, whether that was a part of my work or not.

(During all these feel-good stories, several of my paper submissions were rejected, several of my ideas were rejected/not understood by the community, and I was rejected in an interview with Google)

All of this, before the final switch to becoming a consultant in 2012.

In my testing roles till now, I developed a lot of tools and web platforms, focused on architecture and design, multiple languages, so I consider that my skills and work demonstrate a major overlap of being a tester as well as a developer.

The mix of skills is my asset and also the cause of confusion and conflicts in what I have to say in my writings & presentations with what many of the experts say & the industry nods to.

Work Experience - Facts about Hands-On Work

Software Testing

I am have explored and experimented quite a few approaches in formal and exploratory software testing approaches in traditional and iterative software development models.

  • Formal and exploratory testing of web applications, local desktop applications, SDK packages
  • Used various software test design techniques which are traditionally called as black-box/white-box, static/dynamic testing techniques
  • Known in the testing industry for challenging some well established thoughts from the renowned experts like Schools of Testing, Testing vs Checking, Formal vs Exploratory testing etc.
  • Developed and improved parser-friendly text session report format for exploratory testing using Session based test management. Developed Python code to parse all session reports periodically to generate consolidated PDF reports for the team.
  • Introduced Test Doubles concept to system testing to increase test coverage
  • Employed All-pairs technique to API testing and event capturing testing
  • Worked on Database migration testing from hierarchial (IMSDB) to RDBMS ( DB2 ). Was chosen by management to take up training for the complete development team on testing of the integrated system.
  • White box testing using code coverage tools

Python Programming

  • 8+ years experience in Python programming
  • Employed Python for development ( as the sole developed and architect ) of various test automation solutions, frameworks, tools and test automation support system
  • Development a basic web application using Django framework
  • Using the HTTP request libraries in the core module, writing a custom module, developing an HTTP proxy from scratch at TCP layer
  • Development of fuzzing frameworks employing generation and mutation
  • Development of GUI user interface using wxPython for a performance testing tool with a tabs for recording/browser/editor.
  • Distributed testing using Push ( at TCP layer ) and Pull ( HTTP layer ) mechanisms
  • Object serialization ( Pickling ) for test configuration format
  • Basic XML parsing coupled with tools like PICT ( from Microsoft ) or custom code
  • Using ctypes on top of VIX dll for virtual machine management via VCenter or host.
  • SBTM (Session Based Test Management ) parser and reporter
  • Python with raw Windows API for enhanced calls to file handling operations
  • Extensive experience in handling nested data structures
  • Implemented various design patterns like singleton pattern, factory pattern, decorator pattern, command pattern etc. in test automation frameworks.
  • Designed a 50+ table database using SQLite for test automation framework, developed comprehensive database layer using Python code.
  • Used the advanced RowFactory instead of the default array returning mode.

Test Automation

  • Hands-on experience of designing and implementing 25+ test automation solutions. The automation solutions range from specific implementations for performance testing, white box testing, fuzzing, auto-generated empirical analysis of quality of builds from automated tests, distributed testing and the likes to generic object oriented test frameworks that are used by multiple teams including developers and testers.
  • I have given various unique ideas to the test automation world like Test Encapsulation and Test Automation Support Systems with Layered Architecture.
  • Developed Python based framework for validation of Microsoft SSRS database w.r.t the back-end.
  • Developed JMeter Web Based Reporting Portal
  • TERMS framework, developed for McAfee, used by multiple teams in McAfee Labs and Consumer team
  • Anti-Malware Core TMS: Test Automation framework developed for McAfee’s Anti-Malware Core Team
  • Wrote an event generation tool for various permutations of Windows API calls got via all-pairs in Python for testing filter kernel drivers.
  • Revamped an anti-malware engine performance testing rig
  • Introduced the idea of Test Doubles for system level test automation (along with white box tests)
  • Developed module for scripted ESX virtual infrastructure management
  • Developed a PoC for HTTP Proxy in Python
  • Developed a PoC for customer wxPython browser with navigation hooks for automatic script generation
  • Developed a test automation framework for a local e-learning application in Auto-It.
  • Web automation at GUI layer for a dynamic insurance claims application using SilkTest (no record-playback)

Performance Testing

  • Conducted web performance evaluation for American Airlines, Brown University, Riyadh Bank and many others.
  • Presented a lightening note on how to convert all functional tests into heuristic performance tests at Google Test Automation conference (GTAC-2010).
  • Dealt with non-web performance testing (i.e. desktop GUI applications or SDK packages ), for example performance analysis of boot time, application activity, testing via API, memory footprint, encryption cycles performance etc.
  • Undertook 25+ performance testing assignments with target user load ranging from 500 to 50000 users, employing various tools like LoadRunner, WebLoad, Tsung, JMeter and OpenSTA and a test environment up to 625 machines.
  • Developed the Online Reporting Portal for Performance Testing in Perl
  • Point of Contact for Tool Evaluation and Business Proposals in Performance Testing Vertical of AppLabs.
  • Was nominated for a discussion with Microsoft’s performance team on limitations of current market tools and desirable features in next-generation tools.
  • Developed Siebel parser to overcome LoadRunner’s limitation to deal with Arabic data.
  • Submitted case study to RadView to facilitate its tool modification to support SiteMinder. WebLoad 7.3 now supports SiteMinder.
  • Memory Footprint Analysis Automation using Python, API testing tool and PerfMon
  • Performance Evaluation of Encryption formats for signature files
  • Automated Outlier analysis in performance data

 

Security Testing

    • My experiments with Python and fuzzing made me the first to present on the subject of fuzzing at any software testing conference in India, voted as the Best Innovative Paper Award by audience. I then moved on to present extended tutorials on the subject with demonstrations of exploits using Python.
    • Conducted web security testing for multiple clients and reported critical security bugs not found by automated scanners.
    • Well-versed with web security testing – exploration with ready-made tools (proxies/browser extensions etc.) and customized tools written in Python
    • Implemented a File fuzzing rig for scanning engine
    • Developed a PoC for fuzzing the command line interface of a software
    • Did a security evaluation of usage of system resources like pipes for a middle tier local software and found critical vulnerabilities.

Agile Testing

  • Worked for 4+ years in projects employing Scrum
  • One year experience as a ScrumMaster
  • The semi-agile ( mini-waterfallish ) environment helped in identifying the core agile values that are important, how Agile can be tailored into more acceptable format for the newbies
  • Introduced Test automation upfront in agile testing using generic object oriented test automation framework for developers and testers
  • Experimented with Test Driven Development in Python
  • Experimented with Python and Fitness working together
  • Reviewed user stories (problem statement) from coverage perspective for various software attributes
  • Developed testing tracker from user stories to the white-box tests ( component tests )