Achieve Expertise In Any Skillset

In the book Outliers: The Story of Success, Malcolm Gladwell studied the “outliers” — i.e. the most successful people of the world, including sportsmen, business people, musicians and scientists, to understand the key factors behind their success. He found the key denominator to all their success isn’t natural aptitude as many like to believe. Having a high IQ doesn’t guarantee success: there is supposedly no difference in people’s propensity to succeed beyond an IQ of 130.

The key denominator is actually hard work. A lot of it, in fact. About 10,000 hours of it. That’s roughly 3 hours every day, for 10 consecutive years, before any one of them began to be seen as the “expert” in their field.

This finding isn’t shocking. I feel the concept of natural talent has become overrated, along with self-discipline. Oftentimes, I see people letting go of their dreams because they claim they do not have the “talent.” Having an innate ability is definitely a nice bonus and a great enabler, but the role it plays is lesser than what many may think.

While having an aptitude does get one an initial head start — for example if you are naturally good at drawing, that gives you an edge over others when starting out — beyond a certain stage, success becomes increasingly dependent on your attitude and the amount of work you put in than your aptitude. Hard work becomes the key determinant of your success in the long haul. As Thomas Edison puts it: “Genius is 1% inspiration and 99% perspiration.”

As Malcolm Gladwell has found, even in fields like sports and music where many see the key to success as having an innate ability, consistent hard work has proven to be the more superior factor by far. This is the case even for established names like Tiger Woods, Michael Jordan, Magnus Carlsen, Bill Gates, The Beatles & Beethoven. For most (if not all) of them, their hard work started right as a kid. It was through relentless training since they were young before they attained their kind of expertise today.

🪄Examples of How Top Performers Developed Their Talent Through Hard Work:

  • The Beatles burst onto the world stage in the 1960s, seemingly lifted from their hometown of Liverpool and dropped into the world’s biggest venues. But theirs was not an overnight success. One of the Beatles’ early gigs was performing near military bases in Hamburg, Germany; they would perform for eight hours a day, seven days a week. They did this for 270 days over the course of 18 months. By the time the Beatles enjoyed their first commercial success in 1964, they had performed 1,200 times, which is more than most bands today perform in their careers. When the Beatles first left for Germany, they weren’t very good. But by the time their Hamburg stints ended, they sounded like no other band in the world. They were well on their way to getting in their 10,000 hours.
  • Generally regarded as a savant or a computer genius, Gates has a 10,000-hour story, too. Gates had the good fortune to attend a private school in Seattle that had a computer club. This was 1968 when most universities did not have a computer club. And Gates’ club didn’t have an ordinary computer — they had an ASR-33 Teletype, one of the most advanced computers of its day. Gates was hooked on computers and began programming in the eighth grade! This led to other experiences in Seattle, and by the time he graduated, Gates had practically lived in the computer lab for five years. He was closing in on 10,000 hours and was ready to take full advantage of the opportunities he soon would receive.
  • There are similar examples: Bill Joy, computer legend and founder of Sun Microsystems; Mozart, whose greatest compositions weren’t written until he had been composing for more than 20 years; and it takes roughly 10,000 hours to become a chess master.

Does this mean that everyone who is successful in their niche is so because they have invested exactly 10,000 hours? No, not necessarily. Some might have put in fewer hours, some more. The 10,000 figure should be seen as a reference point. The amount of work needed depends on the size of your goal. The bigger your goal, the more work required. If you want to be internationally renowned in your field, meaning surpassing all other people who are also working their butts off to carve a name for themselves, then 10,000 hours is definitely a minimum commitment. I’d say that learning and mastery never ends and it’s a matter of striving to be better than you are now.

👨‍💻My Coding Skill — 14,400 Hours, and Counting

Me, I’ve been coding professionally for the past 6 years. If you assume that I spend an average of 8 hours per day coding (I definitely spend more time than that on many days; sometimes I can be coding the whole day), that’s 8 hours x 300 days (as oftentimes I’m learning or coding on weekends too) x 6 years = 14,400 hours. Here, “coding” applies to analysis, creating designs, learning new technologies & practices, taking a course, writing code, struggling with bugs, facing burnout, etc. That’s 14,400 hours, which is a lot of time.

While I’m far from an expert, I can see how my approach to coding has changed over the years — in a good way. 

  • While at the beginning I would struggle with writing/debugging/improving software, now I can better tell when a project is heading in the right direction and how to steer it in that direction.
  • While I used to struggle a lot with errors and syntax, now I’m able to jump right in.
  • While at the beginning I would only know whether a software feature would be well-received or not after deploying it, now I can sort of tell how the users/client would receive it, and consequently shape my deliveries to get the best impact.
  • I’m now able to code more productively. I used to get “stuck” in errors sometimes — where nothing I do sticks and the more I try to debug the worse it becomes. Now I know how to get into the right state to fix bugs, and when to stop and rest.
  • I know what are the best environments to help me get into the flow — and the ones that don’t. This means I’m more strategic about changing/creating the right environment to get into the deep focus zone.

Overcoming each bump takes experimentation and self-awareness. Sometimes there’s a lot of pain involved. But I find that each time I overcome an obstacle, it becomes easier. It’s as if I’ve just unlocked a new aspect of writing code that I didn’t know before. And I only got to know this because I’ve done the grunt work.

I’ve observed the same thing with other skills too — teaching, speaking, blogging, and playing guitar. There’s always the initial struggle. And the self-doubt / mental blocks where you know your desired output but you aren’t quite sure how to make it happen. And then there’s the “messy” stage where you are deep in the trenches trying to figure things out. And slowly you are able to “swim” and create some semblance of results. And gradually you see things at a more strategic level and learn how to go from vision to end outcome in the most effective & efficient way.

💡Other People’s Skills

If I look at the people around me, the same applies to them. All their skills have been acquired through time, hard work, and experience. I genuinely can’t think of anyone who is just “born” with their skills. Perhaps some people may think that they were “born” with their skills, but when you dig deeper, the opposite is true.

So why do so many people think of talent as being something innate that only some have? I suspect one reason is that the media tends to romanticize the successes of the “have’s.” They make them seem like magical beings who have special powers that we “mere mortals” don’t have. Another reason is that people usually only see top performers when they have achieved certain expertise. They don’t see endless hours invested before this expertise is attained. Without knowing that, it’s easy to jump to conclusions and assume that they have always been this good all along.

🎯Just Putting 10,000 Hours is NOT Enough

10,000 hours is the rule of thumb popularized by Malcolm Gladwell but 10,000 hours of practice by itself is not sufficient. There are 4 additional criteria that must be met and in cases when these criteria aren’t met, it’s impossible to become an expert.

1️⃣Repeated Experience With Same Events

We have all experienced that magic moment when, after days, months, or even years of practising something, we nail it: we score the perfect three-point-shot in basketball, our hands come together to complete a flawless Mozart sonata on the piano, or we manage to parallel park the perfect distance from the curb on a crowded street. This is the “magic” of Repeated Experience With Same Events.

But you also need to get feedback on these events. So you know how you are progressing as a learner & also to help you know what are the areas you need to study or practice more. The key to mastering a skill is to keep repeating it multiple times and get slightly better each time you do it.

Here are some examples of various skillsets & how they receive feedback:

SkillsetFeedback
Tennis PlayersThey hit hundreds of forehands in practice and see if each shot clears the net & is in or out
Chess PlayersPlay thousands of games and see if they win or lose the game or improve their positions
PhysicistsSolve thousands of physics problems and see if they get the problem right or wrong
Software EngineersWrite thousands of lines of code, practice design patterns, algorithms and solve problem statements then they get feedback from the compiler, during code review or from the client if their solutions have accurately solved the problem
MusiciansThey practice for thousands of hours to improve their theory knowledge, scales, harmonies and styles. They get feedback through self-awareness, playing in front of an audience or recording their sessions

2️⃣Valid Environment

The next requirement is a valid environment, one that contains regularities that make it at least somewhat predictable. A gambler betting at a roulette wheel, for example, may have thousands of repeated experiences with the same event. For each one, they get clear feedback in the form of whether they win or lose but you wouldn’t consider them an expert because the environment is low validity. A roulette wheel is essentially random so there are no regularities to be learned.

We have a hard time accepting average results and we see patterns everywhere, including in randomness. So we try to beat the average by predicting the pattern. But when there is no pattern, practising for 10,000 hours is a terrible strategy if you’re not in a valid environment. If there are no patterns or areas to study which can be studied repeatedly to yield better results. Example – Roulette wheel, lottery tickets, the stock market (to some extent).

3️⃣Timely Feedback

Even when there are patterns, you need timely feedback in order to learn them.

To understand the difference between immediate & delayed feedback psychologist Daniel Kahneman contrasts the experiences of anesthesiologists & radiologists. Anesthesiologists work alongside the patient and get feedback straight away as they can see if the patient is unconscious with stable vital signs. With this immediate feedback, it’s easier for them to learn the regularities of their environment. Radiologists, on the other hand, don’t get rapid feedback on their diagnosis if they get it at all. This makes it much harder for them to improve. Radiologists typically correctly diagnose cancer from just x-rays just 70% of the time.

Delayed feedback also seems to be a problem for college admission officers and recruitment specialists. After admitting someone to college or hiring someone at a big company, you may never, or only much later find out how they did. This makes it harder to recognize the patterns in ideal candidates.

This is why you need a mechanism to provide you timely or immediate feedback to improve whatever skill you’re practising.

4️⃣Deliberate Practice

So, if you’re in a valid environment and get repeated experience with the same events with clear, timely feedback from each attempt will you definitely become an expert in 10,000 hours or so?

The answer unfortunately is NO because most of us want to be comfortable. For a lot of tasks in life, we can become competent in a fairly short period of time.

Take driving a car for example, initially, it’s pretty challenging, it takes your entire attention but after 50 hours or so it becomes automatic and you can do it without much conscious thought. After that, more time spent driving doesn’t improve performance. If you wanted to keep improving you would have to try driving in challenging situations like new terrain, higher speeds or in difficult weather.

Now I’ve played the guitar for 12 years but I’m not an expert because I usually play the same songs because it’s easier and more fun. But in order to learn, you have to practice at the edge of your ability, pushing beyond your comfort zone. You have to use a lot of concentration and methodically repeatedly attempt things you aren’t good at.

This is known as Deliberate Practice. In many areas, professionals don’t engage in deliberate practice so their performance doesn’t improve. In fact, sometimes it declines.

Checkout the deliberate practice guide to learn more – https://fs.blog/deliberate-practice-guide/

🔊Start Investing Your 10,000 Hours Today

Do you have a goal that you feel you lack the talent to achieve it? Believe it or not, you already have the aptitude required to achieve your goal. The missing piece of the puzzle is not the lack of talent, but your readiness to put in the grunt work.

Rather than seeing talent as something innate in certain people, recognize that talent is innate in you too. You just need to put in the hours to bring this “talent” out of you. If you start seeing that Talent = Aptitude + Hard work, where aptitude is already present in everyone and hard work is the real variable in the equation, you will start to have a lot more power over your goals.

Moving ahead,

  1. What are the areas you want to be talented in? Identify them.
  2. How do you plan to put in your 10,000 hours? How many hours can you invest every day? Draw out a plan.
  3. How can you get started on this new plan? Work out your schedule.

Start clocking hours. Soon, you will become the top talent in your field.

Building a Second Brain

This article by Tiago Forte got me curious
Here’s how he describes it:
How many brilliant ideas have you had and forgotten? How many insights have you failed to take action on? How much useful advice have you slowly forgotten as the years have passed?
We feel a constant pressure to be learning, improving ourselves, and making progress. We spend countless hours every year reading, listening, and watching informational content. And yet, where has all that valuable knowledge gone? Where is it when we need it? Our brain can only store a few thoughts at any one time. Our brain is for having ideas, not storing them.
Building A Second Brain is a methodology for saving and systematically reminding us of the ideas, inspirations, insights, and connections we’ve gained through our experience. It expands our memory and our intellect using the modern tools of technology and networks.

When I read those first 3 paragraphs, my mind was blown. It was as if this guy was speaking to my very soul, articulating problems I’d been thinking about for years but never been able to put into words.

Since discovering this Second Brain / Personal Knowledge Management stuff, I’ve excitedly started to put it into practice. I’ve switched all my note-taking and writing over to Notion, a really great app that you should definitely try out. And I’ve started to actively write down thoughts and ideas I have throughout my day.

Anything that you read, watch and listen that resonates with you, goes into your digital note-taking system and then you can use your second brain to organize your ideas and thoughts and you can ultimately convert them into your creative output. In this blog post we’re going to go over the 10 fundamental principles of building a second brain so that you can also maximize your productivity and creativity.

1️⃣ Borrowed Creativity

The first principle is borrowed creativity. The Idea is that, we all intuitively think of creativity as kind of creating original stuff. But not always, creativity is also about remixing stuff. It’s about taking ideas that already exist based on the things that you read, watch and listen to and then adding your own spin to them and sort of combining things in interesting ways and that is what creativity is. It’s like what Pablo Picasso famously said that good artists copy but great artists steal and this is one of the key ideas of building a second brain. It’s the idea that if you have all of the little bits that resonate with you from all the stuff that you read watch and listen to if you have all that in one place it becomes a lot easier to start putting things together and to start seeing connections that you wouldn’t have seen before whereas if you try and do that all in your head it doesn’t work very well in comparison.

2️⃣ The Capture Habit

Secondly we’ve got the capture habit and this is a fundamental part of productivity. It’s based around the idea that our brains are for having ideas not for storing them. So whenever we get any sort of idea whenever anything resonates with us in any way from anything in life even if we’re just walking down the park or if we’re in the shower or if we’re listening to a podcast we want to capture that idea as soon as possible because our brains are not going to hold on to it for a very long period of time. For example most of the brilliant ideas are realized in the shower. But often we forget them by the time we’re out of the shower. So, a good solution would be to have a waterproof notebook on the window sill next to the shower. So if there’s any ideas flowing capture it right there and then because our brain sometimes is a dumb-ass and it’s not going to hold on to that idea for very long.

3️⃣ Idea Recycling

Thirdly we’ve got the principle of idea recycling and the main view here is that ideas are not single use but we can actually recycle ideas and reuse them over time and so one of the things we want to do in our second brain. Whatever note-taking app we’re using for it is we want to keep track of all of the stuff that we’re creating and all of the ideas that we’re using for certain projects because we can just reuse those ideas for others and so for me whenever I now make a blog post, finish a project or solve a problem all of that goes straight into my second brain because I know somewhere down the line i’m gonna want to reuse some of that information and then it means that I’ve got these building blocks already that I can then build other things out of which makes the entire process infinitely easier.

4️⃣ Projects Over Categories

