Are you ready to become a manager?

Are you ready to become a manager?

Are you considering taking the leap from Engineering lead to a management position? Managing people is indeed a dramatic change in career path and requires a different set of skills than needed for a technical lead role. When I recall some of the hardest management experiences I ever had early on in my career it was always the people aspect that challenged me the most and this is one area where you just can’t have enough experience.

As an engineer, you are responsible for technology: for your features’ design, execution, and delivery. In a management role, you are responsible for people and your prime job is to empower and enable your team, set strategy for the team, unblock folks, communicate with stakeholders, enable sales, pre-sales, and proofs of concept, support technical services and customer-facing teams, and––above all else––manage people’s careers.

As a leader, you are the star performer, stepping up and helping the team put out fires, but as a manager, your job is to put others in your team in the spotlight. You are in a coaching role and that comes with a lot more responsibility. As they do well, you will get credit for leading them well, and this will shift your focus from coding to the most time-consuming aspect of being a manager—people management.

After a decade I continue to learn and grow, with new experiences every day dealing with situations that feel unique, yet morphed from situations I’ve seen before. Though I have been blessed with great mentors throughout my career, there have been occasions where I fumbled. One thing I quickly learned was to own up to my mistakes, study them, and learn from them.

As a new manager you are eager to succeed, and when a person in your team doesn’t pull their weight or messes up, it is very tempting to make an example of them, make them the martyr, and let them face the consequences in the name of accountability.

Learning to avoid this dynamic was a turning point in my career, and helped me to be a leader and not a boss. This is not a one-time opportunity and this will happen way too often as you become a manager. It will be hard to take the bullet for the team in front of your own manager, especially for folks that you can clearly see could have been proactive and prevented a fire or worse procrastinated in putting it out and let more damage happen.

You owe it to everyone on your team (not just your friends) to be a neutral, unbiased, trusted resource. For the rest of the organization, accountability stops at you. Your job is to guard your team’s back. Something no one told you: from time to time, you will need to not only take a bullet for your team but make tough unpopular calls and—an unfortunate fact of life—it is lonely as you move up the ladder.

Why do it?

Simply put, you have more influence, and you can enable people in their pursuit of a meaningful career! It’s a truism that people don’t leave jobs, they leave managers.  How well your direct reports perform is a reflection of your own effectiveness as a leader. Your scope of influence increases dramatically when you move from individual contributions to the head of an entire team.

Sure, as a star performer in the team you make significant contributions to the team’s wins, but as a coach how the team plays—its camaraderie, unity, coordination, strategy and execution rest on your shoulders. In The Power of Small Wins, a 2011 Harvard Business Review article, the authors recount the famous exchange between Steve Jobs and John Sculley over Sculley’s future with Apple:

In 1983, Steve Jobs was trying to entice John Sculley to leave a wildly successful career at PepsiCo to become Apple’s new CEO. Jobs reportedly asked him, “Do you want to spend the rest of your life selling sugared water or do you want a chance to change the world?” In making his pitch, Jobs leveraged a potent psychological force: the deep-seated human desire to do meaningful work.

As a manager you are being entrusted to enable, empower, and lead others to do more meaningful work than you could as an individual contributor.

Tips to help you succeed in a managing role

As anyone with administrative privileges knows, with greater power comes greater responsibility. You will be in situations to make tough decisions, controversial ones—you may even have to fire an employee reporting to you. Build trust by being honest and sharing professionally what you can. Moving to a management position will affect your friendships with your colleagues. As I said before, it’s lonely as you move up the ladder.

It is very important to be emotionally intelligent. Practice self-awareness and being aware of your emotions and how they affect your handling conflict or viewpoints you don’t agree with. Practice self-regulation: what works to calm you down when you’re angry and what helps motivate you when you’re down and depressed. Practice empathy with your family and close friends, which will improve your social networking, communication and leadership skills.  As a manager, you will have access to a lot more vital information and you must stay professional and respect boundaries. You will need a support structure and for that you need to anchor with your family and friends and not take them for granted.

