I left my job for another opportunity after working for 8.5 years. Since I had nothing left to do on my last day, I decided to get little creative and looked up online about how do write farewell email on Game of Thrones style. With little help from internet, I came up with the following email.
My lords and ladies,
It has been a great honor serving this most noble
software development house. I fought for this house with all my heart
for 8.5 years and we won some glorious battles together.
Songs will be sung for the next thousand years about our great victories over White Walkers(Bugs and Issues).
It’s a bittersweet ending for me to part ways and go North of the Wall now(NEW_COMPANY is north from OLD_COMPANY).
Whatever I do in the future, I now take this pledge
in the sights of Old Gods and the New, that I will forever cherish the
time I spent here and I hope you Lords and Ladies do the same.
A Guessing Game - to become Full Scope/Stack Developer
If you are wondering what would be a perfect project to practice your programming skills. You are in the right place!
It's a simple number guessing game. We start with a console app and migrate to a web app with lots of features.
Steps
1. Console App:
Read a number N from the console between a range (MIN, MAX). Your
code should then generate a random number CN between the same range(MIN,
MAX) and compare if the computer-generated random number CN and the
user entered number N matches.
If it matches, the user wins. If it doesn't match, the computer wins.
2. (Optional) Desktop app:
Create an interface to enter the MIN/ MAX number and the user guess.
MIN : [ Textbox ]
MAX: [ Textbox ]
User Guess [ Textbox ]
Also provide a button with label "Play" that generates the random number and displays a message in Label if the user won.
[ Play ]
Save the win/loss counts and winning/losing number in a text file
'stat.csv'. Display the average win/loss on UI when the user closes the
app.
Update the GUI or Console application to allow two users to play
with the computer. Both of the users can enter their guess and click
Play. The user that made the correct guess will win
GUI mockup:
User A's Guess [ Text Box ]
User B's Guess [ Text Box ]
[ PLAY ]
4. (Optional) Multi-Player Game - over socket connection:
Update the GUI application to allow several users to play
simultaneously. All the users will have a copy of the application and
can join the Game by running the application on their computer. The
first user to start the game can act as a Server.
5. Web Application:
Create a web application to play the same game in the browser. Reuse the previous code on the backend
Support single-player mode (play with the computer).
Add a sign-up page to register users. Update logic to allow only the
registered/logged-in users to play. Use ReCaptcha to prevent robot
making requests.
Block users from playing more than 1 hour. Lock them for 2 hours.
Multi-player: list online users and provide the ability to
request/accept to play with the user. Use WebSocket to listen for
updates in realtime.
Store the win/loss statistics into DB.
Generate a CSV report with stats about the winner, numbers, etc that you can download it from the web interface.
6. Fun Stuff
Schedule the 'winner stat' report to run every day and deliver it to your email address.
Setup a background job that sends an account deactivation email if the user is not logged-in in last 20 days
Setup a background job to deactivate user if the user is not logged-in in the last 30 days
Setup a public web API to expose information about the winners
Use caching to read user profile from the cache instead of reading from DB on every request
7. Operation:
Setup a Dockerfile script to run your app in docker
Setup static code analysis with local SonarQube instance. You can use docker to run SonarQube. Take care of SonarQube warnings.
Deploy your app in a cloud environment (eg Heroku, AWS, Azure)
Note:
Focus on readability, reusability throughout the development.