The fourth principle is the idea of projects over categories and this is one of the things that I really learned early on. I used to take notes in the past but I would categorize things in terms of category. Like you know if I saw an interesting thing about technology i’d put it in a technology folder in notion or if I saw an interesting thing about motivation i’d put it in a motivation folder but then i’d end up with these sort of folders with lots of notes in them and didn’t really have anything to do with them. Now I think of it more in terms of projects and so if I capture an idea firstly it goes into my kind of general capture inbox but then I will try my best to associate it to some kind of project that i’m currently working on because then the information is going to be directly useful rather than it just sitting in a bookmark folder that i’m never going to look at again.

5️⃣ Slow Burns

The principle of slow burns which is really important aspect of personal productivity is that most of the things I do are slow burns rather than heavy lifts. So on one hand we’ve got heavy lifts, imagine you want to write a book or you want to learn a new technology. You will sit down and do all the work for it in a small amount of time and that’ll be like your heavy lift. On the other hand the idea of slow burns which is a big part of the building a second brain methodology is that we have this list of projects that we’re working on and they’re all kind of on the slow burner but you shouldn’t be sitting down and kind of bashing through them one at a time instead do them on the slow burn and so over time as you read, watch and listen to things, you will discover interesting ideas and come up with your own ideas. Some of the time it’ll just go in straight into my second brain and into the relevant project and so over time instead of kind of doing a big project one at a time I’m doing all 10 of these projects in very small amounts. So it’s very easy to put together all these small bits and complete the job because I’ve already done the work over time. It’s not a heavy lift that I’m struggling with, instead it’s a slow burn.

6️⃣ Start With Abundance

The next principle is to start with abundance. When we’re writing or creating anything or writing an essay or an assignment or a presentation or pretty much anything we all have that issue that we tend to start from a blank page. We have the blank page in front of us and we think right this is hard I’ve got writer’s block I don’t really know what to do. Another main thing in the second brain stuff is that if you have collected all this stuff over time all of your inspirations and bits then you’re never really starting from scratch you’re always starting from abundance. So let’s say you’re using evernote for your second brain or notion and you want to write an article about motivation or productivity all you have to do is search the word motivation and automatically you’ve got like a ton of articles that you have read and annotated and made your own notes on over the last few years. You can just kind of draw from those and take bits from here and bits from there and ultimately that’ll lead to a really nice blog post or blog post script or whatever you’re making about motivation because you’re querying the data set of stuff in your second brain and that just kind of changes the game because it means you’re never starting from a blank page you’re always starting with abundance you’re starting with this pre-existing treasure trove of information that you yourself have decided in the past that was worth saving.

7️⃣ Intermediate Packets

Next we have the idea of intermediate packets. This is something that I kind-of knew intuitively but I didn’t really have the terminology back in the day. So if you imagine, let’s say you’re a university student and you’re writing an essay. We don’t usually think of it as a big deal but actually it’s made up of a lot of intermediate packets. I used to call them content blocks in my head when I was in college writing loads of essays. It’s like you know your introduction is a block or an intermediate packet which makes it easier to flow the ideas in your brain following these intermediate packets. I would memorize the intermediate packets or the content blocks and then I’d be able to essentially in my head drag and drop them into whatever I say or write. For example, this blog post on 10 principles of building a second brain. Each of these 10 principles are their own intermediate packet and I know that in the future when I make another blog post there are surely some aspects of this blog post or some intermediate packets that I can just drag and drop into my other thing so firstly thinking in that way really helps because it means that it’s a lot easier to put stuff together for your next project but also in a way it makes it easier to get started on your current project.

8️⃣ You Only Know What You Make

Next we have the idea that you only know what you make and this is like a big part of the building second brain thing. We can read, watch and listen to all the stuff that we want but really the stuff that we’re really going to internalize and that we can feasibly use in our future projects is going to be the stuff that we have created ourselves. So whether that’s reading a book and then writing a summary of it or whether it’s listening to a podcast and then tweeting about it or even if it’s having a random idea and then fleshing out that idea into an intermediate packet and chucking it into our second brain. When we engage with the material ourselves rather than relying on just pre-existing material we end up becoming much more familiar with it and then we can do some interesting/creative/useful things with that stuff.

9️⃣ Make it Easier for Your Future Self

Principle number nine is, you want to make it easier for your future self and the way that I think of my second brain i.e. my kind of suite of digital note-taking apps that I use for different-different things is that, ultimately i’m putting in the work now to create a resource that my future self is going to find helpful. So right now, I might be listening to a podcast and hear the word “machine learning” I might be tempted to just write down machine learning because I kind of know right now what it means but that’s not particularly the case for my future self because my brain is a dumb-ass and i’m going to forget exactly what it means. So i’ll take a little bit of time right now to write a few notes on it to flesh it out in my own words so that when future me comes across this note on Machine Learning, future me will know exactly what current me was talking about. This will help avoid the frustration of your future self when you look at a concept you read about back in the day and think what the hell does thing even mean because you assumed too much intelligence on the part of your future self.

🔟 Keep Your Ideas Moving

Final principle is the idea that, you want to keep your ideas moving and that’s kind of an anti-perfectionist take on this because one of the traps that we can fall into if we’re building out a note-taking system is that we can fall into the trap of perfectionism where we think okay I’ve just discovered this digital note-taking system, I’ve watched tutorial videos & read this blog post on “how to use notion”. I’m going to create this elaborate database of all the stuff that I’ve ever read and it’s going to have like 18 pieces of metadata assigned for each one. We can get stuck appreciating the intricacies of the app and the intricacies of our system rather than focusing on what actually matters, which is to keep our ideas moving then organize it and distill it into our own insights and then convert it into creative output. The most important thing is the output as it really doesn’t matter what’s in your second brain. So what if you save all the knowledge you’ve come across unless you’re doing something with that information, unless you’re turning it into something or sharing something or applying it to your own life in some way.

Oracle Cloud: Architect Path

Oracle’s Gen2 Infrastructure Cloud as a Service scores high on parameters like cost effectiveness, reliability, security & high performance with low-cost choice of variety of virtual compute shapes, dedicated bare metal, autonomous database, Oracle real application cluster (RAC) that can be consumed as a service, Exadata engineered machines for superior performance of mission critical workloads.

It is a competitor to the market-leaders like, AWS, GCP & Azure. If you’ve taken the AWS cloud certifications then these exams will sound familiar and yes, at times I felt I was doing the same test with an Oracle twist.

OCI Foundations Associate (1Z0-1085)

Foundations Associate
  • Certification Name: Oracle Cloud Infrastructure Foundations 2020 Associate
  • Exam Number: 1Z0–1085–20
  • Format: Multiple Choice
  • Exam Duration: 85 minutes
  • Exam Cost: $95
  • Number of Questions: 55
  • Passing Score: 68%

The Oracle Cloud Infrastructure Foundations Certification provides candidates with foundational knowledge of core cloud computing concepts and an understanding of those services in Oracle Cloud Infrastructure. The certification is intended for candidates with technical and nontechnical backgrounds who want to validate their understanding of Oracle Cloud infrastructure.

Exam Topics:

  • Cloud Concepts
  • Getting Started with OCI
  • Core OCI Services
  • Security and Compliance
  • OCI Pricing, Support and Operations

Resources:

OCI Architect Associate (1Z0-1072)

Architect Associate
  • Certification Name: Oracle Cloud Infrastructure Architect Associate
  • Exam Number: 1Z0–1072
  • Format: Multiple Choice
  • Exam Duration: 85 minutes
  • Exam Cost: $150
  • Number of Questions: 60
  • Passing Score: 65%

The Oracle Cloud Infrastructure Foundations Certification provides candidates with foundational knowledge of core cloud computing concepts and an understanding of those services in Oracle Cloud Infrastructure. The certification is intended for candidates with technical and nontechnical backgrounds who want to validate their understanding of Oracle Cloud infrastructure.

Exam Topics:

  • Identity and Access Management
  • Networking
  • Advanced Networking Concepts
  • Instantiating a Load Balancer
  • Compute
  • Storage
  • Launching Bare Metal and Virtual Compute Instances
  • Database
  • Advanced Database
  • Architecting Best Practices

Resources:

OCI Architect Professional (1Z0-997)

Architect Professional
  • Certification Name: Oracle Cloud Infrastructure Architect Professional
  • Exam Number: 1Z0–997
  • Format: Multiple Choice
  • Exam Duration: 120 minutes
  • Exam Cost: $245
  • Number of Questions: 50
  • Passing Score: 70%

If you are planning to take this exam you need to have the OCI Certified Architect Associate exam passed beforehand. 100% of the questions in this exam are scenario-based. So, extensive hands-on knowledge is required. In the exam blueprint currently you have following information available:

Exam Topics:

  • Plan and Design Solutions in Oracle Cloud Infrastructure (OCI)
  • Design for Hybrid Cloud Architecture
  • Design, Implement and Operate Databases in OCI
  • Migrate On-Premises Workloads to OCI
  • Implement and Operate Solutions in OCI
  • Design for Security and Compliance

Resources:

Study Material

My study material was really simple. The official OCI documentation is really good and clear so that was my main area what I used. I also used the Technical White Papers section a lot and picked up several good papers which I read.

Here is exam-wise study material:

Final Thoughts

 So if you ask me how to pass this exam the answer is rather simple. You need to put yourself in front of your computer and watch all videos which I’ve linked above and go through all the study material. Although I think it is also good to practice with most of the OCI services and not count only on theoretical knowledge from learning paths in Oracle University. I have been also asked many times about brain dumps usage… well… honestly speaking I am not a big fan of that approach. Mostly because it is just a shortcut approach. Learning answers for the particular set of questions will not make you capable of architecting OCI cloud topologies for the real customers. You need to know all of the topics well. This is the only way to be really professional. I know it is hard, especially when there is no time, but this is only way 🙂 Good luck on your exams! I know from all recent LinkedIn posts and hype that OCI certs are now extremely popular! It is another sign that the OCI community is growing!

Being Comfortable With Estimation

Let’s talk about how you can prevent estimating software tasks that you feel uncomfortable about. By the end of this article I hope to give you some tips that will help you be a little bit more successful when you’re put into this situation. It’s really common in software industry and usually it is just a result of developers not knowing how to set good expectations and having a good contract with whoever was asking them to estimate the work.

So one of the main reasons why I think a lot of software developers myself included are really passionate about this subject and you’ve heard of the “no estimates movement” that’s really popular where a lot of people talk about this as it’s one of the biggest causes of burnout for software developers. If you estimate some work and your estimate turns out to be wrong many immature software companies will basically force you to work overtime and bend over backwards to meet your original estimate. They really don’t understand the meaning of the word estimate which really just means it’s not going to be accurate all the time.

If you’re out there working to deliver software for customers, inevitably you’re going to be asked to do some kind of estimation so the first thing that I would recommend that you learn to do well when you’re put into a situation where somebody asks you to estimate something and you feel uncomfortable about it is to be very clear with the other person about the unknowns. So, I often found when I was asked to estimate something I was really uncomfortable with, it was usually because I didn’t have enough detail about what was being estimated. I find many subject matter experts or business analysts or project managers even though they understand their market fairly well usually better than you as a software developer. Even though they consider themselves detail-oriented, maybe they’ve went to scrum master training or they’ve went to training on how to do business analysis but you as a software developer, you’re going to know more about the ins and the outs of the design, code and the things you need answers to.

You can get the other person to agree okay we don’t want to estimate our whole project we’re not doing waterfall but you’re still going to need to estimate something and when you get those requirements/user stories handed to you. First thing you should do is to look at it and try to find holes in it. Think of it like you’re almost a lawyer and you want to look at the requirements with intense scrutiny and try to think is there anything they haven’t considered? or are there any questions I have about this?, or when I go to develop this if I don’t get these questions answered I can’t actually commit to an estimate.

You know some companies that are earlier on in their sort of agile transformation journey they look at it like all you need to do is write a user story on your backlog and the developers will figure it out in the middle of the sprint what are all the details. This is actually a horrible idea in my opinion because it puts you as a software developer in a position where there’s no strong contract between you and what you’re on the hook for and what the business expects of you. So, you actually need to get clear about exactly what the software or the task you’re gonna build needs to do before you commit to any kind of estimate.

Lot of software developers really just want to sit at their computer and write code and kind of be left alone but the reality is if you have that kind of attitude you’re not going to really work very well with the larger team. You’re actually putting yourself into a very dangerous situation where if you don’t learn to be more detailed about that the business and other people can basically walk all over you and make your life a living hell because you’re going to do a lot of overtime as you simply didn’t take the time to understand the requirements better. So just make sure any time you’re handed any work that you need to commit to, you clearly communicate to the business this is exactly what the software is gonna do. It’s not going to do anything that isn’t in whatever we’ve used to describe it.

It’s very common that you’re going to be asked to do some work using a technology let’s say you’ve never worked with or maybe a third party component or maybe you’re working in a company where the products you work with there’s multiple teams and you need to use something that another teams building that either isn’t done or you’ve never worked with before. Rather than putting yourself on the hook to deliver something that you’re dependent on that other team for you need to actually estimate and buy estimate I mean set a time box for an amount of time that you’re gonna spend basically researching or experimenting or exploring what is it going to take for me to understand enough about what I’m interfacing with that then I can estimate it. So really, you’re just saying I’m gonna pick a fixed amount of time to try to understand what I’ve been asked to estimate.

Now some companies will really get frustrated about this they want to just push you into giving them a number so that they can commit it to management. You really want to communicate to whoever is asking you to do this estimation that the reason why you’re uncomfortable estimating at this point is because you don’t want to put them in a situation with their boss where they’re late and they look bad. So anytime I found that I have to refuse an estimate for someone it often gets down to how can I help them feel comfortable that I’m not trying to be combative I’m not trying to get out of getting the work done I’m trying to make sure they don’t get into a situation where now they’re under pressure and I am under pressure because the estimate was off. So, the way that you can help do that by clearing the floor making sure the other person understands the reason why you’re declining this estimate. Ask to do a research spike or some exploratory discovery work within a time box is because you don’t want to put them into a situation where they’re in jeopardy with their reputation with the stakeholders.

The last step that I’ll give you that you can use, that have worked really well for me as a consultant on consulting engagements is to remind them of projects or work that has been late in the past in the moment of kicking off a new project. It’s very common for them to forget completely about the project they’ve worked on in their career that’s failed and try to sort-of put rose-coloured glasses on and think well maybe this team is better than other teams I’ve worked with before in my experience.

It is more common that estimates are wrong than that they are right and it’s more common that projects go late or they’re on time but they don’t deliver to their promises than that they do and I think any one even who’s not doing software development who’s maybe not doing the work on the ground but they’re managing the effort they know this subconsciously. They’ve been through it, they remember it but you have to bring that to the forefront of their mind when they come to you to ask for estimations.

