With that being said, here are some of the ways I try to stay current with the latest trends amid my very packed adulting life. What are yours?
Podcasts (and audiobooks) are my go-to for staying in touch with the latest trends. With my relatively long commute to work, I use that time to listen to podcasts that keep me informed about what is going on in the larger tech world. I’ve heard someone refer to it as my mobile university.
Some of my favorite podcasts right now are Software Engineering Daily, How I Built This, The Engineering Leadership Podcast, and The Prof G Pod. Between these four, I stay pretty in tune with what’s going on. Additionally, some audiobooks (which I generally get recommendations for from the podcasts) also keep my mind occupied during these commutes.
So I have a little secret. I give myself the task of completing certifications, and in the process, I get to learn quite a lot. I know there are mixed feelings about certifications and their value; however, I believe it’s the process of learning that is more important.
Using platforms like Udemy, PluralSight, and even YouTube has been super awesome for me. Sometimes I spend as little as just two hours a week. Again, the week is packed with adulting, but just a little time each week is enough.
With the learning platforms comes the opportunity to experiment. Whether it’s playing around with a new code framework or setting up gateways and lambdas in AWS, every so often I put into practice what I’ve learned and play around on these platforms. Don’t ask me to go back to my full-time SDET and Dev days though. That would require more time than I actually have. But it’s fun to play around when it’s low stakes.
When possible, I try to attend local meetups in my area, and I shoot for at least one conference a year. Conferences can be pricey, but if your company is willing to sponsor you, that’s a big advantage. If not, I still think it’s worth the investment on multiple fronts: latest trends, networking, and getting away from your routine.
For local meetups, a lot of times they’re free. You can always go to meetup.com to find a local meetup in your area and search by area of interest. If you’re in a mid to large size city, you’ll definitely find something in your area.
If you have friends in technology, it’s not a bad idea to share your ideas with them every so often. Now I know this is a bit dicey, especially if it’s an idea with potential financial gain in the future, but sharing those ideas sparks conversations that you can learn a lot from.
For me, I’m constantly coming up with some idea or another, and bouncing those ideas with close friends gives me insights into things I probably didn’t think about. It also exposes me to additional resources or latest trends that I hadn’t been aware of previously.
So that’s my way of staying current. What about you? What are some ways you stay current with the latest technology trends? It’s a pretty fast-paced industry, and staying stagnant will definitely leave you behind. Gotta find a
]]>To those starting off their careers in the industry, or those looking to accelerate their growth, here are some keys to success in software engineering.
Embrace The Spirit of Learning
I don’t think this can be stated enough. You will not be as successful as you want to be if you don’t embrace the spirit of learning. Learning could come in the form of hands-on learning, classes, online courses or peer to peer learning. The software industry is so dynamic that the average technical skill life cycle is just about 4 years. Which means, if you’re not consistently looking to improve and learn, you will get left behind. When I came into the industry C++ and Rational tools were the hot languages and tools, today I don’t even see those in job descriptions. Don’t ever feel too smart to learn.
Take Ownership
Like all humans, engineers also want to get a sense of ownership. Being successful in this industry will require you to take ownership in any product you’re working on. You might not be the SDET or SRE or PO but being invested in making sure every feature functions as designed and is deployed successfully will make you stand out.
Don’t be the one that says, “well that’s for XYZ to do. That’s not my job.” You won’t win yourself any favors. I understand It’s not easy to continuously do that, but it’s extremely valuable.
Think Of Business Value
A mentor once told me; There’s no use writing the most impressive piece of software if it can’t be sold. It sounded harsh at the time, but it’s an absolute truth. We get paid because what we build creates business value.
Always find a way to tie the code you’re writing to the business impact/value it’s creating. If you consistently keep this is mind, you’ll create valuable software and will be more efficient in using your time and energy. If you’re working on a product where you can directly see how consumers use your products, do so.
Soft Skills
Technical skills are important, but, succeeding in this industry requires a very healthy dose of soft skills. Communication and understanding your audience, collaboration, negotiation, problem solving are all skills you’ll need to be successful.
As a software engineer, it’s understood that for the most part you’re technically smart. You understand programming languages, architecture etc. However, what sets you apart will be the soft skills that make both technical and business team members come to you all the time.
Keep Things Simple
It’s call KISS for a reason. Keep It Simple Stupid. And this applies to not just how your write your code or design your systems, but also how you think of solving problems in general. Could a SharePoint site do the same job as a webapp built from scratch for a basic need? Then use SharePoint. Some things don’t have to be complicated.
Doing this will enable you to be more time efficient, and you spend your time and energy in an area that’ll create a greater impact & value.
Think Of How Things Can Go Wrong… But Don’t Let It Stop You
As engineers, we’re all trained to make things work. That inherently comes with a heavydose of optimism that if we add 1 + 1, it’ll equal 2. But things do break, and anything that can go wrong will eventually go wrong.
So, approach every design, development and implementation with a healthy dose of skepticism. Ask the question, “what can go wrong?”, and then begin to solve for those problems, but don’t let it stop you. The cost of resolving a bug in production can be 100x the cost of resolving during analysis. Which means if it cost $100 to find a requirement gap, it’ll probably cost $10,000 if you find that bug in production. Remember, business value?
Work Hard… And Smart
It’s tempting to take the easy position or the cushy role that doesn’t require you to do more than you 6hrs day, but that may not pay off down the line. You don’t progress in your software engineering career (any career really) without putting in the hard work. You can work hard and smart, so don’t confuse this will just putting in long hours.
Also, take on the difficult tasks that no one wants, and even if you’re not as successful in that task as you’d like, you’ll have gain a ton of valuable experience that will help you in the future. And feel free to ask for help.
Celebrate and Promote your Victories.
Whether it’s the small victory of resolving a bug that had been lingering, or finally being part of the team to push the BIG product out to production, celebrate and promote. Always communicate to your leadership what you’ve accomplished and celebrate the little victories. There’s a mental boost that comes with the feeling of accomplishment, and that especially helps when it comes from your leaders.
This is by no means as exhaustive list, however it’s a few tips for finding success and fulfillment in the software engineering and technology space. A few of these, I wish I had known much earlier in my career, and others I was fortunate enough to have embraced along the way. Am I still learning as well? Absolutely. There is no stopping or resting on your laurels here.
Feel free to share some of your lessons and tips as well.
]]>Delivery has always been very important, but as a dev & delivery manager, the buck stops at you in terms of delivery. The mindset quickly shifts from the QA mindset of “let’s be careful and hold off” to a delivery mindset of “let’s get it out there and roll back if needed.”
I probably owe all those dev managers I gave a hard time in the past over what I considered unnecessarily aggressive prod deployments.
With the above being said, the fact you’ve been in the quality side of things gives you a well rounded view in terms of risk analysis. My ears are definitely more open to defects found in lower environments, and I’m always more cautious. Even if it’s just a bit.
In addition, you see the value and can drive a team quality mindset starting with unit testing, API level testing, and UI test automation. In addition, introducing performance testing and monitoring tools as well are part of your value add.
At least in my particular instance, I’ve had to be responsible for the requirements refinement, development, testing, delivery and support of any particular product. That’s been a bit of a learning curve as previously I had essentially been responsible for 1 or 2 pieces of that. I’ve had to bring out my negotiation skills (with the business), utilize my product/business knowledge (A good QA manager should have this), draw up implementation plans for prod releases, and finally be ready to react at the first sign of a production issue. Pretty tasking, but strangely more rewarding.
The experts on your team are there for a reason. With a team of Scrum Masters, Product Engineers, SDETs, Developers, and SRE/DevOps engineers, my big takeaway has been — let the experts do what they do, and be there to remove impediments and stir the ship. While I might have more expertise in the SDET realm, I lean on others in my team when it comes to their areas of expertise. Definitely do not go into a team trying to be the know-it-all.
So far, I’ve only mentioned managing my team (down), and the business (parallel), however another big component is how you manage up. Your leaders will constantly look to you for estimates, updates on delivery, expectations, pushing back on aggressive timelines and the worst of all.. Why did this happen in prod?
It’s a lot different from the QA Management space where the buck ultimately doesn’t stop with you in terms of delivery or outages. Managing that has been interesting to say the least.
That’s about it. So far, so good. It’s been really rewarding making that transition and I’m really glad I made that transition. QA will always be part of me, and I’m always there to stand up for our SDETs and Testers.
I know it’s been a while since I posted anything on the blog, but it’s been a very interesting 6 months. It is a “positive” interesting.
]]>Picking a framework on the surface seems pretty simple. “Let’s just go with Selenium Webdriver in Java. That seems to be the most popular” or maybe it’s “Let’s just get this automated testing tool. It’s only $XXX per license.”
Here are a few questions and things to consider before selecting a framework with our without a particular language:
I said a few right? But there’s obviously quite a bit to consider before embarking on that journey. You don’t want to get halfway through only to discover that maybe the framework you selected doesn’t work for your team. Then we get into the 2–3 framework territory. Yikes… Not good.
Are you building a framework in your domain or group? What are some of the questions you’ve had to consider.
]]>Over the years, I’ve been privileged enough to kick start many of my ideas, the most prominent being jaguda.com, however the moment this book went live on Amazon, there was a completely different feeling that I still can’t describe. My 6 year old daughter (who I’ve been introducing to software concepts already) reading the book aloud to me gave me a sense of accomplishment unrivaled to anything else I’ve done so far. You can call it the feeling of putting out positive production into the world. When I think about it, teaching my kids might be the inspiration behind writing and publishing this book. But enough about how I feel, let’s get into the book.
My ABCs of Coding and Programming is simply an ABC guide introduction to coding and programming concepts ubiquitous in the technology industry. The book walks through definitions of various concepts your young programmer will encounter as they grow in the field. This is all done in a language that kids (ages 6-10) can comprehend and understand. We walk through these definitions with the aid of the computer character called Chi.

