How I worked as a software engineer while pursuing my degree?
I started to be a full-time full stack developer when I was still in school. I often asked by my peers on how I handle both academic and career properly. Inspired by Kent C. Dodds, I decided to write a post to share my experience.
If you need a quick read, skip straight to the next section, there’s where the tips are.
How I started my career and landed on my current job?
I started my career as a freelance developer in my second final year, when one of my then school mates was sourcing IT developers for small IT projects. My first project was kinda premature per se, it was a company landing page (the company is no longer around) developed from scratch. Fast forward to the beginning of the year when I came back from my internship. I continued to work on a freelance basis, provide services like scripts writing, building web apps, while furnishing my final year project. In the middle of the year, I was offered a contract to join a team to build an e-commerce front-end using React, and a permanent job as a full stack developer (both employers are aware of my situation, and they both allow the team to work remote). I chose the latter.
“Don’t you have class to attend?”, many may ask. Yes, I did. However, by compressing my majors in the early years of my degree, all I have to fulfill was not more than 10-hour of class per week. That gives me plenty of time to pursue my interests. Besides short school hour, there are a few tricks I employ, which are listed later.
What my job requires me to do?
- Attend to daily scrum meeting every 9am, we do it over Google Hangout.
- Handle and resolve issues/tickets, we use Github.
- Build new product, which is my major task now.
In a start-up environment, our team is agile, new features are constantly being requested and being built. Also, our team is small, it means we have to handle our entire ecosystem from A to Z. There isn’t a clear cut of what my responsibilities are in the team. In the organization I work for, we are result-oriented. Our bosses entice employees by giving them trusts and are open to suggestions all the time.
How I Optimize My Time?
Fundamentally, the core of optimizing your time lays beyond these:
- Identify where your time goes
- Identify wastage
- Minimize them
Tip #1: Use Your Calendar App
Make use of your calendar app, add events into it, you will see how your time is being used.
Major events in your calendar
Tip #2: Plan Ahead
You have seen when your major events are, now it’s time for you to plan for your day. Start filling in the gaps between your major events in your calendar, what are you filling with?
My schedule after filling up the gaps
If you realize you have nothing to fill in, you know you are wasting your life, you should probably find an interest, or maybe read a book, or maybe go for a walk during your gap time.
If you realize there’s too much to fill in, you know you are doing the right thing, I mean, planning it. Without planning it, there’s a slim chance that you might get all things done on time, but most of the time, you won’t.
How I do is always plan my next day before hitting my pillow, so when my eyes are wide-opened, I know what awaits me.
Of course, I don’t mean to have all the gaps filled, we are human, we need breaks. However, break time should never be as much as your productive time. Well, unless you’re on vacation. 😆
Tip #3: Know Your Prime Time
My eyes are the brightest in my prime time. source: buyrobot.com
What is your prime time? It is a period of time when you are of best condition. During this period, you are most focused, most efficient, and usually get things done right real quick.
Everyone’s prime time differs, for me, my prime time is usually at night. That’s when I do most brain-squeezing tasks.
Identify your prime time, or even create one. You will realize mundane tasks become less boring, interesting tasks become more appealing.
Tip #4: Hold Effective Meeting
Meeting or group discussion should always held with agendas. This may not be applicable to corporate world, but for students, most discussions are usually carried out arbitrarily.
Always keep a list of items to be discussed, conclusion to be drawn, objectives to be met. Discussion time may sometimes go a little out of control, but sticking to the list you drafted (agenda), problems can be solved most of the time.
If no one is leading it, be the one!
Tip #5: Do One Thing At A Time
You can’t be focusing on two tasks at a time, even if you think you could. This isn’t backed by me but science.
Focus is the key to achieve efficiency. If there are something constantly distracting you, say Whatsapp notification, mute it when you need to focus. Cut loose of all sources of distraction, you will need much lesser time to complete a task.
Tip #6: Reduce Friction
What is friction? Friction is something that resist certain motion or action. Let’s take an example, to perform certain transaction online, how many clicks do you need? How far does your cursor has to go to reach a button? The more steps you need to do, the more friction there are.
Reducing friction is something I learnt from one of my colleagues, he never use a mouse when doing his work in his laptop, he says it reduces the motion requires and doesn’t break his flow of work. I doubted it until I tried, and it really does improve my workflow without having to lift my arm, reach my mouse, adjust the grip, move my mouse, click whatever I want and return to my keyboard.
Reducing friction is also always a hot topic in the UX world and businesses are trying to enhance this to enable easier transaction.
Tip #7: Automation and/or Scripting
Crude oil pipeline in Alaska. source: alaska.org
Every morning, the things I do after turning on my laptop are to run my Docker containers, fire up certain local servers, open my IDE and code editor, etc. To speed things up, I wrote a few shell scripts to perform all these. Now, instead of typing and clicking all around, all I do is
CTRL+ALT+T , followed by
Let the machine does the dumb things for you. Instead of deploying it to your development server yourself, set up continuous delivery, let Bitbucket pipeline update your server whenever a commit is pushed.
As a developer, it’s natural to me to embrace automation and scripting, if you have the knowledge too, embrace it, make use of it.
Tip #8: Keep Learning
Being up to date is essential especially in my industry. You can argue that new skills/tools/frameworks might never be applied in your work. However, when we learn, it’s not just about the new fancy tools/frameworks, it also means new ways of doing things, and unforeseen opportunity.
To me, keeping myself up to date is key to stay competent, be more efficient, effective and for personal growth.
A story of my friend, let’s call her Y. Y learnt React in her own time when no one else in her company did. She was fantasied and shared her journey with React to her director. Around that time, her company was turned down a project as the web UIs presented being too ‘classic’. Y’s director, remembering her initiative on learning React, asked her to create a sample app as part of the proposal. The result was fruitful. She never knew that her initiative could help her company to get a multi-millions project.
Tip #9: Take Enough Breaks
Power naps are important!
If you feel demotivated, lethargic, burning out, these are signs that you need a break. If you believe you have done something substantial, take a break, do whatever that pleases you.
Du bist keine Maschine (lyrics from Keine Maschine, it means you’re not a machine), even if you’re a machine, you will still need to be constantly recharged.
Tip #10: Most importantly, Self-Discipline
Strict laws can never be effective without enforcement. That same goes to your plan. The only driver to succeed your plan is yourself. Be self-disciplined, stick to your plan, be clear of where to reach, what to do for the day, the month and the year.
These are my two cents, I’m writing this with my juniors from school in mind. I hope this helps.
First published on 2018-12-20
Republished on Hackernoon