Yawar Raza

Copy of my LinkedIn profile

View My GitHub Profile

Despite LinkedIn claiming to make public profiles visible to people without a LinkedIn account, I usually get a "login-wall" when I go to my profile's URL while logged out. Therefore, I am putting all the info from my LinkedIn profile here as well, to make sure everyone can see it.

Projects have been placed on a separate page.

I have also made my resume available on the web.

Feel free to contact me on LinkedIn or by email at YawarRaza7349@gmail.com.

Tagline

Seeking an entry-level software engineering job.
Can relocate.
U.S. Citizen

About

I am seeking an entry-level software developer position, preferably non-remote, almost anywhere in the United States. I have B.S. and M.S. degrees in Computer Science from Rochester Institute of Technology, as well as a year of internship experience doing software development.

I have learned about and used many technologies in a variety of contexts, and can thus adapt to different tech stacks and platforms. That said, I am most comfortable doing backend application development, spanning both the business domain layer and the database layer. I prefer to develop in Java, C#, or similar (i.e. statically-typed and garbage-collected) languages. My database experience is in SQL, and I have used several implementations throughout my work. My ability to navigate and understand large codebases written by others allows me to quickly start updating and adding features to applications, as well as maintain and refactor legacy code. I especially enjoy going through existing bug reports, finding and fixing the code causing each bug. Additionally, I'd be interested in creating self-contained software tools for internal use by both developers and non-developers.

I am familiar with various styles of computer programming, as well as the trade-offs they have in comparison to each other. I took a course on functional programming early in my degree, and kept learning more about Haskell and static types for a few years after, before switching my focus to programming language theory and reading research papers on type systems and related topics. Meanwhile, I also obtained experience creating visually-rich, interactive visualizations and games through my double-major in Game Design and Development, using APIs at varying levels of abstraction, such as shape-drawing libraries and scene graph frameworks. Furthermore, I took two Software Engineering electives, one about object-oriented design patterns and one about the Alloy and SPIN formal methods tools, a background I look forward to extending to enterprise architectures, concurrent and distributed applications, and other forms of software.

I also like explaining computer programming concepts to others, both through one-on-one conversations and through written explanations. This ranges from teaching well-known content to presenting ideas that I think of myself. Thus, I am also open to teaching positions, as well as roles grokking and documenting software systems. And in collaborative settings, I am able to expand upon others' ideas or present dissenting viewpoints, as shown by my LinkedIn comments in the Activity section below.

Alternative Introduction

Click here to read the cover letter I wrote for Google that expands on points discussed in the third paragraph above.

I want to draw attention to my diverse background within the world of computing, an aspect where I stand out from many of your other applicants.

Through my interactive media and game development courses, I've used frameworks and libraries spanning across many levels of abstraction, including OpenGL, raster drawing libraries like Processing and Canvas2D, geometry-based scene graph libraries like Three.js and Two.js, asset-based scene graph frameworks like Adobe Flash and XNA, and the Unity game engine. I have worked on teams to make games, coded up colorful animated graphics on my own, and even created a tool for myself to use for a class.

Meanwhile, I've been enthusiastic about programming languages and the details of their features ever since the start of my programming journey. I took a course on Haskell early on in college, followed by two internships and plenty of independent reading cementing this interest in functional programming. My later coursework then re-oriented this interest towards programming language theory, including further perspectives on type systems as well as writing proofs both on paper and in Coq.

I also have breadth beyond the above focuses. I enjoy software design, including object-oriented design patterns, and relational database design. My internships involved real-world problem solving, including debugging existing codebases, designing a configuration format, and extensively using SQL for customizable batch processing of entire databases. I have taken several classes using C++ and have often used it for coding contests and other short programs. And I've been taking part in math contests for much of my life, including two such contests in college where I bested all other RIT participants.

This variety of experience would be very useful for Google, which is involved in a wide array of areas in computing. Maybe at some point I'd find myself primarily working on the Dart team, but contributing to interactive Google Doodles every now and then. Or I could end up working on the API design for a Canvas2D-like library integrated into Flutter, that seamlessly unifies with the Flame game engine as well as Flutter's standard GUI framework used on its own.

I know I wouldn't be jumping into such endeavors in the near future, but it's an example of both my range and my growth potential. I'm eager to take on whichever task you're looking for your hire to work on, extending my extensive experience exploring new aspects of computing.

Contributions

Here's how you can foster cutting-edge programming languages and frameworks through creativity.