Illustration created by Thea Schukken for The Liberators & GIFs taken from GIPHY

Acing Your PSM 1 Assessment

A guideline on how to prepare & pass your professional scrum master I examination from scrum.org

Introduction & Motivation

Scrum is lightweight, simple to understand, and difficult to master

Taking a certification without knowing what you’re going to face is like going to a war without knowing what weapon should you bring. To make sure that you don’t bring a knife to a gun fight, let’s read this and be well equipped to clear your PSM I assessment.

I don’t find many real life experiences here, mostly people just give you theory & the resources you need. This article will take you through my experience preparing & acing PSM I.

Estimating Your Current Knowledge

Well, you don’t really need to do t-shirt sizing or play planning poker here but knowing your current level of knowledge will give you an understanding of what your best next steps should be in order to prepare for this assessment.

For instance, if you already have practical experience working on scrum framework and applying it in your day-to-day project work then you already have a head start in this preparation. You can skip scrum training in this case and directly prepare for the examination.

If you’re new to scrum/agile or if you’re only familiar with the basics then I would suggest going through a comprehensive 2-day course from here. Alternatively you may also enroll in a Udemy course, I would suggest this one.

Read The Correct Reference Book

The analogy is like this.
If you want to learn about a religion, read the Big Book of that religion.
If you want to know about Christianity, read the Bible.
If you want to know about Hinduism, read the Bhagwad Gita.
If you want to know about Scrum, read the Scrum Guide.

As simple as that.

There are many references about scrum out in the internet, but trust me, what you need to do is read the official scrum guide from A to Z, read it word by word, let it sink in your brain, dream about it, trust every word of it, then you’re on the right track. You might think that you understand it completely, but you need at least two readings as every line is important and can be a question in your PSM I assessment.

Practice Resources

 Reading is not enough (at least for me), You need to know the exam sample, somewhere where you can test your understanding of the scrum guide.

Let me share the perfect resource to practice:

  • Scrum Open Assessment – It has 30 questions. Every time you give this sample test it has some different questions than the last time. They are also simpler than the actual exam and have lesser scenario based questions than what you might find in the real test. My suggestion is go through the scrum open again & again until you can score 100% marks in less than 8 minutes. Some questions are also repeated in the real test from this open assessment, so taking this will give you the edge.
  • There are few more open assessments. Find them here Professional Product Owner Open, Professional Scrum Developer Open & Nexus Open. Passing them are not necessary but if you want to make sure that you attempt all questions well from your real assessment then going through these open assessments will help to get the complete knowledge of question types.
  • You should understand how to scale Scrum. Check out the official Nexus guide. There are several related questions in the PSM exam.
  • Mockup Exams – Apart from the Scrum guide, open assessment tests, the Mikhail Lapshin quiz really helps. I would suggest everyone take a quiz from the Mikhail’s site before taking the PSM I exam. You have learning mode and real mode. Learning mode will give you instant feedback while you’re going through the questions. Real mode is exactly like the actual assessment having 80 questions to do in 60 minutes with a passing grade of 85% but it’s a simpler version of it. Go through this multiple times and make sure you get more than 95% in your last try.
  • Go through the whitepaper written by Barry Overeem – The 8 stances of a scrum master.

Exam Tips

Before you jump into the exam, let me give you a few assessment tips:

  • You might want to give examination after studying the resources for hours as the knowledge is fresh, but it’s generally a bad idea. Give the exam after a good night’s sleep when you’re well rested.
  • Make sure you keep an eye on the timer as it expires really quickly. Don’t waste any time because there’s none to waste.
  • Try to mark for review ONLY questions that you really want to revisit. Because of the time constraint, I do not think it is realistic to review more than 5–7 questions.
  • Read the questions loudly if needed and pay attention to the wording as small words like may/can/should/not can make all the difference.
  • Read all the answers. Even if you think you’ve got the right one, sometimes there are multiple right answers and sometimes there’s answers which look identical but only one is correct.
  • Majority of the questions where multiple answers are correct will explicitly have written how many answers to select. For example – “What are the two best ways”, “Select three things which” etc.
  • Make sure that you have a good internet connection, 60 minutes of peaceful time and a silent place from where you can take the assessment.

I scored 95% in the PSM I assessment, if you prepare using all these resources you can do the same or even better.

Good luck & Scrum On!

RPA: What you need to know

Robotic Process Automation (RPA) is an important component of the ‘Future of Work’ toolkit. Many large organizations have big teams working on RPA even as many others are waiting for others to realize benefits before they jump in. This is precisely what happens when a disruptive technology comes to the fore. Risk averse organizations wait and watch.

The objective of this blog is to walk the reader through a basic understanding of RPA, it’s use cases, and points to consider before they make a decision of RPA. RPA is defined by the Institute for Robotic Process Automation (IRPA) as ‘the application of technology allowing employees in a company to configure computer software or a ‘robot’ to capture and interpret existing applications for processing a transaction, manipulating data, triggering responses and communicating with other digital systems.’

RPA offers a quick and simple way to improve any repetitive, process-oriented and time-consuming tasks. 

Let’s get into the details.

How is it Different from Traditional Automation

Isn’t automation overtly talked already? How is RPA different?

RPA works on the user interface layer. It sits on top of an organization’s existing IT infrastructure and doesn’t care about what that is. In other words, RPA is technology agnostic and works across legacy, Mainframes, ERPs, custom applications, etc. If a human can use a system, in all certainty, it can be used by RPA bot. RPA offers ease of usage and debugging. The RPA programs are simpler and user-friendly and easier for a new analyst to understand. So, cost of resource replacement is low and so is the risk to the business. RPA doesn’t have complex integration codes to be written. This results in faster implementation, shorter break-even periods, and higher return on investments (ROIs) Most RPA solutions have inbuilt OCR – Optical Character Recognition Capabilities. Isn’t that one of those much vouched for the capability we all need for businesses to operate electronically? Not to mention the AI capabilities of some RPA bots. With the help of artificial intelligence, these bots learn on their own and make less or no mistakes over a period. None of the traditional automation software offers that capability.

Benefits of RPA

  • Reduce Human Error – RPA reduces the chances of mistakes made by employees performing mundane tasks like data entry, meaning less operational risk
  • Improve Customer Interaction – Using RPA for routine manual tasks frees up your workforce to focus more of their energy on ensuring your customers are happy
  • Better Workflow Processes – RPA bots are capable of performing defined tasks error-free, meaning their output is more accurate and of a higher standard than human counterparts
  • No New Hardware – Implementing RPA bots doesn’t require any new investment in your systems, so there’s no need to be concerned about any upheaval
  • Reduce Cost – Bots complete jobs faster and cost significantly less than a full-time employee. The worker who is freed up by the bot can now be utilized in a more cost-effective manner performing a task that needs a human touch
  • Speed – Consider how long it takes for a human to fill out a data sheet. An RPA bot can do it in a fraction of time. Over months or years, that’s a substantial amount of time and money saved
  • Flexibility – RPA bots can be programmed to perform virtually any manual, repetitive, clerical task
  • Scalability – RPA can be scaled up and down with ease, for example companies can make seasonal adjustments based on demand

Development of Robotic Process Automation

The term “Robotic Process Automation” can be dated to do the early 2000. It is a developing technology as it is still depended on its previous technologies. RPA is now enhancing the capabilities of its previous technologies and using them in the IT industry in a better way.

Unlike its preceding technologies it is not dependent on coding. Rather it allows the user to use its drag and drop features to create automation software’s and manages them. This gives the user a flexibility of managing the software even without any coding knowledge.

Many of the Robotic Process Automation software make use of optical character recognition (OCR) technology to understand the changing websites. This eliminates the need for human intervention.

Future of Robotic Process Automation

The future of Robotic Process Automation is very bright as it transforms the business activities and streamlines the process of many big companies.

According to McKinsey, automation technologies such as Robotic Process Automation will have an economic impact of nearly $6.7 trillion by 2025. With these statistics, it’s definite that Robotic Process Automation is growing rapidly and is going to become one of the leading technological platforms for a positive business outcome.

Industry analysts expect that Robotic Process Automation software’s will be combined with technologies machine learning and cognitive computing to provide better solutions to the industry. This has great potential to make organizations more active and productive, which is very important in today’s global and competitive marketplaces.

RPA is also widely used in many industry specific solutions to automate the mundane and repeated tasks. For an example, there are many strong use cases to utilize the power of RPA in procurement industry. More here on a blog post from Fairmarkit.

Tips for Success in Robotic Process Automation

For a smooth and successful implementation of Robotic Process Automation, it is necessary that a through selection of the process to be automated is done. At the same time, it is very essential that all the people of the business, IT and Robotic Process Automation work as a team. Here is a list of certain important things that should be kept in mind, while going for Robotic Process Automation, in order to make it successful.

  • Analyze And Choose The Correct Process For Automation

For an effective Robotic Process Automation, such processes should be chosen which are repetitive, rule-based, high in volume and that don’t require human intervention for making decisions. This can be a challenging task in itself because choosing an inefficient process to automate will only speed up the inefficiency.

  • Get The Support Of Your Stakeholders

The idea Robotic Process Automation adoption does not come from inside the organization but from outside business units like the consultants. Hence, for this idea to be successful, it is necessary that support must be gained from the stakeholders inside the organization like the CEO, IT head, etc. This is so because none of the Robotic Process Automation software will be able to run without the permission and help of the IT department. Since no robot can work without a PC, a user account or access to an application. The entire infrastructure has to be provided by the IT department. So keep these people in confidence and also try to communicate the benefits that the IT department is likely to get from this technology. Sharing success stories through regular communication helps in creating enthusiasm among the people.

  • Communicate Regularly With IT Department

Communicating with the IT department should be on a regular basis.This will help the Robotic Process Automation team in delivering the new Robotic Process Automation process. The IT team can provide real support to them at various stages of development. For example: – they can provide access to test environment, help in giving permissions within an application, etc. Staying in contact with the IT development is very important in order to ensure smooth delivery of the new Robotic Process Automation process.

  • Prepare A Clear Strategy For The Usage Of Robotic Process Automation Within The Company

There is always a risk of failure if there is no clear strategy regarding how Robotic Process Automation is going to be deployed and utilized. One should have a clear vision about the use of Robotic Process Automation so that the correct Robotic Process Automation software is chosen to fulfill the needs of many departments. The software should also fully integrate into the existing It infrastructure and solutions so that there is no conflict of technologies.

  • Keep The Expectation Realistic

Robotic Process Automation is only a tool and not a magic solution to every business problem. Still there are situations where there is a need of human interventions in order to manage the problem. So thinking that RPA software implementation can take the place of human beings completely is a far-fetched dream. Hence we should keep our expectations regarding Robotic Process Automation.

  • Calculate The Hidden Costs Of Robotic Process Automation

There is always an initial expenditure while implementing Robotic Process Automation and keeping it operational. Hence make budget for each of its stages. Also make provisions for the IT infrastructure like databases, machines, etc and IT resource time to implement Robotic Process Automation. Include additional consultancy costs, if any, from partner companies. You have to also take into account the salary cost of any additional post created due to Robotic Process Automation implementation. All of this needs to be included in the cost for implementation of RPA. If all this is within the budget of the company then only it should proceed for Robotic Process Automation implementation or not.

RPA Platform Comparison

   undefinedundefined   undefined
Community VersionOnly licensed version is availableOnly licensed version is availableBoth community & licensed versions are availableBoth community & licensed versions are available
Enterprise Version Trial14 DaysNot available for trial45 Days30 Days
Market TrendPreference for existing Appian cloud customersPreference for big enterprises as it has good scalability, execution speed & trustworthyPreference for small organizations as it has lot of funtionality & good scalabilityPreference for individuals who are starting with RPA as easier to learn
Based TechnologiesJavaC#.NET & JavaVB script, C#, .NET
Architecture TypeClient-Server Based Architecture with a web console available in Appian environmentClient-Server Based ArchitectureClient-Server Based ArchitectureWeb-based Orchestrator
Process DesignerProcess skeleton can be created using drag-drop but node configuration requires Java codingVisual process basedDeveloper Friendly (Script-Based)User-Friendly with Drag-Drop Functionalities
Programming SkillsModerate Level – Required to create methods and logicsModerate Level – Required to manage business objectsBeginner Level – Required to use activitiesDoesn’t require coding just need basic visual skills
AccessibilityBrowser AccessiblityApplication BasedApplication BasedMobile & Browser Accessibility
Re-usabilityRPA process can be resued and called in Appian using integration objectsLibraries can be resued with other processBlocks are created using smart adaptersProjects are grouped together as library
RecordersNo Recorders AvailableNo Recorders AvailableBasic & Macro RecordersBasic & Macro Recorders
RobotsFront & Back Office Automations (Attended & Unattended) with Best-in-class human-in-the-loop capabilities to handle exceptions and ad-hoc activities, fast.Only Back Office Automation (Unattended)Front & Back Office Automations (Attended & Unattended)Front & Back Office Automations (Attended & Unattended)
AccuracyReasonable across mediumsDesktop Web & Citrix AutomationReasonable across mediumsCitrix Automation designed for BPO
Operational ScalabilityClaims to centrally manage, monitor, and deploy bots across the organization to increase scale and performance.Good & High Execution SpeedLimited large scale robot deploymentCrashes in medium level project
Community & SupportOffers community & support to post technical queries 24 x 7Offers community & support to post technical queries 24 x 7Offers community & support to post technical queries 24 x 7Offers community & support to post technical queries 24 x 7
CertificationNone yetOfficial paid associate, professional & architect level certifications are availableOfficial certifications available for $50 (advanced) & $100 (master)Official paid associate & advanced level certifications are available
Pricing$5000 per month for unlimited botsPer bot pricing based on a custom quotePer bot pricing based on a custom quote. Starts at $750/month for limited botsPer bot pricing based on a custom quote. Starts at $3999 per year per user for limited bots
SecuritySimplified access and adoption of RPA with Appian’s globally available and highly secure cloud with many security certificationsProvides features like infratuctural security, centrally managed user access control, systemized activity logging, Irrefutable audit trsilProvides features like Fine-grained RBAC, Bank-grade encryption & complete audit trailsBuilt with defense-grade security and auditing including role-based access control (RBAC), Encryption Everywhere, and Veracode certified code
Pre-requisitesAppian cloud environmentNoneNoneNone
Operating SystemCan run on Windows, Linux & MacOS out of the boxWindows onlyWindows onlyWindows only
Capture Video & ScreenshotsYes, it can capture both videos & screenshots while the bots are executingException/failure stages can be configured to save a screen capture. Videos can’t be recorded out of the boxException/failure stages can be configured to save a screen capture. Videos can’t be recorded out of the boxHas an activity to capture screenshots but can’t record videos of bot execution out of the box
Schedule BotsYesYesYesYes

