How Version Control Affects Your Workflow?

Using version control software is a best practice and industry standard nowadays for high performing software and development teams. If you are not familiar with Git and what is version control, check this website out, which provide a good introduction and tutorials.

During my past experience, most of my projects and teamwork followed Feature Branch Workflow. Whenever the developer starts working on a feature or fixing bugs, they could create a new feature branch based on main branch/master branch.

The reality is that different development team probably have different set up with their branches and development path due to some historical reason. I am going to talk about the situation that I experienced in my work. Hopefully, my experience could give you some inspiration and get a better understanding about version control.

We have three major branches, which are not deletable. They are prod-branch, qa-branch, and dev-branch. All the tasks/features we start to work on need us to create a new feature branch based on prod-branch. Once we finished the task, we’ll merge the feature branch into dev-branch and qa-branch for 1st and 2nd QA testing. If the code passed the QA testing, we could deploy the feature branch to prod-branch.

Ideally, this way won’t cause any issue if we strictly follow the process, since these three branches are equally the same with different purpose. In fact, there are some shortcomings during our development. First, we don’t have a version control for qa-branch and dev-branch, the differences between qa-branch and dev-branch are increasing while the code base is getting larger. When your feature branch merged into dev-branch and qa-branch, it could lead to different result, the developer has to spend extra time to correct differences. Second, if the developer is working on a complicated project and has been testing for a while, your feature branch is probably already far behind prod-branch. Once your feature branch is ready for launch, it could cause many conflicts that need to be solved, which for sure will cause more time to fix this. From the other perspective, whenever you want to do any upgrade or migration to the environment, if these three branches are not exactly the same, the developer need to spend triple time to get the work done.

It’s hard to maintain a development environment perfectly without any issues/conflicts, but the development environment that I am currently working on is definitely not a good practice of version control, but there is always pros and cons while we are making decisions in different stages of our lives.

Cracking Software Engineer Interviews

When I prepare the interview for my internship, I divided my knowledge into two area, behavior question and coding question. Some of the companies will ask Object-oriented design and System design, but normally it is not a requirement for interns and new grads. I also used to do mock interview with Senior Engineers, which helped me as well to get familiar with the process.

When prepare Behavior Question, I use the STAR technique as the following. There are many articles, which explained what is STAR techniques and how to use it. Attached below is what I found online before. The most important thing I found out is preparing your story in different aspects and try not to use the same story to answer different interview questions. Practice with your roommates, classmates, or friends as many times as you can before the interview.

1. Situation: Open with a brief description of the Situation and context of the story (who, what, where, when, how).

2. Task: Explain the Task you had to complete highlighting any specific challenges or constraint (eg deadlines, costs, other issues).

3. Action: Describe the specific Actions that you took to complete the task. These should highlight desirable traits without needing to state them (initiative, intelligence, dedication, leadership, understanding, etc.)

4. Result: Close with the result of your efforts. Include figures to quantify the result if possible.

For preparing Coding Question, there are so many places which provided algorithm problems like LeetCode and LintCode. Starting with easy question and build the confidence at very beginning is also very helpful. I think the number of problem you solved is not that important comparing to understand the basic concept and thinking process. During my interview, the interviewers will focus on the communication and how you walk them through step by step to the solution, it’s more like a TA office hour, clarifying the question, showing other students how you solve the problem instead of telling them the answer directly. All in all, as long as we insist working on it, we will get our job eventually.

Attached some resources that I used to learn Data Structure:

Cross Platform Discussion App – Midpoint checkin

After a month working on our app, Bridge, we finally have 5 screens with general layout, which are login screen, home screen displaying prompts, prompt detail screen, comments screen, and profile screen.

The following we did in this month:

1) We successfully connected to the Firebase realtime database and set it up, so we are able to read from and write to the database.

2) The login screen is fully functional now. Users can create account and use their account to login the app.

3) Our home screen could show up five random prompts and refresh every 24 hours.

4) The prompt detail screen will allow user to view all the comments and upvote/downvote the comments as they like.

5) Our profile screen will allow user to add attribute and see all their activities/comments for “today” when they use the app.

What we are planning to work on after our Midpoint:

1) Improve the UI for most our screens

2) Allow users to edit and delete their comments.

3) Cover more edge cases for login, upvote/downvote, profile attributes, etc.

It’s been a pleasure to work with my team. They are very responsive and helpful to the assigned tasks, pull request review and merge conflict. Attached some screens we are having now, and I can’t wait to share the final version of our app with the rest of the class.

My Bootcamp Experience – Hacker Reactor

When I joined OSU several years ago, I learned my Introduction to Computer Science classes using C++. I am not sure how other people feel about the class, I just feel like I am not good at programming, and I probably should quit early before I invest too much for my second degree. So, after four fundamental classes with C++, I took a year break and thought about giving up to become a Software Engineer.

Back to that time, I was still full-time accountant as I took the break from school. I start looking for job description and asking friends about me about what Software Engineers do everyday and how they come a Software Engineer. That’s when I learned that there is a position called Full Stack Engineer using technologies like JavaScript, Node.js, and MongoDB.

