My experience at Parkaze by Manoj Bisarahalli
Welcome! I am a graduate student pursuing Master’s in Computer Science at Illinois Institute of Technology. Summer 2020 was so sunny, it shined some light on my pursuit towards a career as a Software Engineer when I accepted an offer to work as an SE intern at Parkaze— May 25th to August 15th, 2020.
Preparation for summer
Preparing yourself and revisiting the basic is an important step to a good start. I’ll tell a bit about the week before I joined Parkaze and how I prepared for the summer.
In addition to studying about these on my spare time earlier this year, I spent a week before my start date revisiting some basic concepts in programming and architecture. What was helpful was revisiting topics that I would benefit from the work that I will be doing for Parkaze. These included, Data structures such as Lists, Stacks, Queues and Sets. Algorithms revision included Sorting, Searching, Hashing, String Manipulation parsing. Architectural components included patterns such as MVVM, MVC, Client-Server, Publish-Subscribe. Database technologies such as SQL, NoSQL and it’s applications and differences.
The above revisions combined with a basic research and overview of the products and the idea behind Parkaze helped me acclimate to the challenging and fun summer ahead.
On-boarding and introductions to technologies/practices used, work-place (remote) and colleagues were the highlights of this week. Learning about all the technologies used, meeting new and exciting, fun people that I’ll be working with was a surreal experience.
Learning about the technologies used at Parkaze w.r.t building the website, mobile app and the back-end servers with databases, peeked my imagination with features I can help build that will take some of the products to the next step.
The Sort and Search algorithms that I revisited during Week 0 could be used to create the custom search bar that had to be built. Similarly, SQL and NoSQL revision helped me understand the existing and required databases while understanding when and where to use either of them. A socket.io experiment to integrate the web and mobile database could use the publish-subscribe model I revised earlier.
Planning my time at Parkaze
Over the first week, I got to meet the whole team while learning about what they do and how it impacts the progress. Talking to friendly people responsible for the Sales, marketing and PR gave me different insights into the company’s setup and mechanics.
As the lead developer for the team, I worked under the supervision of Giancarlo Borjas. We used Agile and Waterfall methodologies for our development planning and execution. A thorough planning was key as it would set up tasks that will be executed throughout my time at Parkaze. The following was the gist of the plan and execution of which we successfully achieved.
- Requirements gathering- We examined the existing app and code base and created tasks for each fix , improvement or feature we needed.
- Assigned story points style complexity points for each task on a Fibonacci scale. This was crucial since providing an accurate estimation would make the whole process as precise and correct as possible.
- Give each task a priority— Low, Medium or High
- Based on the given complexity, assuming each unit of complexity is worth an hour pf work, we sorted the task into 6 Sprints with approximately around 100 story points for each Sprint.
- Each Sprint spanned for two weeks with a Sprint planning meeting before the beginning of each Sprint and a Sprint presentation/demo right after.
- A daily Sprint meeting ensured these three questions were answered and thought through before starting the day,
- What is the progress of tasks assigned for yesterday?
- Any doubts/clarifications on the tasks to be completed next?
- Are there any blockers for implementing the next couple of tasks?
The above planning and execution ensured a structured development process allowing me as a developer to methodically think of solutions, access it’s complexity and execute it within the given time-frame.
As a summer SWE Intern, I was tasked to fix, improve and add new features to the existing code-base. Some aspects I focused on were,
- Flutter for the mobile app development –
- Fixing existing code-base by refactoring and organizing the plugins and folder structure.
- Following an MVVM pattern that lead to separation of business logic and UI
- Add a ton of new features ranging from pins on map, search bar, filtering, a reservation system.
- Added stripe payments, phone verification and notifications.
- Firebase as back-end
- Firestore – database
- Cloud Functions in Node.js and TypeScript for added functionalities such as Notifications, payment using Stripe
- Research and experiments on how to integrate a standalone SQL server , WordPress Database and the new Firestore database. Some options looked into were using Cloud functions, custom servers on docker containers and third party integration platforms like Zapier and Tray.
Final thoughts on my time at Parkaze
As an intern, it was a professional yet fun experience for me. Everyone were so welcoming with sharing ideas, work and laughter that I barely left like an intern. I was given tasks that were actual product improvements rather than a task that was low priority. I was sized as a full-time employee and was given responsibilities matching that. This allowed me to take ownership of new features, effectively communicate old/new problems and solve them. The open-minded approachable environment helped me grow and contribute towards the progressive goal of the company and ship features that impacted the business in a positive manner.
I would like to thank Amal for this amazing experience which has led me to solve challenging problems, learn and grow as a developer. I would also like to give a huge shout-out to Giancarlo for being a project manager that I looked up to and also learnt a good amount of management skills from.