Conclusion

With the emergence of Artificial Intelligence and RPA,new job profiles will be created. People should not worry and think that jobs will be on the decline due to automation rather on the contrary these will open doors for re-skilling of man power. Now people have to focus more on super specialization in their particular field of work in order to succeed.

Advice For New Developers

Making mistakes is part of the learning path to greatness. Failing quickly and often is a hallmark of success. And aiming to avoid making the same mistake more than once should be somewhere high on your priority list.

Yes, personal experience is the most powerful way to learn but the knowledge acquired through others’ experiences is a quicker, smarter way to go about it to save significant pain. After all, life is short; you can’t make all possible mistakes in your one life.

And a career in software development is the start of a journey in mastering your craft. As with any field, there will be challenges and chances to be correct, and chances where you can be completely wrong. This piece acts as a reflection on the mistakes I have made in my career so far — and a guide to avoiding them.


Making yourself indispensable

While the rush of power that comes with indispensability is addictive, you are hurting your own growth if you continue doing that.

Always remember, if you want to aim for higher things, you need to get yourself freed from lower things. Create and mentor a successor in place who can take over from you.


Burning bridges

Yes, you are good, you are great and you are a hot-shot programmer but that does not give you the power to burn bridges and pick up needless battles. The software industry is a small world. Bridges you are burning now will come back and haunt you when you need them the most.

Be humble, be cordial and maintain good equations even with people you don’t like.


Not sharing knowledge

From my experience, being good at technology is the most sustainable way to gain respect among your team members. That being said, being good at technology and not sharing your knowledge is a sure shot recipe for disaster.

Knowledge is half the battle and sharing it is the other half. Good programmers talk to junior programmers and show them how to solve problems. They not only tell them how to fix the problem but also explain why they fixed it that way.


Ignoring soft skills

Programmers sometimes forget that software development is a team sport, and a project is a mutual task for a group of people who have to work side by side, support each other, and move towards a single goal.

So, if a programmer is too arrogant, does not have any passion for work, or is not able to communicate efficiently, this will have a negative impact not only on his work but on the whole project by delaying it or screwing up some of its parts. So soft skills are mandatory.


Sticking to one stack

The software industry never stops evolving. Similarly, a software professional should also keep evolving with the industry and must match its pace with the industry to stay relevant and in-demand.

Remember, the key is not necessarily acquiring fluency, but gaining a conceptual vocabulary to attack problems in new ways. Good programmers don’t just code, but they keep learning key concepts that help them to resolve problems in new ways and find the most efficient solution possible.


Cutting corners

There is nothing called “Quick and Dirty code”. Dirty code is bad code. Period. Never cut corners or accept anything that is the second rate.

Your real test as a good programmer comes under a crisis. If your behavior changes during a crisis, then you are not a good programmer.


Not documenting code

It doesn’t matter how good your software is, because if the documentation is not good enough, people will not use it.

Whatever be the deadline, whatever be the workload, whatever be the excuse of not documenting, any software having no documentation is a dead Dodo. Simple as that!!!


Avoiding politics

We’ve all heard techies say: “Leave me out of the politics. I just want to implement the technology.” But that will not work.

Where there’s technology, there’s change, and where there’s change, there will be people who perceive themselves as winners or losers. That’s where politics begin. You need to manage it, circumvent it and come out as a winner. There is no other way.


Designing too much before writing code

Yes, a good design before coding is a good thing, but devoting too much time on it puts you in an analysis-paralysis situation.

Do not look for a perfect design That does not exist in the world of programming. Look for a good-enough design, something that you can use to get started. A good design works like a map. It should evolve, rather than cast in stone.


Picking up the first solution

Yes, the first solution is tempting and might be an easy way out. But good solutions are usually discovered once you start questioning all the solutions that you find.

Remember, your job as a programmer is not to find a solution to the problem. It is to find the simplest and the most optimum solution to the problem.


Not knowing when not to do something

The best programmers know precisely when not to do something.

They know that rewriting a library from scratch just to make it more readable, or switching to the newest framework from the older one are not always good decisions. The purpose of the code should be clear enough to grasp within minutes or even seconds.

The key is not to be risk-averse but just careful in picking the right battles.


Not admitting your ignorance

You’re probably a technical whiz kid, but even you will not know everything about your technology. It’s practically impossible.

On the other hand, the greenest kid in the room might come up with a sustainable, performance-effective solution to the problem at hand. Good programmers don’t impose their solutions on the team. Rather they cultivate a sort of democracy in which the best solution wins.


Bending under pressure

The code is like food. It can be fast, good, or cheap. Pick any two. A bad programmer overwhelmed by pressure tries to get the team to do all three things at once. They’re driven by deadlines and commitments made by somebody else knowing pretty well that it is not feasible.

A good programmer is all about “getting real,” and communicating that reality to all stakeholders up and down the chain in the fastest way possible.


Not networking and building trust

Yes, programmers can exist as lone wolves also but the best programmers are master networkers.

And The easiest way to establish trust and forge relationships can be by helping other teams in crunch situations. This way you start owing them ‘favors” which you can always ask without hesitation at the right time. Volunteering to help somebody with their initiative or going that extra mile to help somebody accomplish their work not only builds your expertise but also your influence within the organization.


Not seeing the big picture

As a programmer, most of the time, you will be working on a piece of code or maybe solving some production issues in existing code. You are doing the work assigned; nothing wrong in it. But if you want to a part of the entire deal; you need to take time to find out what the deal is all about.

And the best and easiest approach will be to take the help of a mentor who can help you develop your skills faster and keep you firmly grounded with the larger project perspective.


Always reinventing the wheel

Good programmers do not reinvent the wheel. They always reuse and build over existing functionalities wherever possible. This not only saves time but also builds a sort of camaraderie among the developers sharing code.

There are already existing answers to the problems you are trying to solve. So when you are trying to complete a task, check to see if someone else has already solved the problem. You are not cutting corners here. You are cutting the effort here.


Not knowing business rules well enough

We programmers sometimes underestimate the complexity of business rules. If we don’t know the business rules clearly we won’t know how to implement the solution effectively.

Remember, you need to adopt a business mindset while programming and create a workable solution in business terms that fulfills its objectives rather than focussing on a powerful technical solution.


Not communicating with team

While there are no set rules to communicate, (in fact, in software-project limbo, people are referred to as resources), getting a bit personal at work is required as part of our journey as Homo sapiens.

Knowing other programmers’ abilities and limitations, combined with knowing what they are interested in, will make you plan your development in a better way.


Not prioritizing health

Health is the foundation that accelerates everything in your life, including your career. It elevates your creativity, energy, and grit to get through the inevitable ups and downs you’ll experience.

Prioritizing your health isn’t just a one-time task. It means scheduling it into your daily routine, making investments to buy the right food and exercise regularly, and even giving up other bad habits.


Last thoughts

Any career has ups and downs and it totally depends on the way you take it. You can either be knocked down by the negative things, or you can take it in a positive way and learn from it

As Carlton Fisk has rightly said:

“It’s not what you achieve, it’s what you overcome. That’s what defines your career.”

Adopting Remote Work

This image has an empty alt attribute; its file name is spotify-badge.svg

Companies who don’t have a remote strategy won’t be competitive by 2030

Remote work is already everywhere. The smartest people I know all plan to work remotely this decade, while the most interesting startups I have discovered are all offering remote work. At the same time, there is a massive supply and demand problem. Far more people want remote jobs than there are remote jobs available. This had led to a perfect storm, particularly on social media, where a vocal minority evangelizes the remote work benefits while non-remote people question whether the benefits can be as great as is suggested.

Fortunately, this supply and demand problem eases with each passing day. Remote work has grown 400% in the last decade, while the number of full-time remote workers across the US and EU is projected to grow to 40m by 2030. While that is only a fraction of the 255m desk jobs globally, I believe that number will turn out to be a significant underestimation. As the workforce transitions to more flexible arrangements in search of better work-life balance, the inevitable implication is the rise of the two dominant locations of work away from the office: coworking space and remote working from home.

How can I predict that the number of full-time remote workers from home will race past 40m before 2030? Because the vast majority of remote workers today want to work from home

With that being the case, companies must deliver a far better experience to remote workers. Right now, remote workers are happy to accept less than optimum conditions because they see remote work as a perk.

It isn’t.

Remote work benefits both parties and a failure for companies to acknowledge that will be as costly as not going remote at all.

Companies who don’t:

  • Go remote will lose their best people to their biggest competitors who do
  • Provide a great remote work experience will lose their best people to their biggest competitors who do

Remote work experience is the thing that most companies are currently neglecting. We provide our remote work with all the physical tools they need to work remotely while failing to give them the physical tools they need to do their best work. Remote workers should be safer, more comfortable and productive at home than they can be in an office.

There is a missing half of remote work and that involves human connection, experience, and culture. It focusses on improving remote work and bringing it into the 21st century. Anyone who has worked remotely knows that sitting hunched over the kitchen table is a terrible experience. To do great work at home we need dedicated space. We need the right tools and equipment. Working remotely is only half the equation: we have the space to do deep focussed work in quiet isolation but we require more than that to do the best work we have ever done.

The economic calculations are even more obvious:

🏢Cost of the office:

  • $18,400 per workspace
  • 520 hours commuting 
  • 5,443lb Co2 emitted 

Per person, every year

vs.

🌍The cost of remote work:

  • $2,000 per workspace
  • 0 hours commuting 
  • 0lb Co2 emitted 

Per person, every year

A remote workspace is $16,400 less per year, per team member

Companies that don’t go remote won’t be competitive. Office-first companies will die twice:

  • cost
  • talent

💰 Real estate cost means they won’t be able to compete economically.

📍Fixed location will disqualify them from 99% of Worlds talent

Only being able to hire the best person you can afford within a 30-mile radius of your office will mean that your remote-first competitors become more talented than your company with every hire. At the same time, they will be operating at a lower cost than you.

⭐Great Talent

The most talented people are stipulating remote work as a condition of employment. Companies who don’t provide this won’t be able to attract the best people.

Companies who don’t give this to their existing workers will lose their most talented people to their biggest competitors.

🚦Changing Preferences

The smartest people I know personally ALL plan to work remotely in the next decade.

The most interesting companies I know personally *ALL* plan to hire remote workers in the next decade.

Remote will be the dominant workplace of the best companies and people.

⌛Efficiency

Office-first companies won’t be able to compete with remote-first companies in terms of efficiency, both economic and operationally. Not only will remote-first companies increase their average level of talent with each hire, they will be far more cost-efficient. City living is subsidized by companies, leading to a lower disposable and quality of life.

Most Companies Want to Go Remote

Why Now?

Remote work is the biggest workplace revolution in history and nothing will deliver a higher quality of life increase in the next decade than this. Workers having more flexibility to decide their work schedule, able to operate when they are most productive rather than a fixed day, enables a far better future of work than the one we currently experience. Organizing work around your life is a huge transition with major implications. Gone is the requirement to beg your bosses permission to go to an appointment, it is the ability to drop and pick your child up from work every day with time in the afternoon to go for your recharging run.

Being handcuffed to an office and expected to live in a high cost of living city with a low quality of life is a remnant of the industrial revolution. The devolution of offices into almost factory-like conditions as distraction factory adult kids clubs is complete. The office has become the worst place on the planet to get the isolation and focus you need to do deep work.

Make no mistake, remote work is exploding to prominence right now. We are living through the inflection point today. Shortly, workers will realize their power and influence to demand remote work.

Low-code: Build at the speed of ideas

What Is Low-Code?

Low-code allows you to transform ideas into innovation fast. There’s no need to code an application line-by-line and write big blocks of code for everything. With low-code, you draw it — just like a flowchart.

Create & Deliver Enterprise-grade Applications at unbelievable speed

This efficient process:

  • Makes creating new applications quick and intuitive
  • Accelerates the process of moving from idea to application
  • Removes the barriers between business and IT and they work hand-in-hand
  • Boosts the power of every application

What Makes Low-Code So Fast?

According to Forrester reports, low-code development is up to 20 times faster than coding line-by-line. Low-code achieves this speed by simplifying the very complex processes of application development and maintenance.

Intuitive, reusable design

  • Simply draw a flowchart to define business logic, or drag and drop to build an interface. You can even point and click to create rules or configure an integration.
  • Everything you build in your app can be applied to another one, today or tomorrow

Simplified collaboration

With low-code, business and IT work collaboratively to define the application, using a visual design process that makes sense across the enterprise.

  • Keep business and IT on the same page
  • Enable constant communication and direct feedback, with the ability to customize workflows
  • Deploy updates and changes as business needs evolve

Simplified deployment

Low-code makes deploying, managing, and changing applications simple.

  • Unveil applications to your users with a click on web or mobile
  • Make changes or updates instantly, with no downtime and no interruption to business operations
  • Maintain governance with built-in version and change control, along with safeguards to ease application maintenance so you can keep innovating

Why Is Low-Code So Powerful?

Low-code platforms are capable of meeting the toughest enterprise requirements: mobility, security, scalability, and reliability. In the past, application quality reflected developer skills and time spent. With low-code, however, it’s the the low-code platform, particularly a sophisticated one, that does the work. Low-code builds power, for free, into your applications so you can focus on business impact.

Instant mobility

Build once, deploy everywhere. With low-code, mobile and web require no extra effort, coding, or resources.

Quality and reliability

Developers no longer need to spend additional time on SLAs for uptime, high availability, and scalability features. With an enterprise-grade low-code platform, these benefits are inherent to every application you build.

Security and compliance

Low-code applications inherit the platform’s security and compliance features and capabilities, including:

  • Audits and ongoing security monitoring built in
  • Compliance with certifications such as FedRamp, PCI-DSS, SOC 2, SOC 3, HIPAA, GxP, and EU-U.S. and Swiss-U.S. Privacy Shield Frameworks

How Is Low-Code Sustainable?

Maintaining hundreds of applications is a struggle, especially if many are outdated.

Low-code enables unified, reusable common components and data schemas from all applications. This consolidation boosts development productivity while strengthening governance.

  • Incorporate standard interface paradigms and encourage common UX patterns across all applications, improving user experience and reducing training costs
  • Enable simultaneous upgrade of every application, to more swiftly take advantage of new features and capabilities
  • Future-proof any application developed on the platform by seamlessly supporting new operating systems, browsers, mobile devices, and UI technologies, as well as innovations or paradigm shifts in workload management and devops

Low-code accelerates the transition from idea to innovation by removing the traditional barriers between business and IT. Low-code allows the rapid build, launch, and change of powerful apps.

The result? Massive business impact, fast.

Advantages of Low-Code

Until now, organizations had to code from scratch or buy a packaged app and customize it to support their unique business needs.