Then I googled online and found there is a bootcamp called Hacker Reactor. They offered Full Stack program which teach you the working flow covered from the client side to the server and how database interact with server. I picked the 12-week immersive program, almost everyday from 8 a.m. to 9 pm. and took Sunday off. You are going to work with different teammates on a project every two days starting from 8:30 a.m. standup meeting and adopt the Agile approach. After 6 weeks, the first half of the bootcamp, I learned the knowledge that I could use in my work everyday as a Web Developer. In the meanwhile, that’s also when I felt that I actually like programming and found my way to study.

I am not going into all the details like what I learned in my Bootcamp. I didn’t finish the whole bootcamp since I thought I learned what I needed from the bootcamp, so I came back to school again and decided to finish my degree. Now I am going to graduate this semester. What I want to say is that everyone has our own timeline, learning curve, and habit. Exploring as many things as we can at the beginning could help us find the way instead of giving up.

Cross Platform Discussion App – Week 1 checkin

The capstone project I am currently working on with my team is Cross Platform Discussion App. We would like to provide a community for users to anonymously converse with each other about any topics they are interested, so they could express their thoughts without any restrictions.

We decide to use Dart and Flutter, which is used to build cross platform applications, so the application will be available for iOS, Android and WebApp at the same time. This way, we don’t need to worry about spending extra time to build the app separately for iOS and Android. We choose to use Firebase to host the backend service as a realtime database, we are not sure how complicated we would go with our app and database, so the limitation of using Firebase is unknown. We open to switch to something else and play it by ear.

The following image I attached below is one of our screen. Our first version of draft design contains 5 screens, and we have extra screens as our stretch goal. We are aiming to create a skeleton for each screen this week and then make sure the navigation works correctly next week. Our progress is on tracking very well based on our project plan. I’ll keep update our progress in the following weeks, and We would like to hear your ideas and suggestions to our project.

Career Evolution

Recalling several years ago, I became a tourist guide right after I graduated from the college in Accounting major. The reason I made the choice is that travel is my most favorite thing since I was litter, and it is still my first choice until now whenever I have time to go. So, traveling around with free hotels, meals, and transportations back then is another big plus for me. During that time as a tourist guide, I learned public speaking skills, visited lots of museums and explored different cultures and histories, earned so much valuable memories.

In the meanwhile, I didn’t give up my CPA exams because that’s my whole college, and I invested a lot of time and money on it. After two years, I passed my CPA exam and found an accounting consultant job. Finally, I could practice what I learned in the college. Dealing with different kinds of clients from different industries was a challenge at the beginning, but had lots of fun. Also, I didn’t stop investing on myself and learning new skills during this job. Most of my clients are software company or biotech company, I feel like programming is pretty hot and useful now, that’s how I started my programming journey.

I spent a while to explore which language should I learn, and where my career will go. I tried bootcamp, and I also enrolled in a college program. Then, I made the decision to quite my job, that’s how I ended up here as a full-time computer science student in OSU. I found my first full-time Web Developer Intern last year. It’s an important capstone for me.

Along my way to switch my career path, I feel like there is no knowledge being waster. All the skills I learned in the past is being helping me, I just don’t know when I am going to use it and where I am going to use it. Those skills are there with you all the time, you probably won’t realize you have it until the moment comes. I am so happy that I make this far. If you want to share your story, I would like to hear your wonderful journey.

Cross-Platform Mobile Development

If we google “What is ross-Platform Mobile Development?”, the definition is the creation of software applications that are compatible with multiple mobile operating systems. I’ve been thinking to try mobile development for a while, and I was trying to pick a platform, either iOS to learn ObjectiveC/Swift or Android to learn Java/Kotlin. It’s a hard decision for me to make because it’s more like a commitment and investment whenever you are planning to learn a new language.

I couldn’t make the decision about the platform until I took the class CS492 Mobile Software Development, which is taught using Dart and Flutter Framework, that’s how I know cross-platform mobile development. the instructor, Yong Bakos’ video is pretty organized and tell you everything you need to onboard you with Mobile Development. I would say this is class that made me feel programming is a fun thing to do, and I want to get more exposure to Mobile Development.

If you are in the situation like me, and would like to get to know Mobile Development, but couldn’t decide which platform you want to pick, this is might be a good starting point. I have some resources that I feel pretty useful and helpful during my learning process, check it out and welcome to leave your comment, we could discuss it and learn it together.


Something about me…

Welcome to my Capstone Project blog. I’m a full-time Web Developer now who is living at Bay Area with two cats and using JavaScript, php, and React most of my time. I started programming several years ago when I was looking around and trying to switch my career path. It’s not an easy journey, but glad to see myself become more skilled and confident about programming after countless day and night struggling.

Along the way in OSU, I have two lovely cats accompany me during pandemic and give me lots of emotional support when I tired of debugging. They are 5 years old brothers, but looks so different, I know… :))

Thanks for spending time to read my blog here. I’ll share more about my favorite technology, how is my capstone project going, how do I feel about this course, my side project, and my future career planning.

I am so excited we all made this far and hope we all learn the skills we want to and succeed in the course and in the future career.