Over the years I have learned that the simplest way to establish mutual trust and respect between me and my team was by being as honest as I could be. I had to be conscious to not complain and whine about my own issues to my old teammates anymore.

Being promoted to management is a huge milestone that directly acknowledges the faith of your senior management in your ability to lead. In my own case, as an early manager, I was very conscious of not reaching out to upper management with the fear of being judged as incompetent, not ready for the job. If I told my manager I can’t figure something out, would he start getting second doubts that he shouldn’t have promoted me in the first place?  Imposter syndrome was there to stay until I figured it out.

You will have moments of self-doubt and some self-doubt is a good thing. Self-doubt enables us not only to reflect but also to look for validation and to be open to feedback. In the right measure, self-questioning keeps you learning and growing and also keeps you humble. Humility, in turn, makes it easier for you to listen and learn.

Embrace opportunity when it comes your way and build trust with senior management. Don’t hesitate to ask for advice, insights, and scenario discussions with experienced leaders in your network and company. Your management believes in you enough to offer you this opportunity, and your managers may well know better than you what you’re capable of achieving.

System’s performance: what, why and how much is good enough?

System’s performance: what, why and how much is good enough?

We all want more performance from systems but what does that even mean. Is Performance ever enough? What’s the threshold below which it doesn’t actually make much sense to optimize? We ask ourselves questions while testing Zenko and other Scality products.

Your system is going to be only as fast as your slowest component and today’s everything as  service world, the network performance more than often governs or dictates what a user sees as the performance of the system.

How to define network performance?

Consider a network connection as a highway and the IO chunks as vehicles. Larger IOs are like big trucks. Let trucks be represented by 1 GB data chunks while small IOs like 512-byte, a 1 KB, 2 KB, or even a 4 KB chunks are like bikes.

Sometimes it is more important to carry a large number of packets and other times, it matters how much data each packet can carry, determining the capacity. To speed up the supply of milk cans to a city, it makes sense to use trucks. This maximum rate of data transfer that shows the capacity of the network link is called bandwidth. This is typically measured as KBps (kilobytes – thousands of bytes per second), MBps (megabytes – millions of bytes per second) or GBps (gigabits – billions of bytes per second). A mile stretch of four-lane freeway has more capacity hence more bandwidth for cars than a two-lane road. 

Throughput is the number of messages successfully delivered per unit time. Say, the goal is to increase the number of people making it to the workplace on a busy morning. If every person decides to drive a truck to work, we fill up the highway very quickly and only a fraction of people make it to the workplace as compared to if every person is on a bike.

Measured in IO per second, throughput is the rate at which vehicles pass through the highway in unit time. If your highway is full of big trucks (that is if the IO size is very large), you can fit only a few of them on the road but you can carry large quantities of data.

Applications that have high throughput requirements generally also are latency-sensitive and use smaller IO sizes.

Bandwidth is high if we use large trucks (large packets to carry more data), while throughput (IO/sec) is high if we use bicycles (small packets so we can fit more packets). Applications that have high bandwidth/high capacity requirements use larger IO sizes. As bandwidth increases, throughput decreases and vice versa.

The time it takes for a request to travel from the sender to the receiver, for the receiver to process that request and send an acknowledgment back is known as latency. It is basically the round trip time from the browser to the server.

Performance for a product is typically defined in terms of throughput, bandwidth, and latency.

How much performance is good enough?

Performance is the user’s perception of expectations from the product and its usability. Because users’ perception is susceptible to distortion, what users perceive or expect may differ from real product performance. It is hence extremely important to do performance testing to be aware of performance bottlenecks. This will help establish an intelligent service level agreement (SLA) that provides accurate guidance on capacity and scalability. With this information, a customer can avoid a potential scalability problem in production. Correct performance testing on the right use-cases and workloads is very important to ensure the product complies with customer’s business requirements. Performance testing must take into account not only how the business is expected to grow but also the rate of expected growth.