Low-code offers an uncompromised third option: the speed of a packaged app, the personalization of custom development, and the power to support even the most complex enterprise use cases.

The Future of Application Development

With low-code, IT and business work together. Users can bring innovative ideas to life by drawing, clicking, configuring, dragging, and dropping to translate their intentions into working enterprise software.

Essentially, low-code:

  • Offers an intuitive design that results in a dramatic increase in developer productivity and application output
  • Aligns business and IT so business leaders have the power to bring solutions to market faster than the competition
  • Allows enterprises to create applications that are easier to change while remaining more mobile, integrated, and secure
  • Makes deploying, managing, and changing one or hundreds of applications simple

Low-Code: Top Four Benefits

#1 – Ease of Use

Visual design that allows drawing instead of coding can exponentially accelerate development—especially when combined with automated testing.

  • Minimal coding required. Drag, drop, click, configure.
  • Instant, native mobility with no extra time, effort, or resources required
  • Seamless integration unifying all enterprise data, processes, apps, and existing systems
  • Streamlined user experience on web or any mobile device

#2 – Speed

Low-code development allows more high-quality apps to be built in less time. With low-code development, time is no longer a barrier to real innovation or an excuse for technical debt.

  • Rapidly deliver applications with other departments to increase business impact
  • Launch enterprise apps at the speed of business needs
  • Adapt quickly to evolving market conditions, customer expectations, and new technologies
  • Visual, drag-and-drop development tools make creating and changing enterprise apps easy and fast

#3 – Power

Low-code empowers your IT organization to fully meet the needs of the business and turbocharge innovation through mobility support, high availability, security, and scalability. No additional work by application developers is needed.

  • Build and launch unique apps that meet enterprise-level needs
  • Expand departmental apps to address enterprise-wide challenges, no matter how large or complex
  • Provide security and compliance certifications like PCI, HIPAA, SOC 2 and 3, and more
  • Scale instantly for any project, program, or line-of-business

#4 – Build for the Future

Low-code makes you forget about app obsolescence and technical debt with built-in safeguards to ease application changes and maintenance. You have the flexibility to keep innovating because low-code allows your applications to grow with you.

  • Everything reusable. Unified and reusable components and data schemas across applications makes changing apps painless, boosts development productivity, and tightens governance.
  • Consistent user experience. Automatically incorporating standard UX patterns across every application improves user experience while reducing training costs.
  • Always up-to-date, never obsolete. Simultaneous upgrade of all applications means they take advantage of new low-code platform features as soon as they are available while preserving backwards compatibility.
  • Ready for the latest. An application built today will continue to work in the future with new operating systems, browsers, mobile devices, and UI technologies.

Hello Blogging World :)

Kunal Sharda, A resident of Jaipur, Rajasthan. Started his journey as a low-code developer in 2016 working on the Appian BPM platform. He’s an engineering graduate from Manipal Institute of Technology, Manipal in Information & Communication Technology specialization. Postgraduate in MBA from NMIMS, Mumbai in Information Technology & Systems Management. When he’s not coding or learning something new, he loves to play the guitar, gym, & blog

About Me

Since this is my first blog post, I would like to start by introducing myself:

A 16-year old me would have never imagined that I would be so deeply interested & engrossed in broad terms like tech, cloud, BPM, low-code, SDLC, databases, agile etc. I was a school going student who had just opted for the science stream going against the will of my dad who is a well-known practising chartered accountant and wanted me to join his practice. I remember telling him that commerce is not for me and it doesn’t interest me. He understood with very little effort from my end & wanted me to pursue what I wanted. The problem was I didn’t have a clear vision at the time but I opted for science anyway – like many other students do.

My passion at the time was music & playing the guitar. I had been playing since 8th grade and had got a good hang of it, especially in classical rock, progressive, alternative rock, pop, country & Bollywood music styles. I was the lead guitarist of our school band (St. Xavier’s senior secondary school, Jaipur). We named it “Tarangg”. I remember practising & performing with my band as the best time of my school life. I have memories which I will continue to cherish for the time to come. Like, winning inter & intra-school music competitions, performing at various events, writing, composing & producing our original songs and also taking part in national competitions where we had to compete with professional musicians double or triple our age! I was improving myself in guitar every day by learning new techniques and playing styles & could see myself continuing the same as my full-time career.

I continued my love for guitar and stage performances throughout my college life at Manipal Institute of Technology. I was never a top student in engineering but always loved the topics which were about software design, management & development. I had moved 2500 km away from my home in a college-town called “Manipal” in south India. I had a lot of freedom living on my own, which I loved but also hated. I spent most of my time socializing, living life to the fullest, travelling, making lifelong friends, playing/performing guitar and sometimes studying as well.
During my time at my undergrad college & all my internships at various tech companies, I fell in love with software design & development and I knew this is what I wanted to continue doing.

Fast forward to the year 2016, I had finished college and was all set to pursue further education when I came across an organization (my current employer) which also happened to be in my hometown – Jaipur.
This organization was partnered with different modern & innovative work platforms to offer accelerated and advanced digital transformation to their clients located globally. One of those was “Appian”. This place is where I met amazing mentors who helped me learn about SDLC, Appian, databases, project management, the value of a team and working together to build end-to-end software solutions for customers & help them achieve ROI & meaningful business value. I was fascinated with everything and would spend most of my time in the office & at home learning about various technologies as much as I could. I would code, make mistakes, correct them or seek help and in the end, be happy with the end product I could create. This would give me immense happiness & sense of achievement. I was also termed by my manager as the “quickest learner”. I think it was all because my passion had gradually changed from music to tech & software. Guitar had become just a weekend hobby because I had found a new “passion”.

As of today, near the end of 2019. I am working directly with clients from US, UK & middle east, leading a development team, helping create products and launching them on the “Appian app market”, participating in hackathons, and conducting workshops & training sessions to spread my knowledge while learning something new myself every day. I am proudly certified as Appian Level 3 Expert (highest certification with less than 40 people holding this credential globally), AWS Solution Architect, Professional Scrum Master (Agile), Advanced Excel expert and various other things I learned along the way. Another “nice-to-have” thing I have started in parallel is a 2-year degree in management from Narsee Monjee Institute of Management Studies, Mumbai.

Although I spend most of my weekdays & weekends being occupied with practising and learning various aspects of software development & management, I believe that family & true friendship is all that matter.

What to expect from this blog?

  • Articles about Appian low-code design & development, trends, best practices and my day-to-day experiences working with a large team in the IT industry
  • Articles about agile, databases, Amazon web services, project management, time-management
  • Tech reviews of various things I use in my day-to-day life
  • Life as an MBA student while working in the IT industry
  • More personal blogs like this one
  • Guitar lessons (can’t promise but I’ll do my best as I’m rusty!)

I’m just getting this new blog going, so please stay tuned for more. I will highly appreciate it if you subscribe below to get notified when I post new updates & I have also linked my social media. Excited to connect with you guys! 🙂

Kunal Sharda

Improving MySQL Database Performance

Introduction

MySQL is a popular open-source database application that stores and structures data in a way that is meaningful and readily accessible.

With large applications, the sheer amount of data can lead to performance problems. This guide provides several tuning tips on how to improve the performance of a MySQL database.

Prerequisites

  • A Linux system with MySQL installed and running, Centos or Ubuntu
  • An existing database
  • Administrator credentials for the operating system and the database

System Performance Tuning for MySQL

At the system level, you’ll adjust hardware and software options to improve MySQL performance.

➡️Balance the Four Main Hardware Resources

Storage

Take a moment to evaluate your storage. If you’re using traditional hard disk drives (HDD), you can upgrade to solid-state drives (SSD) for performance improvement.

Use a tool like iotop or sar from the sysstat package to monitor your disk input/output rates. If disk usage is much higher than the usage of other resources, consider adding more storage or upgrading to faster storage.

Processor

Processors are usually considered the measure of how fast your system is. Use the Linux top command for a breakdown of how your resources are used. Pay attention to the MySQL processes and the percentage of processor usage they require.

Processors are more expensive to upgrade, but if your CPU is a bottleneck, an upgrade might be necessary.

Memory

Memory represents the total amount of RAM in your MySQL server. You can adjust the memory cache (more on that later) to improve performance. If you don’t have enough memory, or if the existing memory isn’t optimized, you can end up damaging your performance instead of improving it.

Like other bottlenecks, if your server is constantly running out of memory, you can upgrade by adding more. If you run short of memory, your server will cache data storage (like a hard drive) to act as memory. Database caching slows down your performance.

Network

It’s important to monitor network traffic to make sure you have sufficient infrastructure to manage the load.

Overloading your network can lead to latency, dropped packets, and even server outages. Make sure you have enough network bandwidth to accommodate your normal levels of database traffic.

➡️Use InnoDB, Not MyISAM

MyISAM is an older database-style used for some MySQL databases. It is a less efficient database design. The newer InnoDB supports more advanced features and has in-built optimization mechanics.

InnoDB uses a clustered index and keeps data in pages, which are stored in consecutive physical blocks. If a value is too large for a page, InnoDB moves it to another location and then indexes the value. This feature helps keep relevant data in the same place on the storage device, meaning it takes the physical hard drive less time to access the data.

➡️Use the Latest Version of MySQL

Using the latest version is not always feasible for older and legacy databases. But whenever possible, you should check the version of MySQL in use and upgrade to the latest.

A part of the ongoing development includes performance enhancements. Some common performance adjustments may be rendered obsolete by newer versions of MySQL. In general, it’s always better to use native MySQL performance enhancement over scripting and configuration files.

Software Performance Tuning

These methods involve tweaking the MySQL configuration files, writing more efficient database queries, and structuring the database to retrieve data more efficiently.

Note: When adjusting configuration settings, it’s best to make small incremental adjustments. A major adjustment may overburden another value and degrade performance. Also, it is recommended that you make one change at a time and then test. It’s easier to track errors or misconfigurations when you only change one variable at a time.

➡️Consider Using an Automatic Performance Improvement Tool

As with most software, not all tools work on all versions of MySQL. We will examine three utilities to evaluate your MySQL database and recommend changes to improve performance.

The first is tuning-primer. This tool is a bit older, designed for MySQL 5.5 – 5.7. It can analyze your database and suggest settings to improve performance. For example, it may suggest that you raise the query_cache_size parameter if it feels like your system can’t process queries quickly enough to keep the cache clear.

The second tuning tool, useful for most modern MySQL databases, is MySQLTuner. This script (mysqltuner.pl) is written in Perl. Like tuning-primer, it analyzes your database configuration looking for bottlenecks and inefficiencies. The output shows metrics and recommendations:

At the top of the output, you can see the version of the MySQLTuner tool and your database.

The script works with MySQL 8.x. Logfile recommendations are the first on the list, but if you scroll to the bottom, you can see general recommendations for improving MySQL performance.

The third utility, which you may already have, is the phpMyAdmin Advisor. Like the other two utilities, it evaluates your database and recommends adjustments. If you’re already using phpMyAdmin, the Advisor is a helpful tool you can use within the GUI.

➡️Optimize Queries

A query is a coded request to search the database for data that matches a certain value. There are some query operators that, by their very nature, take a long time to run. SQL performance tuning techniques help optimize queries for better run times.

Detecting queries with poor execution time is one of the main tasks of performance tuning. Commonly implemented queries on large datasets are slow and occupy databases. The tables are therefore unavailable for any other tasks.

Note: Consider looking into the data warehouse architecture, which separates production databases from analytical.

For example, an OLTP database requires fast transactions and effective query processing. Running an inefficient query blocks the use of the database and stalls information updates.

If your environment relies on automated queries such as triggers, they may be impacting performance. Check and terminate MySQL processes that may pile up in time.

➡️Use Indexes Where Appropriate

Many database queries use a structure similar to this:

SELECT … WHERE

These queries involve evaluating, filtering, and retrieving results. You can restructure these by adding a small set of indexes for the related tables. The query can be directed at the index to speed up the query.

➡️Functions in Predicates

Avoid using a function in the predicate of a query. For example:

SELECT * FROM MYTABLE WHERE UPPER(COL1)='123'Copy

The UPPER notation creates a function, which has to operate during the SELECT operation. This doubles the work the query is doing, and you should avoid it if possible.

➡️Avoid % Wildcard in a Predicate

The wildcard % stands for zero or more characters. If your query looks like this:

SELECT * FROM MYTABLE WHERE COL1 LIKE '%123'Copy

The expression ‘%123’ includes all values that end with 123. The % sign stands for any type or number of characters preceding, including no characters. The query must now perform a full table scan to test for this condition.

The query scans the indexes, making the query cost low:

SQL query with wildcard at the end

However, doing a search for names using the wildcards, in the beginning, increases the query cost significantly because an indexing scan does not apply to the ends of strings:

SQL query with wildcard at the beginning

A wildcard at the beginning of a search does not apply indexing. Instead, a full table scan searches through each row individually, increasing the query cost in the process. In the example query, using a wildcard at the end helps reduce the query cost due to going through fewer table rows.

A way to search the ends of strings is to reverse the string, index the reversed strings and look at the starting characters. Placing the wildcard at the end now searches for the beginning of the reversed string, making the search more efficient.

➡️Specify Columns in SELECT Function

A common expression is to use SELECT * to scan all of the database columns. If you specify the columns you need, your query won’t need to scan irrelevant columns.

If all columns are needed, there is no other way to go about it. However, most business requirements do not need all columns available within a dataset. Consider selecting specific columns instead.

To summarize, avoid using:

SELECT * FROM table

Instead, try:

SELECT column1, column2 FROM table

➡️Use ORDER BY Appropriately

The ORDER BY expression sorts result by the specified column. It can be used to sort by two columns at once. These should be sorted in the same order, ascending or descending. If you try to sort different columns in a different order, it will slow down performance. You may combine this with an index to speed up the sorting.

➡️GROUP BY Instead of SELECT DISTINCT

The SELECT DISTINCT query comes in handy when trying to get rid of duplicate values. However, the statement requires a large amount of processing power.

Whenever possible, avoid using SELECT DISTINCT, as it is very inefficient and sometimes confusing. For example, if a table lists information about customers with the following structure:

idnamelastNameaddresscitystatezip
0JohnSmith652 Flower StreetLos AngelesCA90017
1JohnSmith1215 Ocean BoulevardLos AngelesCA90802
2MarthaMatthews3104 Pico BoulevardLos AngelesCA90019
3MarthaJones2712 Venice BoulevardLos AngelesCA90019

Running the following query returns four results:

SELECT DISTINCT name, address FROM person
Output of select distinct query

The statement seems like it should return a list of distinct names along with their address. Instead, the query looks at both the name and address column. Although there are two pairs of customers with the same name, their addresses are different.

