My Journey Through Time at Walmart Global Tech
About 4 years ago I was attending one of my Master’s lectures when I got the call from Walmart’s recruiting team and that is how my journey with Walmart Global Tech begin. Being a master’s student to get an internship with no prior work experience was both tough and critical. An internship would add some level of industry experience to my resume and would help me land a full-time job somewhere. But my aim was to choose the correct internship opportunity for me where I would not just learn and gain industry experience but also have a chance to convert this internship opportunity into a full-time role and hence, I chose Walmart.
Post my internship, I accepted the invitation to join Walmart as a full-time employee and since then it has been 3 & 1/2 years. I think the timing is quite perfect for me to share the experience of my journey from being a student to an Intern to a full-time employee. I’ll be talking about the things I learned, the challenges I faced and what are the key takeaways from my experience.
Things I learned during my Internship Program
Hands-on Nature of the internship
One of the most important things that tilted my interest for choosing Walmart for an internship program was the hands-on nature of the work I was going to do. When I say hands-on, I mean working on part of a real life production tool used across multiple teams in Walmart. The tool was Expo, the Walmart in house built A/B Testing tool. This was no side project that I had to work on, which could end up not being used by anyone. It was the real deal. Working on the Expo tool UI, I created a health-dashboard which would show the health of an A/B Test over a period of 24 hours. This was useful to the end customer to monitor their tests to see how it performed.
If you ask me what I was looking to get out of this internship? I would say a full experience. And I was pleasantly surprised that I got most of it. I wasn’t just writing code but was also involved on other team processes (day to day activities, ex: design review, CI-CD process, Demos) which gave me a wholistic view of how things actually work from end-to-end. This gave me a holistic view of how things actually work from end-to-end.
Latest & Greatest Technology
Who doesn’t want to work on the latest and the greatest technology stack? I surely did. During the time of my internship the expo front end code was written in BackboneJS ( which was a oldie ) over a framework called lazojs which was using the older out of style MVC model architecture. However, I was given the opportunity to work on ReactJS which is more like single page application, component based and integrate that with the existing code base. First of all, I learned something new and exciting with ReactJS and then used that knowledge to implement a new feature which I could own.
Other Skills & Knowledge
Even as an intern I was attending standup’s, giving updates to the team & also invited to team meetings. I had studied in college about agile methodology used by teams across the tech industry, but this was the first time I was a part of it. Also, this made me understand how it can be tailored to a specific team and things like point counts can mean different to different teams. In Expo we use a customized version of scrum, and that works for us pretty well. My suggestions were not just heard but I was always encouraged to keep suggesting new ideas. This made me feel that I was part of the team.
Almost every other week we had speakers, some from the leadership and some engineers across Walmart talking about the cool projects they had been working on and shared their experience working at Walmart. This surely did play a small role in my decision to join as a full-time employee with Walmart.
At the end of my internship I was given the opportunity to present my work to the entire Carlsbad office and I wrote a report on what I had achieved during this time.
Things I learned during my Full-time up till now
Understanding the Tool & the Process
Fast forward to me joining as a full-time employee at Walmart. Even before I could dive into the code base, I had to understand the day-to-day working of the team. Starting from morning standups, retrospective & sprint planning if it’s the start of a sprint, team demos to our tool’s user base & scheduling deployments if any.
The next obvious step was to start diving into the code base to understand the flow and features. Simultaneously it was also important to the understand how the tool works and how is it setup from end-to-end (trust me it is not a day’s job). A couple of important things that helped me here was going through lots of documentation and talking to my team to understand things better.
Our team owns the Expo tool end-to-end. It is important to understand the end-to-end working from the technology standpoint, but it is also important to understand it from the end-to-end process standpoint. Each tool which is constructed with some technology is encapsulated by a process to make it work.
Some of these are processes in themselves such as the CI pipeline and the deployment process. For example, Expo has multiple test environments such as Development, QA & Staging and then a single production environment.
Improving Technical & Communication Skill
As we own the tool end to end, our team comprises of frontend, backend & edge network team. I started with the team as a frontend engineer and I was still new to BackboneJS & lazojs. I also ventured out a little bit to help the team on the backend learning a bit of Lua and Golang.
Fast forward to last year, when we started to rewrite our Expo tool frontend in ReactJS & an in-house framework called as Saber. It was time to move to a newer technology stack. That helped me to add a new skill to my skill set.
When you work in a team communication is very important. And by communication I don’t mean just the basic chit chat with your colleagues. Communication also involves giving accurate updates on the status of your work, asking for help if needed, conducting design meetings & code reviews, asking questions in discussion meetings and one of the most important written documentation. I mean who are we kidding, not all of us like to write these long documents but unfortunately its true, they are really important.
Growth
You wont grow in a day. You start small and then build on it.
When I just started to work on the Expo code base, my first sprint tasks were some bug fixes. A nice way to kick start on a code base as it allows you to debug and understand the code. Then I started to work on smaller features or part of a big feature. Though I feel, the acceleration in my growth began when I started to take on big features and owned them from end-to-end. As I grew in confidence and experience, I started to work on multiple features in a sprint simultaneously.
Another part of my growth was to work across teams. I had an opportunity to work on a different tool called Tango for a couple of weeks and I chose to take it as a challenge to myself so that it could help me grow. This project had a steep learning curve because I was working on a strict timeline. Also, a new tool, a new code base, new process & new people. This taught me how to adapt quickly to change.
Last but not least, interacting with customers directly during regular meetings, hearing their concerns through slack channel support groups and also sometimes reaching out to a specific customer, helped me to identify their pain points. This led to helping them out, suggesting ideas to solve their problems and to work on some innovation projects.
Challenges Faced During my Internship
Before we dive into the various challenges on the job, I want to add a pre tip on a question that I have been asked by number of students and others who are seeking job opportunities :
“What is your strategy to get more interview calls?”
The more you apply the more chances you have of getting an interview call. Even if that’s true my own strategy was that I had one common resume to apply at bulk of job openings. But for the one’s that aligned with my skillset, I used to tailor my resume according to the job requirements. Now let us take a look at some of the challenges.
Initial Challenges
Many people who read this blog may already have had a ton of experience but there might be some of you who might just be starting or in your initial years in this field. My internship at Walmart was my first ever complete technical job. Prior to this I was working on campus in my university on small technical projects as a part of a job. Even if you are inexperienced you can still bring lot to the table with your knowledge and setting correct expectations.
As mentioned above, I worked on a project to create a dashboard with a list of features but in a newer technology stack back then ( ReactJS ) and also integrate it with the existing tech stack. So, the challenge was not just to create a bunch of features for a tool which I was not completely familiar with but also to do it with a newer tech stack which myself or anyone on team had not worked on before. As the learning curve was a bit steep, it took more time to get up to speed to begin with some implementation. As a result, at the end I was not able to complete all the features in the list. Later me and my mentor both realized that the expectations were a little high for the given time frame. So, to tackle this kind of a challenge what do you do?
There are some questions that you might want to ask yourself and discuss with your mentor/manager at the beginning, such as:
- What are you getting out of this experience?
- What is the scope of this internship?
- Does someone on the team have the technical expertise to help when needed?
- What is expected from you and what are the realistic goals in the given timeframe?
It might seem hard to get all the answers right at the beginning but the sooner you have the answers the better.
Complex Structure
Though I had worked on multiple projects as part of my course work, for me entering Walmart and working for Expo was like entering into a whole different experience. Working on team projects back at the university with teammates more or less at the same level as me v/s working at Walmart with principal engineers, managers and people at different levels with different roles is all together a different scenario.
At the university working on projects does not have a lot of complexity to the structure. The course projects aren’t as huge as real industry level projects. Usually the project is divided either by features or as frontend & backend tasks. You work in small teams where usually everyone is a developer. The professor might assign your team the project, give the requirements and assess the project to grade your team when it’s done. There might be some or no continuous feedback provided by the professor through the development of this project. This structure is quite linear as you might have only one point of reference and not many variables.
Whereas when working in an industry setting, especially in big companies like Walmart, you have a complex structure within teams. For example, the Expo team is divided into Frontend Team, Backend Team and Data Insights Team. We follow agile methodology and work through the complete lifecycle of a project/feature. This involves a lot of different people in different roles, such as project and product managers who help to communicate with the customers and define the requirements, an architect works on creating a proper architecture & design, UX designer helping to design the frontend experience, the developers working on the implementation and the end customer providing feedback.
Because of the complexity of the structure, meeting new people, understanding their roles in the team, getting to know them, understanding the structure and process could be challenging especially if it’s your first job. This could make you feel a little out of place but don’t worry about that a lot and focus on taking small steps and be open to embrace this drastic change of environment. Also remember the team who hired you understands where you come from and what is your background, so don’t be afraid to ask questions.
Not Much Time
Usually most of the internship programs are for 2–3 months. And in this time period you are expected to perform your best, showcase your talent, adapt to the environment and implement something valuable to the team. Again, I would like to highlight the difference between project work at the university v/s working on a project as a part of the internship. Both cases you have deadlines, but the scenarios are not the same.
When working on a course related project you have more time at hand (most of the semester) i.e. 5–6 months. You gradually build the project. Start of the semester its more about learning the technology and practicing with smaller assignments to sharpen your skills. Then you start implementing things in small chunks spread throughout the semester. You can reach out to your professor for queries and even reach out to other teams in the class if you have questions. Here the motive of the course work is for you to learn more than anything.
On the other hand, when you are interning at a company like Walmart, the expectations are higher, and the time frame is smaller. While you come in and understand the process, simultaneously you have to learn and implement. You are dealing with much more things than usual. At this point it’s not just about learning, you also need to have a valuable end product at the end of the internship. And if you are working on part of the big project you usually don’t have enough time to understand things end-to-end. Hence things are much smaller scoped, and you might not have idea of the big picture.
Challenges Faced During Full-time
After a successful internship experience, I ended up getting a full time offer from Walmart Global Tech. Obviously being happy was one of the first things that I experienced but then there were new challenges waiting for me.
Overwhelming Beginnings
Starting full time with the same team (Expo) for me was a little easier, in terms of knowing the people I was going to work with. But if university projects were kind of 1-Dimensional and internship was more like 3-Dimensional, then full time I would say is 4-Dimensional or 5-Dimensional. Another major difference is with internships you are “expected” to do the job, but in full time you are held “responsible” for all the work you do.
While you are working on a project at the university the process is quite simple. You form a small team ( 3–4 people), come up with a project idea, get it approved by your professor, work on the design & architecture once, each person does their development, you merge the codes once done with certain features (usually there is not much of PR review process involved) and once the project is completed you demo it to your professor for grades.
Even during internship your interaction with people is mostly limited to your team. Your understanding of the tool can be limited to in and around the feature that you are implementing and you might not be exposed to the entire end-to-end process.
But when you jump into your full-time job, there is lot more to take in. In a big company like Walmart you don’t just have to understand your tool end-to-end but also how other tools in the whole system are interacting with it and what are the dependencies. While working on your tasks you might have to reach out to the correct people and work across teams. Now as you are part of the team full time, you have to understand and be a part of the process that encapsulates the tool. And this process is recurring, week in week out. For me it did feel challenging at the start as it can be a lot to absorb, especially if it is your first ever full-time job like mine.
Lack of proper Communication
Many of us think (including myself) we have good communication skills and we should not have a problem to fit in perfectly. Well this is where I went wrong too. Communication at personal level are much different that communication at professional level. Let me share some scenarios where lack of communication can cause a problem or a misunderstanding.
- Lack of Communication with Customer: Multiple customers reached out with an issue where they mentioned that they were not able to access the Expo tool. I investigated and debugged to find to out it was not a problem on our end and issue was with our external dependent services. I created a ticket with them to resolve the issue. Now in all of this process I did not efficiently communicate it back to our end users about the status of the issue. Hence, they kept reaching out via other channels. If I had broadly communicated with them in timely manner, then they would not have to reach out to us.
- Lack of Communication with Team: I was working on an expo feature which required both front end and back end work. I started with working on the UI ticket during my first week of the sprint. Now I was done with my UI work and was waiting on the backend changes and data to be available to test out the UI changes. I reached out to the backend team in the second week of the sprint and got to know they haven’t started working on the changes yet. So now I am blocked. If I had effectively communicated at the start of the sprint with the backend team, they could have prioritized their tasks differently and I would have not been blocked.
- Lack of Communication with Team Lead/Manager: Continuing on the above example, I worked with the backend team and waited on the changes to be made. We eventually figured out that there were more backend changes needed than before and it would take more time. Usually at the end of the sprint the lead/manager plan tasks for the upcoming sprint. My manager reached out with his plan about the new sprint tasks, that’s when I told him that the previous ticket was unfinished and would roll over as there are some more changes and testing needed. Now this puts him into a difficult situation because he has committed to certain tasks to be completed during the planning meeting. If I had kept him updated about this, he would have all the required information during his planning.
You will always go through more such situations and that will help you to improve on your communication skills.
Key Takeaways
From my few years of experience now and the countless things that I have learned, here are some key insights that might help you in your professional career:
- Adapt Quickly : Things in your professional career are subjected to change at some point or the other. Try to adapt quickly to these changes because no one is else is waiting for you to come up to speed.
- Performance Check : It is easy to get lost in your day to day tasks and when the time comes to jump to the next level you might realize you are far apart from your managers expectations. So work with Mentor / Manager constantly to understand what you are doing well and where can you improve.
- Documentation : Importance of documentation can never be undermined. When you are approaching something new, read a lot of existing documentation. If you are implementing something new write documentation for your and others future reference.
- Help : There might be situations where you might experience some blockers or some things that are not working as you expected. Rather than feeling stuck and spending lot of time on one thing, don’t be afraid to ask for help from your team mates and/or manager. Also, always try and help your customers & team.
- Communication : It is better to over-communicate than to under-communicate. This communication can be for different purposes: demos to customers, discussing blockers with the team, notifying your team about day-to-day progress & talking to your manager about your performance.
- My Routine : My team follows agile methodology and we have biweekly sprints. I discuss my tickets and their point counts with my manager prior to the planning meeting. I create sub-tasks for my tickets. Start of the sprint, I mostly start working on the higher priority ticket first. After every sub-task is done, I send out PR’s for review. To talk about my daily routine, at the start of the day I spend some time on deciding and planing on what I intend to complete that day. Try to keep my manager updated about my progress and at the end of the day I spend some time to analyze how the day went.
- Do More than just the “Regular” : If you intend to improve yourself, challenge yourself and think about getting to the next level, it is important to do more than just your regular tasks. Try to innovate or at-least contribute in innovative projects, this will set you apart from the rest.
Be excited about the company you are joining and be aware of the challenges. But do not be overwhelmed by them. Just like a relationship, it will have its ups & downs. The more effort you put in it, the more positive response you will see from the other end. And I think I chose wisely in my relationship with Walmart.