As developers work hard on optimizing performance, it is critical to understand the concept of “just enough” or “minimum improvement needed to be even noted”.  The Weber-Fechner Law involves a key concept called just-noticeable difference, the minimum increase or decrease in magnitude of a property before it becomes noticeable. Put simply, for an improvement to be noticeable by a typical user, the stimulus must be 20% more in magnitude.

Denys’s Mishunov blog on perception of time explains the 20% rule as well as the concept of performance budget and optimization. The 20% rule applies not only to improvements but also to regressions. Letting your code be a bit slower as long as it is not harming the user experience is called a regression allowance: the typical user will not notice if the end-to-end impact is less than 20%. This in no way means we shouldn’t seize opportunities to optimize our code and improve its performance, but it does enable a better cost-benefit analysis of whether a 5% improvement is worth six weeks of effort.

Performance testing must assess user experience in realistic scenarios on the target application and attempt to simulate real customer use cases. A standard performance suite has functional and end-to-end tests that measure component performance as a part of code quality and validation efforts. In a more comprehensive suite, load, stress, and soak tests play an important role in truly characterizing the product’s performance.

  • Load Scalability Test: A load test consists of applying increasing loads to an application and measuring the results. As load grows to the high end of application capacity, these tests often overlap with maximum-capacity/end-limit tests. A maximum-capacity test determines how many users an application can handle before either performance becomes unacceptable.
  • Stress Test: A stress test drives an application beyond normal load conditions. As application boundaries are pushed to the extreme, these tests typically expose the weakest components in the system by exposing failure on those before others. Making these components more robust helps raise limits and find new performance thresholds.
  • Soak Test: A soak test is a long-running test, also known as a golden run, that determines application performance or stability over a few weeks. As a dedicated system keeps running soak tests while periodically upgrading exposed issues like memory leaks, corruption issues that only manifest over long periods appear.

To simulate the customer’s use cases accurately, you must understand the customer’s workload. Each workload has unique characteristics, and each of which impacts storage latency, IOPS, and throughput. A workload is defined by:

  • How much a typical user reads or writes (or both).
  • Whether the user reads/writes are sequential or random (if reading sequentially, caching can help; not so for random reads. Sequential performance numbers are  generally higher than random performance because of caching effect).
  • The number of threads and whether those threads are parallel or concurrent:

  • The input/output (IO) size.

Other workload characteristics you must take into account:

  • Metadata workload must be characterized separately from data.
  • Other impacts, such as deduplication, compression, or encryption, must be accounted for.

Workload characterization

A workload is a set of I/O characteristics running through a group of containers or VMs that interface with compute, network and storage infrastructures. A typical application workload may interact with a web server, one or several database servers, as well as other application servers. The combination of all of these servers and the associated networked storage makes up that application’s workload.

Let’s look at defining an online banking workload. All SSL-based requests are for web pages, followed by requests for embedded images and other static files associated with the page. A page is fully received when the file and all files associated with it are received. The  IO profile in this example is 95% reads and 5% writes (i.e., 95% GET and 5% POST), and a 100% request success is assumed. Twenty-five percent of the requests are for static files that can be served from the cache, which returns a “304 not modified” response.  When a request is successfully processed, the server returns a “200 OK response code.

A typical social media workload is 95% read and 5% insert. The free Yahoo! Cloud Serving Benchmark (YCSB) simulates many types of database transactions, including a read-dominated eight-transaction mixture typical of most social media database activities and can be used to simulate simple social network user activities.

The above table is an attempt to explain the characteristics of a few workloads so they can be simulated for performance testing.

The online transaction processing workload (OLTP) typically seen in online booking, online banking, ATM transactions, retail sales, order entries is a heavy read–write mix (70r:30w) with v small IO size. Characterized by a large number of short online transactions (INSERT, UPDATE, DELETE), OLTP performance is measured in transactions per second hence throughput matters the most. Low latency is important.