Barely 2 weeks into the book’s release, it’s ranked #1 in STEM new releases, and #1 Computer & Technology Education new releases on Amazon. So here’s my plug: Go ahead and purchase the book. My hope is that this also contributes to the great efforts of thousands of people to break down racial and gender barriers when it comes to software & computer technology knowledge. Hopefully this is the one step in our journey of a 1000 miles.
]]>With increased remote work, more and more people are delving into the wide open field of technology. However, in technology there’s so much to learn that sometimes it can become overwhelming. No pressure though. My general strategy is to pick one skill each year, and focus on learning that. It’s a marathon after all, not a sprint.
To those that want to pick up a new tech skill in 2022, here are some of the top most valuable skills to learn in 2022.
Cybersecurity is at an all time high in terms of value. The more our lives move to the internet, the greater the threat of major security breaches that can upend our lives, and subsequently, the greater the need to keep our data secure. Cyber crimes are on the rise and companies are investing a lot in professionals with the skills to protect them from hacking, phishing, viruses, ransomware and other cybersecurity threats.
Cue in Mark Zuckerberg and Meta. The potential new world is the Metaverse (whether or not we think Mark will get us there), and that means a lot of investment will go into the Augmented and Virtual Reality space. This field saw record sales in 2020 according to Circuit Stream with a forecast of being worth $209 billion globally in 2022. Everything from education, to healthcare, and to even dating could potentially move into the metaverse in the near future.
Can you create top notch technology dependent products without the skills of a product manager? The answer is probably NO. Coming up with ideas, and then taking those ideas from conception to a production rollout, and managing feedback enhancements is probably one of the top tech skills in demand now. It involves the ability to manage a team’s workflow, priorities, while understanding both the technical details and the business value provided as well.
For those a bit hesitant about getting too deep into the coding or technical aspects of technology, this is an ideal space for you.
Who would’ve thought in February 2020, that just over 6 weeks later, 80% of the office workforce would begin working from home and collaborating via the internet. This has significantly increased the workload on IT support, and more importantly stretched most companies’ network bandwidth capabilities.
That has increased the demand for IT support specialists as well as professional with network administration skills. Your ability to communicate, and troubleshoot technical issues is key in picking up this skill.
With the new wave of technology tools utilizing Artificial Intelligence models to a greater capacity, the need for more and more data utilization, computation and creating predictive models has grown exponentially. That’s where Data Science comes into the picture.
According to LinkedIn, the Data Scientist demand has grown by 34% each year over the last four years. We only expect that to grow even more in the next decade. It’s predicted to be the most in-demand tech skill of 2022.
Software development is a skill that is not going anywhere anytime soon, and will continue to be in demand as long as we have technology in our lives. Some level of coding (or code understanding) is fast becoming a base level skill for most tech jobs.
However the most in-demand areas lie in development, test automation, and DevOps. It’s a good idea to always stay in the loop when it comes to coding languages, and learn a new language during your free time. The top languages projected to be in demand are Python, Java, C# and Javascript.
The DevOps skill is one that combines multiple aspects of software delivery. A combination of software development, systems operations, quality assurance and configuration management.
The trend in technology is to deliver quality software at a much quicker pace, and DevOps engineering is enabling that. For context, Amazon deploys code to production every 12 seconds, and Google & Netflix deploy thousands of times a day . Now not every company can do that but the days of yearly releases are long gone. That means DevOps is a skill that is in high demand, and will be for the foreseeable future to enable faster delivery of quality software.
Gone are the days of large on-prem data centers that require a lot of maintenance, energy, and real estate. Our data is now moving to the cloud, and the big financial, insurance and other brick & mortar companies are on that journey.
AWS (Amazon), GCP(Google) and Azure(Microsoft) are the big players in the game, and according to Technojobs, cloud engineering jobs have seen a growth of over 100% in the last 5 years. Pick up skills in cloud computing, and you’re sure to stay in demand in the coming years.
Building a product is one thing. Building a product that consumers will use and continue to use is a top skill. Just look at Apple products. Every company is realizing that it’s not enough anymore to build a functional product. The user experience matters just as much as any functionality in that product, and retention of those users are dependent on their experience.
According to a report by Dice, UI/UX job growth is expected to rise by around 14.9% over the next decade.
As more mobile devices gain the computing power of large desktop machines, the more mobile applications gain greater adoption. Mobile adoption in the world continues to grow, most especially in developing countries where desktop affordability is still comparatively low.
That means, mobile development and testing skills are very much in demand, and will continue to be for a while. Fintech is one industry that will see significant growth in the space in the next 5 years.
That’s it! 10 tech skills to learn in 2022. There’s definitely a lot more to learn, and I hope we all pick up one skill to learn together this year.
Comment below. What tech skill are you picking up in 2022?
Image Credits: https://www.information-age.com/
]]>However, one big question that organizations always have to ask and answer before investing money into test automation, is WHY? Why invest in test automation vs traditional manual testing?
This blog post will delve into 5 of the major reasons why your team and organization should invest the time, effort and resources into test automation.
With a significant amount of your tests automated (industry standard is 80%), the speed at which your team is able to run through regression tests significantly reduces. The better the strategies implemented, the faster the speed of tests and validation for the code base going into production.
This in turn leads to shorter testing cycles, and an increased speed to market for features, and products. This can only be a positive for your consumers that want to get new features faster and faster.
Ideally your manual tests would cover the length and breath of your application along with the new features. Realistically, it’s just not the case. Covering multiple scenarios, and data conditions can become a very time consuming task when performed manually, and reperforming these tests during every release cycle exponentially increases the time and cost.
With test automation, the investment is upfront to write the scripts, and programmatically using varying datasets increases the depth of testing while keeping the tests repeatable (More on that in the next point). Additional benefits include consistently covering boundary and edges test cases.
A big benefit to test automation is the reusability of the test artifacts that have been created. This can be reusing the same tests or in certain scenarios reusing particular modules of previously automated tests.
The big challenge is at the beginning of the automation effort when these tests/modules have to be designed/scripted for the first time. But once that’s done, the modules can be used across different components, in CI/CD or in certain situations to validate integrating components or applications.
We are all humans, and therefore are prone to human errors. With manual testing, there’s always a chance of human errors which only increases with the amount of tests each individual team member has to execute.
Test automation significantly reduces the amount of mistakes that can occur during your testing, and consequently increases the reliability of your tests and results.
Another benefit of test automation in your organization is the speed at which builds can be validated. Smoke tests and sanity tests can all be performed within minutes of build completion without human intervention and provide a pass or fail on the latest code version. In more mature test automation groups, this can also trigger a rollback or the deployed code as well.
When compared to manual testing, smoke tests can take up to 2 hrs in some instances, and also require a number of team members to execute.
Images credits: test sigma
]]>For many organizations, testing software can quickly become a long and expensive process, and this ultimately could lead to delays in releases and lengthening release cycles. To avoid long release cycles, long hours testing, and reduce production defect leakage here are some QA best practices that from my experience can help mitigate these factors:
Each QA’s role should be to think in terms of overall quality, which includes but is not limited to testing. This means QA should begin to understand and think of potential risks, and gaps earlier on in the software lifecycle. In an agile methodology this means attempting to identify gaps during story grooming sessions, analysis of acceptance criteria and sprint planning.
A popular saying in QA is that it’s cheapest to find a bug during requirements analysis, and most expensive in production. With Dev, QA and UAT getting progressively more expensive respectively. So identifying bugs earlier on in the the software lifecycle will ultimate lead to money saved.
This goes without saying but having a high level Test Strategy, and process aids in the efficiency of how the QA team will perform overall. Included in this Test Plan should be what methodology your group follows (agile or waterfall), key contacts and stakeholders, test case repository and management system, bug tracking mechanism, integrations with other applications, functional and regression testing plan, performance testing needs/strategy and of course your test automation strategy.
Having this strategy defined earlier on in a project lifecycle helps anchor all QA engineers to defined strategy, and increases overall efficiency.
As features get developed/tested, the number of test cases created will continue to increase. This can make regression testing a challenge if tested manually as the team begins to look at hundreds/thousands of test cases to re-execute before any release. This is where automation gets its big return on investment.
Depending on the complexity of the application under test, define an automation strategy that is effective, and ultimately efficient. Ideally, test automation should be started while functional testing is also ongoing. In an agile set up, test cases will be automated within the same sprint as they are developed and tested. By the time you’re ready for a release, you should have a significant amount of your tests automated and already executing, thereby cutting your regression overhead significantly. In addition it’s a good idea to have your already automated tests run daily or weekly. I shared my ideas on automation strategies in a separate post here.
Multiple test management systems now have analytics capabilities built in them. Enabling these features can help the team determine key test metrics like bug distribution, how quickly bugs are resolved, test execution results over time, and in some instances execution time. Other analytics capabilities that can be used are log management systems like Splunk and Greylog that can capture the frequency of specific errors in an application over a certain period of time.
This data will help the team to highlight problem areas, frequent components that break, and develop specific tests to target them.
In the early phases of test planning, it’s a good idea to begin to map out what performance testing will look like. While performance testing typically doesn’t happen until the product is stable, early planning and understanding of the application by the performance testing team (you should have one) will make performance testing more efficient.
In more mature environments, the performance testing team can also utilize some of the API and UI test automation scripts for performance testing, thereby reducing scripting time and ensuring accuracy of scenarios.
This also goes without saying but choosing the correct environment for the appropriate phase of testing is a key good practice every organization should have.
That is to say, a QA environment for QA functional tests, a performance environment specific for performance testing and subsequently Stage/UAT. Most important, avoid testing in the same environment as Dev as the frequency of changes, and instability will lead to inaccurate test results.
Maintaining software quality while keeping up with the demand of frequent releases is a key indicator of how well a QA team is performing. A high performing QA team should think outside the box on how to improve processes to maximize efficiency. Additionally, engaging other teams members (Dev, DevOps & Product) in these practices to varying degrees improve the overall quality of software being delivered to customers. Following these best practices is a quick way to shorten development cycles for your team and your customers, and keep your team members engaged and motivated.
]]>As defined in a previous article, API testing (and automation) should cover a significant portion of your testing effort for any application as defined in the Test Pyramid seen below:

However, the key question now becomes, how do we achieve maximum efficiency in our API testing and automation effort while maintaining scalability, reusability and reliability? Here are some key techniques and types of tests you should adopt during your API testing phase.
This goes without saying, however it is the most important type of test you should have for APIs. This includes correct status codes (200, 201 for positive requests, 4xx, 5xx for negative) for valid/invalid requests, valid responses, valid requests/response headers etc.
This will also cover authorization and permissions testing as well.
Here, what we strive to do is as much as possible simulate the business flow of the application as much as you can using the APIs built. This will typically consists of a series of requests and responses linked together through chaining i.e. Using data from one response as part of the input for a subsequent request.
For example, let’s say you have a business flow that allows a certain user permission to upload a document, set the document to Pre-Approval but the user can’t approve it. Your scenario will consist possibly of a LoginIn request which returns a userID that can be passed into a GetPermissions request which returns the allowable permissions for that user. You can then call your UploadDocument request (with the userID and permissions), SetPreApproval request (with the documentUploadID), and subsequently attempt to approve the document via a ApproveDoc request (which should return a 401 error).
In the scenario above, you would have successfully simulated via API testing the business flow of logging in, uploading a document, and attempting to approve it using chaining. Multiple testing tools including ReadyAPI, Postman support chaining.
As the name suggests above this covers testing your set of APIs with multiple data scenarios and permutations and combinations. This is typically more important with APIs that input a considerable amount of varying datasets.
With data driven testing, you can simulate test data either through a test data generation function or a provided test data file generated outside of your testing tool. The idea being that any kind of data expected into the system is tested without necessarily having to go through the UI or other integrating applications.
Test coverage here typically includes boundary tests, invalid data types (special characters, null values etc), large int/string/long values, extreme future and past dates etc. These tests provide an excellent opportunity to ‘tighten up’ the APIs against certain worst case scenarios.
While this isn’t necessarily a full blown performance testing effort, API testing provides an early indication of potential performance issues. The general industry standard response time for APIs should be at about 200ms, and at maximum 1s.
While performing your API tests, it is good practice to have a response time assertion which enables you to catch sudden latency in the application or slow performing APIs. This could be tested in isolation or under load.
]]>While the idea of a dashboard showing cases all over the world seems pretty simple and straight forward, the underlying technologies that make this possible have come about as a result of decades of software engineering, artificial intelligence and data processing. I’m not a medical professional or a public health expert, however I do understand data science, so l’ll delve into the tools and technologies helping our experts and officials tackle this global Covid-19 pandemic.
Data collection has been around since the inception of the concept of writing. With today’s technology however, the speed of collecting, gathering, and normalizing data has grown astronomically. We’re able to log the count of covid-19 cases anywhere in the world within 6 hours of confirmation, and immediately store that in a database that can be access from anywhere. Additional related data about a particular confirmed case (e.g. age, gender, race, underlying illness etc) can also be collected and normalized accordingly. Data is the bedrock of everything else we’d want to do, and the ability to collect, gather and normalize data from all over the world in a few hours is critical to how public officials manage the crisis.
With accurate data gathered, we can begin to utilize various algorithms to perform predictive analysis. Simulating models to determine spread rate, effects of social distancing, mortality rate within various demographics, are all possible with predictive analytics. This provides significant information to help public officials make better decisions for the health of the greater population. For example, using predictive analytics, one can simulate the effects of social distancing (or not) on the spread rate in a particular city, and use multiple variables (e.g. population density, weather, median age etc) to determine where this method will be more effective than not, and try to predict where the next hot spot could potentially be.
I might not need to explain this too much as it’s become ubiquitous in today’s world. Thanks to the amount of data we have available, and powerful visualization tools like Tableau, Power BI, Google Charts etc, it’s easy to visually ‘see’ your data. Geographical charts enable us to see, on a world heat map, what regions have been hit harder with the virus vs those that haven’t. Multiple charts also give us the ability to view and analyze increase/decrease rate in multiple locations around the world, drill down to view mortality rate for various demographics, and other important information like testing rate, hospitalization rates etc.
AI has generally been a concept that has scared a lot of people in the past few years. However, in the race to develop a vaccine or find a cure for Covid-19, AI might just be the accelerator we need. In speaking to some in the medical industry the type of vaccine that will probably be developed to tackle Covid-19 is the nucleic acid vaccine which injects genetic material of the pathogen into human cells to stimulate an immune response. With AI, scientists are able to predict the 3D structure of a protein based on its genetic sequence and significantly reduce the number of rounds of permutations and combinations that would have ordinarily occurred with a normal vaccine development cycle. Hence why we hear 12-18 months vs 8-10 years. More here.
These are some of the ways that technology and big data has enabled us as a society to tackle this pandemic. It’s part of the multiple reasons why we may not actually get to the horrific numbers of the Spanish flu of 1918. We have 100+ years of technological advantage.
]]>