To filter out duplicate names and return the addresses, try using the GROUP BY statement:

SELECT name, address FROM person GROUP BY name

The result returns the first distinct name along with the address, making the statement less ambiguous. To group by unique addresses, the GROUP BY parameter would just change to address and return the same result as the DISTINCT statement faster.

To summarize, avoid using:

SELECT DISTINCT column1, column2 FROM table

Instead, try using:

SELECT column1, column2 FROM table GROUP BY column1

➡️JOIN, WHERE, UNION, DISTINCT

Try to use an inner join whenever possible. An outer join looks at additional data outside the specified columns. That’s fine if you need that data, but it’s a waste of performance to include data that won’t be required.

Using INNER JOIN is the standard approach to joining tables. Most database engines accept using WHERE as well. For example, the following two queries output the same result:

SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id

Compared with:

SELECT * FROM table1, table2 WHERE table1.id = table2.id

In theory, they have the same runtime as well.

The choice on whether to use JOIN or WHERE query depends on the database engine. While most engines have the same runtime for the two methods, in some database systems one runs faster than the other.

➡️Use the EXPLAIN Function

Modern MySQL databases include an EXPLAIN function.

Appending the EXPLAIN expression to the beginning of a query will read and evaluate the query. If there are inefficient expressions or confusing structures, EXPLAIN can help you find them. You can then adjust the phrasing of your query to avoid unintentional table scans or other performance hits.

➡️MySQL Server Configuration

This configuration involves making changes to your /etc/mysql/my.cnf file. Proceed with caution and make minor changes at a time.

query_cache_size – Specifies the size of the cache of MySQL queries waiting to run. The recommendation is to start with small values around 10MB and then increase to no more than 100-200MB. With too many cached queries, you can experience a cascade of queries “Waiting for cache lock.” If your queries keep backing up, a better procedure is to use EXPLAIN to evaluate each query and find ways to make them more efficient.

max_connection – Refers to the number of connections allowed into the database. If you’re getting errors citing “Too many connections,” increasing this value may help.

innodb_buffer_pool_size – This setting allocates system memory as a data cache for your database. If you have large chunks of data, increase this value. Take note of the RAM required to run other system resources.

innodb_io_capacity – This variable sets the rate for input/output from your storage device. This is directly related to the type and speed of your storage drive. A 5400-rpm HDD will have a much lower capacity than a high-end SSD or Intel Optane. You can adjust this value to better match your hardware.

Conclusion

You should now know how to improve MySQL performance and tune your database.

Look for bottlenecks (hardware and software), and queries that are doing more work than needed, and consider using automated tools and the EXPLAIN function to evaluate your database.

Appian Certification Program

This image has an empty alt attribute; its file name is spotify-badge.svg

Since May 2021 Appian has changed all certifications to be on the new certified developer format which is an all-new way of writing your Appian exams.

They have chosen examity as a vendor to facilitate examinations online & to maintain the integrity of the exam by conducting it in a proctored environment. That means there would be an external person monitoring your screen, webcam and microphone via zoom call for the duration of the exam. This is a very welcome change by Appian since fake practitioners with level 1 & level 2 certifications were becoming a common occurrence.

The cost of all new exams is $200. Practitioners who work with Appian partner organizations are receiving a 50% discount which is automatically applied when you register for exams using your company’s email account linked to community. You can pre-book your slots here.

New Question Types

Appian always used to have single-select or multi-select questions for all their exams. With the latest exams they have introduced two new question types in addition to that.

  1. Arranging in sequence type questions – You will be given a list of options regarding a topic and you will be asked to drag and drop to arrange them in a meaningful and logical sequence to complete this question.

2. Match the lists type questions – In this question type, you will be given a questions list and an answers list. You need to match what is the most suitable answer for each of the question. To match the lists answers can be used once, more than once or not at all. (it will be mentioned in the question).

How To Prepare Using This Blog Post?

I have shared all study topics for Appian associate, senior & lead developer exams. You will find a link with label “Learn” next to each topic which you can click to navigate to relevant Appian documentation and learn more about it.

Associate Developer (ACD100)

The associate developer is a perfect test of knowledge for Appian developers who have recently started on the Appian platform. Ideally, they have attended Appian instructor-led or online training and have some hands-on experience working on two or three training or client applications.

Appian developers who already have 2+ years of experience working on the platform, I can assure you that you don’t even need to study for the test. ACD100 has questions that you will be able to answer just with your practical work experience.

The previous level 1 exam used to be 90 questions to be answered in 60 minutes, so compared to that you will have a lot of time to complete since the associate developer exam only has a total of 60 questions to be answered in 60 minutes.

  • Certification Name: Associate Developer
  • Exam Number: ACD100
  • Format: Single Choice, Multiple Choice, Match the lists, Sequence questions
  • Exam Duration: 60 minutes
  • Exam Cost: $200
  • Number of Questions: 60
  • Passing Score: 62%

Exam Topics (documentation to study each topic is linked):

  • The Appian Platform
    • Use cases for Appian
    • Application structure and objects –Learn
    • Tempo and site user experiences – Learn
    • Various security permissions and access controls – Learn
  • Software Development Lifecycle (SDLC)
    • Understanding of the SDLC phases
    • Roles & responsibilities
    • Events/scrum ceremonies
    • User story lifecycle
  • Data Manipulation
    • CDT – Learn
    • Data Store – Learn
    • Basic SQL understanding
    • How Appian objects interact with databases (verify, write, update, delete and query)
  • Appian Process Modeling
    • Best practices
    • Configuring process models according to business requirements – Learn
    • Troubleshooting issues with process models – Learn
    • Monitoring & editing process instances – Learn
    • Understanding of all the commonly used nodes and smart services in process model designer – Learn
  • Appian Interface Design
    • Design mode & expression mode – Learn
    • Various interface components and their uses – Learn
    • Types of variables – Learn
    • User experience best practices – Learn
    • Understanding of common interface patterns – Learn
  • Appian Records
    • Various types of records and their use cases – Learn
    • Designing record lists, filters & views according to the requirements – Learn
    • Configuring related actions & actions – Learn
  • Appian Expression Rules
    • Good understanding of Appian functions – Learn
    • Creating common & generic expression rules
    • Writing expression rules according to business logic – Learn
    • Good understanding of SAIL – Learn
    • Unit testing and test cases of expression rules – Learn

Video Course

  • Appian Foundations Course – Watch
  • Appian Developer Course – Watch

Practice Test

Take the associate developer practice test to check your exam readiness. This exam has 90 questions and 60 minutes duration. All questions are from the old Appian level 1 exam.

Senior Developer (ACD200)

Senior developers are independent and are able to configure a variety of Appian objects to convert complex business requirements into working pieces of functionality. They understand development best practices and are able to make design decisions, build, test, deploy and maintain Appian applications. They have a deep understanding of relational databases. They often troubleshoot and debug common issues and know how to locate more information if required.

They have hands-on experience on the admin console including DevOps, user management, health check reports etc. They have a comprehensive understanding of BPM concepts and know the common use cases and patterns that businesses use to automate their processes. Senior developers also mentor new Appian developers & stay up to date on the latest release functionality.

If you have been working on Appian for the past 3+ years and have developed a variety of applications including complex ones then you don’t need to study for this test, but it’s always good to revise the concepts you believe you might need more information on.

  • Certification Name: Senior Developer
  • Exam Number: ACD200
  • Format: Single Choice, Multiple Choice, Match the lists, Sequence questions
  • Exam Duration: 60 minutes
  • Exam Cost: $200
  • Number of Questions: 40
  • Passing Score: 65%

Exam Topics (documentation to study each topic is linked):

  • Platform Maintenance
    • Troubleshooting application objects from process monitoring, admin console, logs, performance dashboards – Learn, Learn, Learn
    • Ability to perform a technical review of application objects
    • Configuring various setting and options in the admin console – Learn
  • Relational Databases
    • Designing and implementing complex data models according to business requirements
    • Creating and maintaining DB objects such as triggers, views & stored procedures
    • Creating efficient database structures – Learn
  • Application Design & Management
    • Implementing application development best practices – Learn
    • Deploying applications using compare and deploy, export/import, fixing common deployment issues – Learn
    • Deploying plug-ins, using custom properties file, SQL deployments
    • Read, transform, write relational data
    • Visualize and create end-to-end applications using various design objects
    • Ability to do convert business requirements into user stories
    • Following user experience best practices – Learn
  • Advanced Object Usage
    • Configuring connected system objects – Learn
    • Using third party systems to connect to Appian
    • Creating web API to expose Appian data, smart services, processes to external systems – Learn, Learn
    • Creating complex integrations using best practices – Learn
  • Performance & Scalability
    • Ensuring performance while designing Appian objects
    • Implementing and monitoring data management strategies like process instances archiving/deletion, document cleanups, old rule/version cleanups, test data cleanups etc. to maintain a clean and healthy environment – Learn
    • Identify and fix user-facing performance issues
    • Ability to design process models while keeping the server memory aspect in mind – Learn
    • Perform database load testing, configuring automated testing tools such as Fitnesse, Cucumber, Selenium & JMeter and provide recommendations based on results – Learn, Learn

Video Course

  • Advanced Appian Developer Course – Watch

Lead Developer (ACD300)

This one is NOT easy but that doesn’t mean you can’t work your way towards achieving the highest level of Appian certification. The lead developer exam replaces the Appian Level 3 credential. You don’t need to submit your applications for review or pass an interview with an architect from Appian corporation anymore. Just clearing this exam gives you the certification. Having passed both Appian Level 3 & Appian Lead Developer exams myself, I found latter more difficult than the “exam part” of Level 3 certification. You will need to prepare thoroughly on the topics listed below. Also, having experience working as Appian Lead developer or architect will give you the maximum benefit as you will already be exposed to many of the scenario-based questions that are asked in the exam.

This exam is created by experienced Appian tech leads & architects to ensure each question that’s asked makes you think thoroughly before answering. Focus is given to practical implementation rather than asking for pure theory. You will be tested on platform management, multi-application best practices, advanced relational databases, application load & concurrency, extending Appian, and project & resource management skills.

  • Certification Name: Lead Developer
  • Exam Number: ACD300
  • Format: Single Choice, Multiple Choice, Match the lists, Sequence questions (all questions are scenario-based)
  • Exam Duration: 75 minutes
  • Exam Cost: $200
  • Number of Questions: 35
  • Passing Score: 65%

Exam Topics (documentation to study each topic is linked):

  • Platform Management
    • Implementing advanced application which can be scaled horizontally and vertically – Learn
    • Thorough understanding of DevOps features which include preparing, deploying and debugging issues with deployments – Learn, Learn
    • Deep knowledge of Appian platform architecture and being able to recommend application strategies based on it – Learn
    • Monitor and troubleshoot platform related issues – Learn, Learn
    • Configuring, running & analyzing the health check reports – Learn, Learn
  • Multiple-Application Best Practices
    • Evaluating and designing applications for consistency and reusability – Learn
    • Ensuring parallel development best practices are followed so that developers don’t get blocked or overwrite each other’s changes
    • Good understanding of platform enterprise architecture – Learn
    • Design time management standard across the platform – Learn
    • Implement all admin console settings – Learn
  • Advanced Relational Databases
    • Analyze, execute, implement or improve new or existing database schemas – Learn, Learn
    • Data migration between different systems or environments – Learn
    • Use of EXPLAIN statements to improve the query execution plans
    • Analyze, evaluate and troubleshoot high-volume database structures – Learn
    • Implement advanced database features such as views, triggers, stored procedures, database connectivity, improving SQL query efficiency etc. – Learn
  • Application Load & Concurrency
    • Monitor & troubleshoot all application-based issues
    • Designing data management strategies
    • Plan, perform & evaluate load and performance testing – Learn
    • Evaluate and design optimistic and pessimistic locking mechanisms – Learn
  • Extending Appian
    • Design and troubleshoot advanced integrations – Learn
    • Create advanced web API to connect and communicate with external systems – Learn
    • Strategize and optimize advanced document generation – Learn
    • Differentiate and configure various authentication mechanisms like SAML, LDAP or Appian native authentication – Learn, Learn, Learn
    • Evaluate and use existing plug-ins and recognize when to develop custom plug-ins for custom components, customer smart services, custom functions etc. – Learn
  • Project & Resource Management
    • Ability to interpret client requirements and converting them into user stories or breaking them down into technical tasks for the development team
    • Coordinate and lead activities which engage multiple teams to make decisions, extend or receive help and unblock development teams
    • Thorough understanding of agile and scrum concepts such as ceremonies, sprints, capacity planning, user stories and ability to handle day-to-day project operations and scenarios – Learn

WhiteHat Jr. Scam

This image has an empty alt attribute; its file name is spotify-badge.svg

The Covid-19 pandemic induced mass closure of education institutions started a golden era for ed-tech startups worldwide by forcing students to learn from home. With venture capitalists eager to bet their money on the sector, ed-tech startups are undeniably on a roll.

As WhiteHat Jr was acquired by Byju’s for $300 million, the ed-tech startup became part of the multi-billion dollar online education empire. WhiteHat Jr, which provides coding classes to kids, has invited the fury of parents and tech experts in the recent times because of their strategy. Especially around marketing tactics & policy against criticism on social media platforms.

Several industry professionals also seem annoyed by the company’s poor tolerance for negative feedback and have strongly voiced their criticism on social media platforms.

For instance, Pradeep Poonia, a software engineer with Cisco, says his social media account was repeatedly suspended when he tried to post feedback about WhiteHatJr. “WhiteHat Jr and Byju’s are misusing their position, for more than a month I have been trying to post about WhiteHatJr. On whichever platform I go to, either my accounts get suspended or my posts get deleted” he wrote in his LinkedIn blog.

According to Poonia, his two Reddit accounts have been permanently suspended, besides one Twitter account & two YouTube accounts are temporarily suspended. Poonia says in his blog, “WhiteHat Jr isn’t letting me post any review about their platform. I started with a video titled ‘Who is Wolf Gupta?’. This particular video has been removed 3 times by now. @WhiteHatJr Why? We all know this kid is fictitious, does not exist. His age keeps on changing between 9-14 y/o. And his salary between 1.2 crores, 20 crores, and 150 crores. To some of you, it might be a normal marketing gimmick but most people would agree that this is not acceptable when target consumers are 6-year-old kids! Such ‘White’ lies are not allowed.”

They can’t seem to decide the yearly salary and the age of imaginary kid named “Wolf Gupta”

Their marketing adverts use fancy buzzwords like space tech, machine learning, deep learning, regression and driverless cars just to make it look like they are teaching very advanced things to kids. Trust me, it is all a gigantic scam. They are running this business not to keep the kids ready for the future but they want to pocket all the millions of dollars that come in revenue from aggressively selling their products. They have developed a very unique marketing strategy that allows them to fool lakhs of parents into thinking that their kid is in the top 20% of the people who took the trial class and sends the parents a certificate of accomplishment for completing a training class on WhiteHat Jr.