OLAP, the online analytical processing is the data warehousing workloads where large amount of data is processed, streamed, combined, filtered for forecasting, data mining, online data queries etc. The workload is dealing with huge quantities of data. The original data is read but not modified. IO sizes are generally large and bandwidth dominates the performance characteristic.

Exchange is Windows mail server workload, characterized by 4K random  read write mix in the ratio of 2:1.

Backup workloads are large (256 K and up) sequential writes to a backup device, generally with a maximum of four concurrent threads, whereas video rich media are sequential large streamed reads. The streaming workload has a 256 K or larger IO size to improve bandwidth.

Decision support systems are of various types. The most common technology used to deploy the communication based DSS is a client-web server. Examples: chats and instant messaging software, online collaboration and net-meeting systems, search servers etc. DSS (decision support system) is often categorized as read-only workload, with few large sequential writes (‘batch’ and ETL). It’s measuring criteria is GB/sec (bandwidth).

Hope this gives you some idea on how you drill down various aspects of workload and build on it to get closer to your specific customer scenarios.

Did you find this information useful? Do you have something to add? I look forward to your feedback. Please reach out to on the forum!

5 Design Principles you need to know to make users stay

5 Design Principles you need to know to make users stay

One of the most influential books I’ve read on product design was The Design of Everyday Things by Don Norman. The principles are so universal that they apply to almost everything from a toaster to today’s advanced technological products. Here is a walkthrough of Don’s principles to influence our collective design thinking.

Visibility

A good design guides the user in knowing what the most essential features are by making them more visible. The key is to prioritize content and functionalities. The goal should be to reduce over-complexity, but not fall for over-simplifying either.

Users need to know what all the options are, and know straight away how to access them. We subconsciously weigh in the decision (cost) to click on something based on the perceived value (benefit). The most effective way of getting people to take action is to make the target action as simple as possible while ensuring maximum benefit. In order to deliver high perceived value in the form of good user experience. It is crucial to narrow down to functionalities that answer the user’s needs that guide them to the specific functions. In doing so you also want to make sure you aren’t letting the user get overwhelmed with too many choices. Letting a user get stuck in the decision-making process of “what next?” impacts the cost-benefit. Visibility and accessibility of important features directly relate to Hick’s law (increasing the choices increases the decision time algorithmically). Fitting too much functionality into a site or an application directly impacts and hurts the user experience.

 

While designing, it is important to keep in mind the Gestalt Principles of Visual Perception as often times, our visual perception is manipulated by spacing, proximity, color, similarity, symmetry, etc. We tend to fill in the gaps and follow the lines of continuity.

Here is a good example of visibility on functionality. This is a screenshot of Orbit, the SAAS based frontend of Zenko. The menu on the left categorizes the functionality into the following 6 categories and under each category, it exposes the core features in each category in a clear hierarchy. Also, by placing it in a prominent position and giving it a contrasting color, it stands out in the design. It is clean and simple.

  1. Monitor
    • Dashboard
    • Statistics
    • Location Status
  2. Configure
    • Location constraints
  3. Explore
    • Browser
    • Search
  4. Workflows
    • Application
    • Bucket Lifecycle
  5. Account
    • Settings
  6. Help
    • Forums

Feedback and Constraints

As the battery of a mobile device drains, the little battery symbol on the top of the screen gives us feedback continuously on remaining battery life. When we plug in the mobile phone, a small lightning symbol gives clear feedback that the power source was detected and the phone is now charging. It is the communication on action taken and transparency whether the action was successful or a failure. People strive for predictability and control, and in most cases, clear actionable information impacts better decision making.

Observe various system designs around you and note how they provide feedback on their current status. An elevator chimes before closing the door and chimes when it reaches the destination floor. A car today alerts the driver if they don’t have their seatbelt on. A simple LED turns on when most electronic gadgets are powered on. All these pieces of information allow you to accurately assess the current state of the systems you interact with. This brings up a great point from the book. “Too much feedback can be even more annoying than too little. Feedback must be thoughtfully  planned in an unobtrusive fashion.” The key is balance and that’s where real art lives.

