Hello internet stranger, đđ˝
Software engineering can be daunting. This may be true if itâs your first time working as a software engineer.
For the summer of 2021, Iâll be interning in one of the engineering teams at Prisma â. Iâll share a summary of my learning experience â technical and soft skills â on a weekly basis for a number of reasons.
One, this is a great opportunity to document my learning experience. This would also serve as a reminder to my future self or whoever stumbles on this article.
Two, if you happen to doubt yourself I hope you find some comfort that youâre not alone. Weâre all in this together and true growth takes time. đ
Technical skills
Type-Only imports and exports
This week, I learned about type-only imports and exports â. It was introduced in TypeScript version 3.8.
Type-only imports and exports let the TypeScript compiler know that youâre only interested in type declarations. The type-declarations wonât be included in the build output.
This feature is be useful in development when youâre only interested in inferring types from a library but not shipping it in your application bundle.
The syntax would resemble something like this in your application:
// type-only import
import types { Request, Response } from 'express';
import express from 'express';
const app = express()
app.get('/', (req: Request, res: Response) => {/** logic here */})
// type-only export
export type { Request, Response };
Design systems
Building good and reusable components is hard. The complexity of components grow over time with changing product requirements.
When youâre building your frontend application, you may have two choices â adopt an existing design system/ styling library such as Bootstrap and Bulma or design and build the components on your own.
Adopting an existing system offers the advantage of not worrying about styling. The downside is that, when your application will require a custom component, building it to match the existing style may be a little tricky. Plus, thereâs the âBootstrap effectâ and your application may be bland because it will resemble many sites on the internet.
Enter design systems! Now this is not easy, but definitely makes your application, website, web app stand out from the rest. A number of factors to be considered include theming, typography, layouts, icons, internationalization(i18n) and most importantly accessibility.
Accessibility
According to MDN â, accessibility is the practice of making websites/ applications usable by as many people as possible. This includes people with disabilities â cognitive, mobility, hearing, and visual impairments. Sometimes we assume our users will be like us and accessibility becomes an afterthought. It happens, but this is a grave mistake that would hurt your users.
The design and development process should conform to the Web Content Accessibility Guidelines (WCAG) â. It states how to make your content more accessible and design guidelines when building an application. For example, making input fields, dialogs, and menus keyboard accessible.
React-Aria â provides a set of React hooks that allow you to add behavior and interaction in your React components. It follows the WAI-ARIA Authoring practices â that provides accessibility out of the box.
Note: The Adobe team built react-aria and use it in their design system â react spectrum â.
If youâre looking to build a design system, react-aria will enable you to build accessible-first components. It doesnât ship with any styling, giving you the freedom to explore your artistic side. đ
Soft Skills
Be confident - donât put yourself down
In the software engineering field, itâs common to experience Imposter Syndrome. The feeling that youâre not good enough or donât deserve what you get. You may also feel overwhelmed from every once in a while. And itâs okay.
Despite your background and level of experience, everyone has something to offer. Be you and your team will appreciate that. Remember not to compare yourself with others and be open to learning and taking up any kind of task. Thatâs how youâll grow.
Donât compare yourself with other people; compare yourself with who you were yesterday
â Jordan Peterson
You got this. đŞđž
Asking for feedback
Candid feedback is good. Feedback from a team member or manager will help you evaluate your growth, understand your weaknesses, and develop goals to grow your career.
1:1s with your manager can help you get on the same page with your manager on goals, overcome the daunting feeling when youâre new, and motivate you.
What comes next?
I have no idea. Could be breaking prod, dropping all tables⌠itâs all uncertain. I look forward to learning more and sharing it with you folks.
Till next week. âđ˝