The reality is that the certification has zero value. Your kid is not going to become the next Bill Gates or Elon Musk by just learning how to program pre-built apps in templates borrowed from code.org. And the certifications/business cards or the top 20% e-mails are just done to make you and your kid feel special and they are manipulating with your mind in this way to compel you to spend your hard money in order to teach your kid programming thinking that he/she will become the next Sundar Pichai.

This ad is basically saying “If you kid doesn’t start coding at the age of 7 years. He’ll never be Bill Gates”

They try to use examples of people who have made it big in the tech industry to fool you into thinking that your child can become a multi-billionaire just by learning how to code. Then how are there so many unemployed computer science engineers in India? A mere coder cannot make even a million, unless he/she is a literal genius. It is the hard reality.

The mode of teaching also isn’t very special either. They claim that they have online 1:1 coding classes with an interactive experience. Trust me, they don’t. There are so many honest reviews that are removed and replaced with copy-paste fake reviews on Google play store & Apple app store. They teach coding from a pre-written script but still tell tall tales of IIT alumni creating their syllabus.

Even their syllabus and the tools they use to teach are not original. Let me tell you the truth: Code.org is an open, free of cost & easily downloadable application created by a team based in USA. Their free platform has been “borrowed” by WHJ. There are many such FREE platforms to learn how to code. Like Khan Academy, Code Academy etc. Full article here.

You were impressed when Shikhar Dhawan came on screen saying that his son codes on WhiteHat Jr. Think again. WhiteHat Jr. is one of those few ed-tech companies in the Indian startup ecosystem that has a ton of institutional funding from prominent VC firms (well into the tens of millions of dollars) so they can afford to advertise a lot and burn cash for marketing their product and it wouldn’t make a dent in the company’s cash.

The actors/celebrities and sportspersons are paid in the lakhs, if not crores to proudly (and fakely) say that their kid is a champion because he/she learnt coding on WhiteHat Jr. And in today’s modern age of capitalism, who wouldn’t want to do something as long as they get money, right? Don’t fall prey to these misleading advertisements.

They have marketed themselves very cunningly and skillfully. They have made it look like your child is missing out on visiting Silicon Valley or that your kid will not be able to work for NASA if he/she does not take the coding classes. That inherent feeling of peer pressure would eventually make the parents spend their own hard earned money due to the fear of missing out (FOMO). They are manipulating your thought process in hopes of selling the course to make a hefty profit.

They say that they recruit only top 0.01% of teachers right? No chance. There was a viral video that showed how the teacher called cloud storage “open space in the sky where data is stored” and another one showing how the teacher had no idea if she was working in Java or in JavaScript. On being asked what the difference was between the two, she claimed that the former was the language and the latter was the code and that the “pages you see” are JavaScript. This is the 0.01% quality of education being taught to little, gullible children. They have an exploitative mindset and they want to loot poor, innocent people in the pandemic and are taking advantage of the already prevailing stress and caution.

Their teachers are just puppets they use to deliver the pre-written script of the class. They’re not from software field nor do they have any coding experience.

They claim they will teach advanced applied tech and space tech to 10th graders. So are the real rocket scientists at NASA fools? They have devoted their life to rocket science or whatever research they do, and these people compress all of that into 144 classes? Excellent. So believable.

Now is the time to make your child enjoy their childhood, not force him/her to code. Please DO NOT pressurize your kid to do anything. Let them develop physically and do well academically before learning such complex computing concepts like Machine Learning, AI or even things like driverless cars.

Your 7 year old doesn’t need coding lessons to succeed in life. No investor will be fighting at your doorstep to buy his/her app. They need to go out play a real sport with their real friends & not with bots on a mobile phone.

This blog can be translated into Hindi or other Indian languages by using the Google Translate option

CES 2021: Best Reveals

This year’s CES (consumer Electronics Show) isn’t in Las Vegas. The show was moved online due to the ongoing Covid-19 pandemic. But even a global health emergency can’t stop the march of consumer technology. There are still plenty of gadgets, apps, electric vehicles, smart-home appliances, brain-training headsets, and Alexa-powered workout gear to tell you about.

To find the new tech innovations this year, attendees didn’t wander the millions of square feet of the Las Vegas Convention Center and surrounding facilities, but instead watched streamed presentations, combed through hundreds of exhibitors and, of course, heard plenty of pitches from entrepreneurs and marketing folks eager to keep us in the loop.

That means the attendees weren’t able to touch and feel the innovations like in years past. Still, it hasn’t stopped CES 2021 from bringing the craziest, coolest and most innovative gadgets that will be released this year.

Sony VISION-S 

Sony unveiled its first full-electric concept car that greets you as soon as you approach the vehicle. It features 6 dashboard touch screens where you can access all of the media controls including things like Sony-owned movies, music, and games. Speakers are also embedded into each seat’s headrest. If that’s not enough, it comes with more than 10 Sony image sensors embedded throughout the vehicle, alongside a host of other sensors like LIDAR, and ultrasonic. The largest audience showing interest in Sony’s concept car is a group of “Hardcore Gamers”.

Pimax’s 8K VR Headset

Consumers have been waiting a long time for the Pimax 8K X — 14 months, to be precise. When it launched on the popular crowdfunding platform in late 2017, it boasted lofty specs and big ambitions, many of which sounded like wish-list items than something actually deliverable.

Yet, at CES 2020, Pimax delivered. The impressive headset, which now retails for a cool $1,300, features twin 4K displays and a 200-degree field of view, allowing for a better sense of peripheral vision and minimizing the claustrophobia many experience with VR. Yeah, it’s a behemoth rig and requires an insanely powerful PC to operate, but if you’re looking for the most lifelike VR experience to be had, the Pimax 8K X is your best bet.

Samsung Bespoke 4-Door Flex

If you’re the type of person who stares blankly at the contents of your fridge trying to figure out what you can make with what you already have, a new Samsung fridge is here to save you. 

The latest version of the Bespoke refrigerator features changeable panels that come with a choice of colors and materials that made the original a success, allowing consumers to adjust their fridge for form and function. The new 4-Door model, available in North America this spring, also includes a brand-new Beverage Center™, which gives quick access to a water dispenser and an automatically-filled water pitcher. The 4-door Bespoke also comes equipped with a Dual Auto Ice Maker which makes not only regular cubed ice but also smaller ‘ice bites’ to suit different preferences for cold beverages.

The technology even tracks expiration dates, so you don’t have to worry about wondering if the mayo is bad. And for those with specific diet preferences like gluten-free or vegetarian, you can customize the platform to incorporate them. 

LG’s Latest 4K Projector

LG’s laser projection tech is among the best around, which is why I’m excited to see its brand-new Cinebeam projector in person. In addition to offering excellent color accuracy, it features LG’s WebOS interface, AirPlay connectivity, and WiSa and Bluetooth connectivity (in addition to HDMI eARC) for audio. Needless to say, this should be one of the easiest projectors to get an image to and sound out of. It’s also capable of massive images: It will fill screens of up to 300 inches, for a truly cinematic experience.

The new LG CineBeam HU810P 4K laser projector is launching off the back of the CES 2021 expo, with the next iteration of LG’s accomplished projector range landing on January 18.

It’ll work both in small and large homes, then, and allow some wiggle room for those who tend to move their projector between different rooms.

Sony Airpeak Drone

Sony is getting into the drone business and the company had first revealed its Airpeak drone a couple of months ago but now, during CES 2021, the company showcased it.

The Sony Airpeak drone is touted to be the smallest drone capable of carrying an Alpha-series camera. The company reveals that it is specially designed for video content creation and professional photography.

The drone will be equipped with an Alpha mirrorless camera to capture high-quality images and videos. As shown in the image below, the aircraft features a rectangular central body with a gimbal. The legs retract upwards after the drone takes off to allow the camera to rotate 360 degrees. Built with a quadcopter design, each of the arms sports a propeller, a motor and rotor.

Panasonic Lumix BGH1

Panasonic’s new Micro Four Thirds video camera could become the next go-to device for filmmakers. Building off much of what made its GH series cameras popular in the first place—high quality video, low image noise levels, and support for industry-standard codecs and gamma curves—the BGH1 is aimed squarely at video pros. It’s small, lightweight (under 18 ounces), and screen less. The expectation is that you’ll hook it up to an external monitor through the full size HDMI output. That gets to the heart of the BGH1; its modular design means you can build it out the way you need it to be. The box-style camera is meant to compete with the likes of the Red Komodo and the Hasselblad 907X, both of which have similar form factors but cost nearly three times as much. To be fair, those cameras have larger sensors than the BGH1, but Panasonic is betting that for many filmmakers, it’s good enough. Netflix at least is on board; the company is reportedly sending the BGH1 out to many of its show-runners so they can start shooting with it.

Hex Home Security

Security cameras do a great job of spotting intruders—provided they step into the camera’s field of view. The Hex Home Security system from Origin Wireless can sense a burglar no matter where they move inside your house. A Hex Command Hub and Hex Sense plug-ins blanket your home with Wi-Fi radio waves and then use artificial intelligence to analyze how those waves are disrupted by people walking around. If you’re not home, the Hex Sense units will sound an 80dB siren and the system will send an alert to your smartphone via your Wi-Fi network. You can tune the system’s sensitivity so that your pets won’t set it off and trigger a false alarm. Origin says it plans to offer an optional but inexpensive professional monitoring service plan that will dispatch the police if you can’t be reached after an alarm is tripped. A kit adequate for a 1,500-square-foot home will arrive this spring for $180.

Noopl Hearing Enhancer

Hearing loss is no joke once you hit the magic age of 40, but a new gadget debuting at CES could make for a more effective alternative to a hearing aid (or simply cupping your ear). Equipped with technology licensed from the National Acoustics Laboratory in Sydney, Australia, the Apple MFi Certified Noopl plugs into the Lightning connector on your iPhone or iPad, and it uses a triangular array of three beamforming MEMS (microelectromechanical system) microphones and a head-tracking system to amplify the sounds that are coming from directly in front of you, while also screening out background noise. Designed to work with Apple AirPods, the $199 Noopl can also be used with any other headphones or microphones, provided you manually control the direction of the microphones using the Noopl app for iOS (an Android version is in the works too).

LG’s Rollable phone

LG teased its Rollable phone yesterday at the Consumer Electronics Show, and now the company is confirming it’s a real product that will be available in 2021. The LG Rollable has what the company calls a “unique resizable screen” that extends from a phone into a small tablet display. The screen slides in and out of place to provide a bigger screen area.

LG is working with China’s BOE Technology Group on the rollable screen technology. LG has not yet confirmed what display tech the Rollable is using, or any details on the different display sizes.

Samsung Bot Handy

Robots are a common sight at CES events, and companies simply won’t stop showing off their robo-tech. This year at CES 2021, the best robot we came across is Samsung’s Bot Handy, It’s an upright robot with a rolling base, and it has a long mechanical arm equipped with a clamp to pick things up. 

The Bot Handy is designed to help with house chores, like cleaning up messy rooms, picking up and throwing away trash, and putting dirty laundry into washing machines. It’s even delicate enough to put dirty dishes into the dishwasher. But, why stop there? The Bot Handy will truly prove its worth when it pours you a glass of wine. Good robot. 

To perform these complex tasks, the Bot Handy relies on AI and delicate mechanics to apply an appropriate amount of force with its clamp.

The Bot Handy is still in development with no definitive price or sales date at the moment. However, Samsung will have its smart robo-vacuum, called the JetBot 90 AI+, available this year. It’s essentially a smarter and better vacuuming robot that doubles as a travelling security camera. Unfortunately, we don’t know how much the JetBot will cost yet, or exactly when it’ll be released.

Razer Project Hazel

CES is always chock full of wearable technology and wellness gadgets, but the COVID-19 pandemic has put health in focus more than ever in 2021. One of the most promising devices at this year’s CES is Razer’s Project Hazel, which aims to fix many of the shortcomings and inconveniences that come with wearing masks today. 

Project Hazel is an N95 respirator prototype that comes with a special UV light charging case for disinfection, a built-in microphone and amplifier to make it easier to speak loudly while wearing the mask, and clear design so that others can actually see your mouth when worn. And of course, in typical Razer style, the mask also lights up automatically in the dark.

Mercedes-Benz MBUX Hyperscreen

There were plenty of futuristic car tech unveiled, but most were more fantasy than reality. One that is actually coming is Mercedes-Benz’s next-gen vehicle infotainment system, the MBUX Hyperscreen.

The highlight is a high-resolution 56-inch OLED display that spans across the entire dashboard. Technically divided into three components — digital gauge for the driver, a central 17.7-inch touchscreen, and a screen for the front passenger — the Hyperscreen incorporates artificial intelligence to help the driver adjust controls without taking hands off the wheel or eyes off the road. While such telematics aren’t entirely revolutionary, the Hyperscreen digitizes nearly every control — something we will start to see more and more in new cars.

The MBUX Hyperscreen will debut in the all-electric Mercedes EQS this spring.

Burnout in Software Development

We often spend our time complaining about how screwed up software development is and how other programmers didn’t know what they were doing and how managers piss us off.

I want to share with you how I think many of us lose hope as software developers and why there is hope out there for you. You might have to be open to some things that most people don’t want to tell you because they just want to go along for the ride of being just as pissed off and frustrated as you are.

I want to help you have a sustainable career in software development where you don’t get burned out, you don’t let other people who don’t understand software development push you around and you can just make sure you have a long and healthy career.

Causes of Burnout

1️⃣ Forced to Cut Corners

We’re asked to do low quality work and rush best practices just to make sure we hit original deadlines and when we get close to that deadline we inevitably realize that it’s gonna take us longer than we thought. If you’re anybody who’s been programming or doing software development whether you’re a designer or UX or any discipline related to software development you know that estimates in software development are highly improbable to hit.

It’s not that people aren’t good at estimating it’s just the reliability of estimates is bad and if you work at a company that doesn’t understand that and you get to a situation where you realize the work is gonna take longer most companies that don’t have a healthy tech culture they’re gonna pressure you to hit that deadline. Then usually what we have to do is a compromise on what we know is right for the code, we have to write low-quality code, hack things, shortcut or maybe skip unit testing, not follow a good set of design patterns just to rush to it and hit that deadline and I think when you’ve done that enough times it’s so frustrating you can completely lose hope in your job.

2️⃣ Cognitive Overload

Our job is already so hard to keep track in our head, different functions, languages, classes, design patterns, the structure of our architecture, code management, best practices and all the moving pieces and dependencies with the business and then we’ll have people who aren’t programmers at our company that ask us to attend endless meetings, use three different time-tracking software, follow all these processes that are on top of this complexity that we’re already dealing with and I think when we’re just overloaded with too much information that we have to understand it’s really easy to lash out and get pissed off at other people and I certainly have many times and I think that can cause us to lose hope.