What’s equally important is preventing the user from doing the wrong thing– the concept of constraints. Constraints are powerful clues limiting the set of possible actions. Norman gives a great example in his book of a toaster. There is only one place to insert the toast making it hard for the user to insert the toast incorrectly. The thoughtful use of constraints in designs let people readily determine the proper course of action.

Another example from Orbit shows as the button is pressed, it changes color to provide feedback to the user. This is a clue that tells the user something is happening.

Affordance

Affordance, simply put, is the perceived understanding of what could be done with the product or feature. Affordances refer to the potential actions that are possible. For example, the presence of a knob gives the user a signal that this surface can be turned, pushed or pulled in some way. This is just like how our brain knows that slots are made for things to be inserted into. The idea is that once someone perceives a feature they know what steps to do to operate. An example of high affordance is a shoe — it’s easy to figure out intuitively how to use it.

Another example includes the mapping above ATM interaction. There are physical constraints in place to prevent the user from doing the wrong thing. The card insert slot is lit giving “feedback” that this slot is where you insert the card. The last screen has a clear white test box with a red button saying ”enter,” again setting a perceived affordance that this white box will take the pin. The box will fill up 25% with every digit. With 3 digits entered, the box only has space for 1 more letter letting the user know only one digit remains.

Below, Orbit shows the possible actions that can be taken on the screen by disabling or graying out what cannot be modified. It also shows what is “optional” and what can be entered to configure replication of this source bucket to another cloud destination.

Mapping

Mapping is the relationship between control and effect. In a car, if I locate the dial that controls the temperature, it is easy to discover how to operate. If I turn it clockwise, the temperature gets warmer. If I turn it counter-clockwise, the car gets colder.

A slider bar on the mobile phone shows the direct mapping between sliding the dot left and right and the screen brightness.

Consistency

Creating a new impressive product gets users to come to you, but having consistency makes users want to stay. A few months ago Atlassian changed the Jira design and caused an internet storm. People that were loyal customers were unable to easily transition to the new layout. This new design did not give users an incentive to continue using their product. Instead of knowing how to operate everything, people were stuck searching for every button and relearning steps to execute old habits. One big consequence of broad design changes come when your users’ licenses expiration occurs around the same time as the changes. Time and time again, you will lose more customers if they feel they are better off using a product that they know, where they don’t have to learn something new.

People invariably object and complain whenever a new approach is introduced into an existing product because it directly influences the usability principles like:

  • Learnability – the user has to learn the new settings.
  • Memorability – if the new setting is intuitive such that the user finds it easy to memorize, this would be a positive outcome. If not, it is not welcome. Old habits die hard. If you’ve trained your users to your functionality, consistency plays an extremely significant role in making things look familiar, no learning curve,  bring more efficiency, and directly enhancing satisfaction.
  • Efficiency – the user sees the direct perceived value and once the user has learned the new interface, they can see themselves using it as it is higher performance in the user’s eyes.
  • Errors and recovery – user made fewer errors with this new design and had a better feedback loop or intuitiveness of new design prevented the user from doing the wrong thing in the first place
  • Satisfaction – measures the user’s level of being pleased or delighted with the product. This, for example, will drive the net promoter score.

When conventions are violated, new learning is required. More often than not, the merits of the new system are irrelevant.

Turning a knob in the clockwise direction increases the effect while anti-clockwise decreases the effect. Blue taps mean cold and red means hot. There are certain expectations that are hard-tuned and aligned with natural conventions while others are learned behaviors. Certainly, earned behavior also creates stickiness. When you uproot a user’s stickiness, you are taking the risk of losing the customer to better user experience offering from the competition.

Hopefully, this article was useful. Tell me what you think on the forum!

Hack away with Scality at Zenko Holberton Hackathon!

By Shivani Pradhan

Director, Software Engineering at Scality


Hack away with Scality at Zenko Holberton Hackathon!