Making a variable private in Dart is not done with a "private" keyword, like it is in Java and other languages, but by starting the variable name with an underscore. Several people have complained about this at https://github.com/dart-lang/sdk/issues/33383. Nevertheless, Dart won't be appeasing these people, having (interesting!) technical reasons for why the underscore is needed. Thus, if you want to use Dart, you'll need to get used to not having the "private" keyword. Sometimes, these deviations from existing approaches are improvements, and you can learn about the advantages they bring. Other times they're arbitrary decisions you just have to get used to. Being flexible with syntax opens you up to more languages and new features to try.

How would you address misconceptions about programming languages during a project meeting?

Actually, "some languages are better suited for certain tasks than others" is the real myth. The differences languages have are mostly about personal preference (e.g. static typing) instead of task requirements. The only real exception I can think of off the top of my head is whether a language supports manual memory management (C, C++, Rust, etc.). The actual relevant factor is whether frameworks and libraries to implement the thing you're trying to do have been written for the language, which isn't an inherent characteristic of the language, but is more about happenstance, and can change over time. Dart wasn't used for mobile dev nearly as much before Flutter. If Swift gets better Linux support, it could be used to write web servers.

How would you address misconceptions about programming languages during a project meeting?

This section is partly wrong! "Scripting" languages are a subset of programming languages, not a separate category. And "scripting language" has a fuzzy definition — Bash is definitely a scripting language, but is Python? If so, what about Scala? Really, though, it's not actually important to classify languages as "scripting" or not. Instead, discuss the specific task at hand you want to write a script to do, then determine whether the language in question is appropriate for that task.

Here's how you can overcome challenges when adapting to new programming languages.

Programming languages are mostly the same as each other in terms of language features, especially more modern languages like Kotlin and Swift. For example, Kotlin's data class and Swift's enum with associated values are the same feature, which is also in many other languages. The bigger differences that you'll need to spend more time on are the frameworks, libraries, and tooling (e.g. the build system) of the new language. These are also typically similar, but there are many more small differences here than in the language itself, like the names of library functions. If you're learning a new language to use a specific framework, learning to use the framework will be more important than learning every single feature of the language itself.

Experience

SRC Solutions Inc

Software Engineering Co-Op
Jan 2017 - Jun 2017
Center Valley, Pennsylvania, United States
(Worked remotely in Rochester, NY)

McGraw‐Hill Financial — S&P Capital IQ

Software Engineering Intern
Jun 2014 - Aug 2014
New York, New York, United States

B-Line Medical

Software Development Intern
Sep 2013 - Jan 2014
Washington, District of Columbia, United States

Kids on Campus

Workshop Assistant – Creative Coding with Java
Jul 2013 - Aug 2013
Rochester, New York, United States

Education

Rochester Institute of Technology

Bachelor of Science/Master of Science dual degree
2011 - 2018

Courses

Number Title
CSCI 633 Biologically-Inspired Intelligent Systems
MATH 646 Combinatorics
CSCI 742 Compiler Construction
CSCI 712 Computer Animation: Algorithms and Techniques
ENVS 101 Concepts of Environmental Science
IGME 309 Data Structures and Algorithms for Games and Simulations II
IGME 590 Educational Games
4010-362 Engineering of Software Subsystems
BIOG 101 Explorations in Cell and Molecular Biology and Evolution
CSCI 610 Foundations of Computer Graphics
IGME 236 Interaction, Immersion, and the Media Interface
ANTH 104 Language and Linguistics
SWEN 220 Mathematical Models of Software
CSCI 471 Professional Communications
CSCI 344 Programming Language Concepts
CSCI 740 Programming Language Theory
CSCI 641 Programming Skills: Aspect-Oriented Programming
4003-561 Programming Skills: Functional Programming and Haskell
4080-434 Programming for Digital Media
CSCI 799 Software Foundations/Mechanized Metatheory for Programming Languages

Projects

Projects have been placed on a separate page.

Honors & Awards

Top 5% of contestants in HackerRank's Hack the Interview III online coding contest

HackerRank
Apr 2020
My results page on HackerRank

First-place winner of the 2018 RIT Math Competition

RIT School of Mathematical Sciences
Apr 2018

2016 Outstanding Fifth Year Student Award

RIT Department of Computer Science
Apr 2016
$1000 Scholarship

Second-place on the 2014 RIT Integral Contest (Individual portion)

RIT School of Mathematical Sciences
Mar 2014

Languages

English (native speaker)

Websites