3️⃣ Low Perception of Value

When other people because our work is somewhat opaque to them they don’t understand how complex the work we do is there’s a low perception of value so it’s a common thing I mean there are memes all over the internet about this where when a user or somebody who’s even a project manager or a product manager or a software company you know looks at let’s say the user interface of an application your company’s building or they look at the API for some machine learning software you’re building they just see the surface and they know there’s code back there but they don’t know how much code is back there they have no idea how complicated it is like you and I know and I think what that tends to do is it creates this perception from the other person that the work that you’re doing behind the scenes isn’t as hard as we know it is.

We do this same thing to non-technical people, we look at them and think to sell the software or to run the company or to manage a project or a product that’s not nearly as hard as my job is and when we have this disconnect where the non-technical people and the people who are technical or programmers when we don’t respect each other because we just look at basically how much we think the work is difficult based on our limited understanding of it.

4️⃣ High-Income Forces Seeking Deeper Goals

This is probably going to be unpopular but you need to hear it as many software developers myself included we make a lot more money than many other professions very early in our career. If you start making a lot of money and all of a sudden many of your financial dreams are fulfilled you get to drive the car that you want, you get to live in the apartment or the house that you want, you know you can get married, you can take trips, you buy all these gadgets, you’re able to buy nice new clothes and guitars and things like that very early. I think as programmers we reach that level in life where we have most of our needs met and so we then realize you know what I can keep making more and more money, I can keep getting promoted and it’s not going to fulfil me and we’re suddenly challenged with why am I here what’s my purpose what am I supposed to be offering in the world? is all I’m here for just to write code and make money and purchase things?

I think when we fall into consumerism and when we make a lot of money and just use that acquisition of money and acquisition of material things to drive us, we can feel empty inside quickly. So if you’re losing hope because you’re making a lot of money know that it’s great to make a lot of money but there may be more to your career into your life than just money and that’s something that’s gonna be challenging for you as a software developer.

5️⃣ Learned Helplessness

You’ve might have heard of this concept called learned helplessness. There was an experiment done years ago where there was a ladder in a cage and a whole bunch of monkeys in it and a banana at the top of the ladder. Every time the monkeys rather climbed up the ladder and they tried to get to the banana they would spray the monkey with water. So the monkeys learned when they tried to go up the ladder and try to get that banana, they were gonna get sprayed. Eventually, when somebody went to start to climb the ladder to get the banana the other monkeys would grab that monkey and pull it down and not allow it to even try to get the banana because they had learned they were helpless and don’t have a chance of getting the banana as they we’re just gonna get sprayed hard with water and knocked off the ladder.

The interesting thing about this experiment is you could then take one of the monkeys that don’t bother climbing the ladder anymore out of the cage and put a brand new monkey in there and he would very quickly learn without even trying to climb the ladder to pull other monkeys down because he saw other monkeys do it and I think this is what happens to us as software developers. I see sometimes fresh grads right out of college they come into a software company and they start to pick up the attitude and the negative sort of like misery loves company attitude and they just behave the same way as other veterans in software development behave because that’s just what they see. When we get around a group of people that are miserable and they’re all self-identifying as programmers we feel like to fit in, it’s easier for us to just act the same way.

What to do About it?

1️⃣ Say NO with Grace

First thing I think that’s important is to learn to push back against people who give you unreasonable requests. You will always have someone whether it’s a manager or a tech lead or anybody that’s going to ask you to do some development that you know is gonna cause a problem. The common excuse they give you is I don’t care you need to get it done by this date no matter what even if that means you need to change the code quality. You cannot allow people to do that, you need to have the will and the courage to say look I know this is gonna create a problem for the product and gonna be a disaster if you want to continue to do this I’m not going to be the one to help you do that. If you get threatened with being fired you can just go okay well let me think about it and then go to HR and resign if you have to. I think many of us we let ourselves be bullied into situations and let the code or the quality of our deliverables be compromised because we don’t dare to just stand up to people that don’t know what the hell they’re talking about and we are worried we’re gonna lose our job.

You know there are so many open programming jobs out there you don’t need to worry about that even if you quit and you have to explain to another employer the situation don’t you think it would be better if you’re in an interview and you can be honest with that company you’re interviewing at. You may say that the company was asking me to compromise the quality of the product in a way that was gonna cause the company to have financial problems and I didn’t agree with it, so I decided to walk away. So, whatever you can do to learn to just stand up for yourself and you don’t have to be a jerk about it but just don’t be pushed into compromising the quality of your work.

2️⃣ Communicate Uncertainty

Everybody is addicted to certainty everybody wants to think they can predict everything that’s why we go out and we get insurance to think well I’ll just pay some money and then if any disaster happens to me, they’ll cover it well. Every time I write code or every time I work, something comes up and I couldn’t predict it and then I get worried like oh my god they’re not gonna think I don’t know what I’m doing because all the sudden now I have something about the work that happened that I couldn’t predict. As I’ve gotten older have gotten much better at just telling people I can’t agree to commit to that yet or I don’t know enough about that to be able to tell you that we’re gonna be able to hit that deadline and if people say things like well you need to come up with a number anyway it doesn’t matter if we don’t have the requirements. Sorry no that’s not how software development works you’re not developing the software I am this is my career and I care about the output of this if you’re asking me to compromise that because you want to have certainty. You want me to agree to something so you can walk away from this meeting and feel good that I’ve committed to you on how long something’s going to take.

You don’t have to be a jerk about it but you need to be firm, you need to let people know you can’t force me to agree to an amount of work in a deadline that I don’t have enough information on and I think when I’ve been able to talk to other people and set this expectation with them in a kind way, in a way to help them understand look I’m telling you this not to be a jerk I’m telling you this because I want you to look good I don’t want you to go commit to your boss and then have to look bad because you told them it was gonna take a certain amount of time and it took way longer.

I think if you can get to a point where you’re able to push back anytime somebody tries to get you to agree to certainty and just be more honest and open with people when you’re like I don’t know how long that’s going to take. I don’t know how complicated that is or you haven’t given me enough requirements. I’m sorry I need more help with that you’re not gonna get pushed into a situation where you work overtime you lose hope and get frustrated.

3️⃣ Ask for Help Earlier

I think as we develop skills in software development, we kind of get a big head we get really smart around a set of frameworks or technologies and we get experienced. It doesn’t matter how long we’ve been doing it you might have experienced this yourself too we hit these brick walls where we realize oh there’s a part of this project that’s more complicated but maybe I’m an architect or I’m a lead or I’m a director or you know some big title at a company and you kind of get this feeling like I’m not supposed to ask for help there’s something wrong with me asking for help. I think that’s just developing software it doesn’t matter what discipline you’re in you need to get comfortable with asking for help because if you don’t, all you’re doing is putting yourself into a dangerous situation where you haven’t let whoever you’re committing that work to know that you’re actually in trouble.

This is hard as I can take it a lot of times to heart like a blow to my ego like you know what if I tell them I need help and they think there’s something wrong with me and they’re not gonna think I’m as smart. That’s not true, you need to if you’re gonna continue to have hope in your projects and not fall into despair over the frustration of it just be able to ask for help without worrying about other people and what they think about you

4️⃣ Develop Empathy

Develop empathy for other people and by this, I just really mean stop looking at other people around you like they have to work the same way you do like they have to talk like you do like they have to care about the same things or think that the same programming patterns that you do. I think when we release people of the obligation to behave exactly like us we respect them we treat them as individuals and they’re gonna treat us the same way.

I’ve been in this situation many times where there’s this feeling where everybody has to act like they’re gonna get the work done at the same speed. They’re gonna use the same coding patterns, they need to write the requirements the same way, they need to track their time the same way. It just causes us to feel like a robot but people aren’t like that we’re much more complicated than a computer. The more you can just let go of that false belief that I’ve had many times in my career that everybody else is the problem if they aren’t the same and recognize that everybody’s different I think it’s gonna help you have hope without having just an unfair set of expectations that’s never gonna get mad for you. You’re just going to continue to get let down all the time if that’s how you expect people to be.

5️⃣ Surround Yourself with Positive Developers

If you want to find software developers or programmers out there who want to post memes making fun of the system or at each other or make fun of other people’s work. You’ve got a multitude of people out there that will be happy to join you along and you can just be another voice that’s part of that but if you want to be happy and you don’t want to lose hope and you want to not spend the rest of your career pissed off about your job and where it’s going you have to refuse that.

You have to care about yourself more than just being accepted by a large group of people. So, if you are in a place where you’re losing hope I encourage you to go try to find more positive people, try to find people that maybe have been through a really hard time in their career and they’ve been frustrated but now they don’t have to be a victim to this negativity, don’t have to be a victim to the fact that everybody else wants to just moan. Surround yourself with people that can build you up and lift you and help you have some hope again.

Overcoming Imposter Syndrome

Imposter syndrome is a psychological phenomenon in which people are unable to see their own accomplishments, dismissing them as luck, timing, or as a result of deceiving others into thinking they are more intelligent and competent than they believe themselves to be.

Whether you’ve just begun your journey to learn how to code or you’ve been paid to code for many years, you can and (likely) will face imposter syndrome. I’ve been working in the software industry for more than four years now and I still face imposter syndrome often!

The nature of software development is fast-paced, fluid, and always in flux. It’s what makes building software so challenging, interesting, and fun. But that also means that you’re constantly faced with things you don’t know. And even the things that you don’t know (and everyone says you “need to know ASAP”) are changing before you can even start to know them.

So, you’ll need some ways to overcome that feeling of being an imposter. Here are a few ways that help me:

Find a Mentor

This one ain’t easy but it’s one of the things that most helped me get through my early days as a Developer. Preferably, your mentor is someone who is more experienced than you in software development or has worked on various software teams, i.e. in QA, Product, Design, Development etc. A mentor can really help you get over the many humps you face early on. They don’t necessarily have to help you get over those humps by coding with you, but they can help give you perspective and guidance on your progress.

Here’s an awesome post on how to find a coding mentor.

Find Your Peer Pairs

Form a “peer pair” with someone who is going through what you’re going through. It can be immensely helpful to be able to communicate your frustrations, failures, victories, or even just the day-to-day. With a peer, I have found that you can be more open without worrying about how they may view you. And more importantly, you can listen and learn from what they’re going through.

There’s a lot of fellow “newbies” out there in the developer community (check out the appropriately-titled CodeNewbies community) and everyone is a newbie in something. There’s a lot to learn about the different ways we all approach learning. So, find someone with whom you can share your learnings.

Surround Yourself with Smarter People and Take Advantage of it

Company of intelligent people is like a vast ocean, there is so much to learn from them. Having them around awakens a desire to be like them. And that desire pushes us to learn new things, to improve or to be like them. In their company, our pace of growth increases, and sometimes it helps in surpassing our limits as well.

Humans have a tendency to observe others, their actions, style, behavior everything – and this tendency applies to both the situations: When we are surrounded by intelligent people, and when we are surrounded by less intelligent people.

We observe their actions, gradually start feeling comfortable in their company, and sometimes subconsciously start behaving like them. So, if we remain surrounded by intelligent people there will be a greater possibility that it will have a positive impact on our behavior as well. So where on one hand, company of more knowledgeable people provides an extension of our personalities, on the other hand company of less knowledgeable people limits our growth and places boundaries on our intellectual development.

Be Curious

Once you’re surrounded by smart people and challenging problems, be curious. Apprenticeship Patterns by Dave Hoover and Adewale Oshineye is a great book and a must-read for all developers. It treats software development like the craft that it is and paves your long journey from an apprentice to master with practical patterns. One of these patterns is “Exposing Your Ignorance”.

“The most obvious way to expose your ignorance is to ask questions. This is easier said than done, particularly when the person you’re asking has assumed that you already know the answer. Press on! Sure, you could protect your pride and take less direct routes to obtain the required knowledge, but remember that your road to journeyman will be shortened by taking the most direct route available.

With practice and time, you will find that asking direct questions to the most knowledgeable people on your team will become second nature. While you are exposing your ignorance, you are also exposing your team to your learning ability. And sometimes they will gain a new clarity about their own knowledge in the process of answering your question.”

— Chapter 2: Emptying the Cup, Apprenticeship Patterns

Pick Something and Practice it, Regularly

Earlier this year, I started learning Robotic Process Automation. So, I spent my free time learning about the concepts, tools, doing research, following blogs & meeting experienced people in the RPA industry. I could see my own conversations around RPA evolve over the course of my learning period (which is still ongoing). By the end of 4 months, I had delivered a talk on RPA within the company, built some complex bots using various tools & had written a blog post on RPA

I was fascinated by software robots and the new set of capabilities it provides to solve real life challenges. So I picked it, stuck with it, and deliberately practiced it.

Make Decisions Consciously

Oftentimes, when faced with an overwhelming codebase, it can be easy to fall into the trap of programming by copy-pasting code, following existing patterns, and “making it work” without thinking through your choices. Try not to fall into this trap.

When you’re writing code, make sure you understand how your code works and why it’s structured in the way that it is. Remember, I’m not saying that you shouldn’t ever copy-paste code. I’m saying that, if you are copying code, it’s important to understand the code that you’re copying because you are implicitly making all the decisions that were made by the original author(s) of that code. And you are also making an explicit decision not to refactor the code so that you don’t have to write it.

Basically, when someone asks you, “Why did you build it this way?” — try not to respond with, “Well, this other code was written that way.” This may mean that you won’t write a solution as elegant or reusable as a more experienced colleague but, if it meets the requirements of the task, that’s okay! Over time, each decision you consciously make, articulate, and learn from will help you make better decisions in the future.

Be Aware When You’re Experiencing Imposter Syndrome

Awareness is a big step in actively combating imposter syndrome. For me, self-doubt creeps in as I’m implementing a feature and it starts to take longer than it “should.” As this happens, I start to stress about how I’m being viewed by my co-workers and managers and this usually further delays the feature. It’s a vicious cycle and the only way to get out of it is to realize that I am stuck in this circle. I remind myself:

  • The feature will take as long as it takes me.
  • I work hard and care about the quality of the code I produce.
  • I have asked for help when I’m stuck. If not, I can and should.
  • I have communicated my current status to the stakeholders of my feature.
  • Remind yourself of your accomplishments or a moment in the past how you tackled a similar situation

Read – The Imposter’s Handbook

The Imposter’s Handbook is a great resource for *any* programmer, self-taught or otherwise.

That’s it

Now go forth and fight those battles against self-doubt, insecurity, and imposter syndrome. Remember, there’s a big difference in how you perceive yourself and what is reality.