Hackathons have been a great success at Scality (Read more about Hackathon@42 here). Hackathons have not only enabled us to build a community and fuel innovation but also to recruit top talent. We have our next Zenko weekend hackathon coming up fast and furiously at Holberton School on Nov 3rd, 2017.

With the high demand for software developers, it’s challenging to find top talent. Getting to know potential candidates better, gain exposure to them and hardest of all — determine a good cultural fit is time-consuming and often hit-or-miss. Hosting hackathons enables us to come closest to testing a candidate’s capabilities of handling challenges in the workplace via project-based challenges (learning?) while giving us an opportunity to increase awareness about the company’s core values and work culture within the developer community.

Hackathons are fast, frenzied and short-lived by nature with many teams working through the night(s) to achieve their goals. This accelerated time frame forces participants to operate in much the same way they would in real work environments; wrestle with time pressures, collaborate with teammates to innovate and come up with creative solutions to solve actual customer problems.

Hackathons bring together smart professionals and budding talents who bring a diverse perspective to solving problems, ultimately broadening our horizons on genuine use-cases. Sometimes the ideas may not come to fruition within the short duration of a hackathon but projects developed over the course of a hackathon may spawn various internal or external research, development and entrepreneurial activity.

Hackathons are gaining in popularity amongst developers as well. Participating in a hackathon  is a great way to get in touch with potential employers as participants are challenged to showcase their talent, work hard, test their capability to deliver under pressure, learn to prioritize, scope out problems, focus on what’s really important and solve problems fast. As time runs out, teams are most often amazed at what they’ve managed to accomplish. In addition, participants get to have a lot of fun, network with other participants, make new friends, have a fair chance to win decent prizes and gain experiences of a lifetime.

Here at Scality, our Engineering team has volunteered for every Scality-hosted hackathon with uninhibited enthusiasm to help brainstorm and guide the participants. In return, they see myriad possibilities of potential solutions to break into new markets or develop extensions to existing software and tools. For Scality engineers, hosting has  also facilitated feedback between developers and users of their APIs directly influencing user experience and hence influencing developer adoption, which is crucial for solutions to thrive across new channels.

cloudserver

Download Zenko CloudServer from Docker Hub

Zenko CloudServer (formerly Scality S3 Server) has garnered more than 1 million Docker Hub pulls since it was introduced in June 2016. Zenko is Scality’s open source multi-cloud data controller that provides data access in native formats to Scality’s on-premise distributed object & file storage–the RING, Amazon AWS, Microsoft Azure, and soon Google Cloud Platform using the AWS S3 API. Zenko also provides cross-region replication to Scality RING and AWS. Zenko will soon deliver search capabilities on data stored locally using Docker volumes or Scality RING or cloud storage such as AWS, Azure, and GCP.

Zenko

Zenko is an open source project licensed under Apache 2.0. As we build our open source developer community, hackathons have proven to be a great congregating point for reciprocity, human interaction, and nurturing first-time users.

Photo of the team at the August, 2017 Hackathon

Photo of the team at the August, 2017 Hackathon

Our last hackathon in the United States was held at 42, an innovative—and free—computer programming university, in Fremont, California. The three “C’s” that dominated the theme were

  • Collaboration,
  • Competition and, of course,
  • Coding.

Eleven teams participated and projects were evaluated  based on execution, performance, design quality, and creativity (e.g., finding a creative solution/use-case, implementation thought process, logic & algorithms, etc.). Some cool and creative solutions presented at the event made judging extremely challenging though fun for the jury.

Our next hackathon (Nov 3-5) will be hosted at Holberton in downtown San Francisco. Scality is proud to support Holberton’s mission to educate the next generation of software engineers. Students attending this innovative software engineering school do not pay for their education until after they are working. Once employed, they pay a percentage of their salary. Holberton claims to accept fewer than 2.5% of applicants, making it more than twice as competitive for admissions as Harvard!

We can’t wait for the Zenko Hackathon at Holberton and see the creative juices flowing again!