Image Credits : ngcenter.com Engineers play such a crucial role at every single stage of product development. Their energy, motivation and productivity levels greatly determine how well a project is delivered. We at , work with some of the best engineers from across the world who have worked in companies like and the likes. Indiez Google, Microsoft, Apple There is something something remarkable about the way they work. They know how to operate super efficiently and maintain high productivity levels! This is something that truly sets them apart. It’s the reason why they are able to drive excellent results! Image Credits : Quantstart.com Let’s face it — Every engineer goes through these phases of lack of productivity. And it takes time and a lot of to get better and start working upto your full potential. Sometimes, it’s just plain frustrating. learning You might have been there too! Have you ever had a feeling where you felt that you are not doing enough? You feel unproductive and feel bad about yourself? Every single day? If you haven’t, I can tell you that it hurts. It hurts bad! “There was a time when I was super unproductive. The entire day would pass and I would feel like I hardly got anything done. Despite trying hard all day, I wasn’t meeting my own expectations. Without that feeling of accomplishment at the end of the day, it just gets frustrating. And, it amplifies 10X when you work remotely. After I had had enough of being in this unproductive state, I got into my hacking mood and decided to hack my way towards ultimate productivity. I researched and read 100s of articles and several books. And, I learnt a lot! Post that exercise, I was a different person. I am better programmer now, I complete my deliverables in time and most importantly I feel happy and accomplished at the end of every single day. ” — One of our community members, previously an at . Engineer Google So what changed for him and the others who had a similar journey? We spent time talking to them and improving our understanding. Following are the few gems from the learnings shared by our awesome community members. Applying them has helped them improve and this has got me excited to share it with you. 1. Solve challenges on your own Credit : www.functionalimperative.com Work flows breaks every time you stop and think. It breaks every time you do quick Google Search about something you don’t know. It breaks when you find answers to your queries on Stack overflow. If you do this often, believe it or not, it’s your worst crime as a engineer! Why? Because your deep flow state of work is what you should preserve. It takes a lot of energy and focus to get into that and it would do you well, to stay in that unless it’s absolutely necessary to break away from it. “I know that it’s common to have doubts. Every now and then, you might come across a tricky situation. But, rather than rushing to the internet to find an answer, refer to the documentation.” — Amrose, Co-founder and CTO at Indiez While this might seem to slow you down at the beginning, over time as you work on this as a habit, you will see it doing wonders for you. You will gain more in-depth knowledge that you will retain. You won’t get distracted by a dozen other things that you see online while trying to find answer to a query. Most importantly, this will become a part of your work flow. 2. Type Smart. Type Quick! Image Credit : AndroidAuthority.com There has been a lot of talk about whether typing speed matters for a programmer or not. Is it important to know touch typing? How much difference does it really make? “Here’s my take on it — If you want to become a great programmer, become a great typist first! The fundamental reason why typing speed matters so much when it comes to programmers is — One of our community member, previously an Engineer at Microsoft. When you’re a fast, efficient typist, you spend less time between thinking that thought and expressing it in code.” — This is a great way to remain in that deep workflow state. When all your conscious thoughts go into the code rather than going on the process of getting it on the computer, it’s one less step that your brain needs to perform. So yes, it does boost your overall efficiency. If the keyboard is your primary method of communication (much less look at it) any more than you should need to think about pronunciation while speaking in your native language. you shouldn’t have to think about it There are resources and to learn touch typing. For instance, you can use tips Typing.io to get started. 3. Automate Equally important as keyboard usage is the approach to automate as much as possible. Computers were built to automate simple, repetitive tasks very fast and make our lives easy. It’s a waste if we don’t use them for that! Stand back once in a while and reflect which tasks and actions you’re doing the whole day and what can be automated and improved. This may be launching applications, using menus with the mouse instead of shortcuts, manually applying the same actions or typing the same commands all over again, typing long shell commands a lot of times instead of using aliases, and so on. Try to be lazy here; that’s a good thing in this case. As the system gets larger, engineers tend to spend more time fixing bugs. Eventually it gets to the point where they not productive at all. Through Continuous Integration (CI), you can catch many bugs as soon as they happen. Automate tests to avoid manual assertions as well as manual repetitive testing. 4. Use Terminal and Vim Vim is an extremely powerful text editor and can become a full-fledged IDE_,_ by any measure of the word_,_ when combined with other tools such as: : e.g. + . This makes it easy to execute files, send selected to text to consoles, run tests, etc. without leaving the terminal. Terminal multiplexers tmux vimux : e.g. rails.vim ( ). This provides framework specific commands for file navigation, refactoring, and Rake/Ruby on Rails scripts. Language and framework specific plugins vim-rails : e.g. fugitive.vim ( ). Allows execution of any Git command within Vim. Version control plugins vim-fugitive The power of vim is huge. Very small number of people actually do know how to use most of it. I’m certainly not one of them. Refer to this list of productivity hacks by — Approache Blog My favourites are: Remap your CapsLock key to Control Because the key is located extremely inconveniently while is right under your baby-finger. All the time. Why? Control CapsLock Follow . How? this guide Use Vim jumps A lot of times you need to jump forth and back between 2 place or go to where you’ve been a minute ago. A log of people just find that line/file again. It’s a waste of time. Why? How? Ctrl-o and Ctrl-i to go to the previous/next location you jumped to. `` (two backticks) — jump back to where you were. gi — go to the last place you inserted a text. Use appropriate Vim navigations Typing l (move right one symbol) or similar multiple times is waste of time. Why? How? { and } — jump back and forth. paragraph Ctrl-F/B — move one back and forth. screen Ctrl-E/Y — the screen. scroll * (star) — search for the word under cursor, then n/p to jump to next/previous. add imap jj <Esc> to your .vimrc and don’t use Esc anymore. Changing case and repeating a command Because a lot of things can be done much more efficiently. Why? How? ~ (tilde) — toggle the casing of a letter/selection (upper-case/down-case). . (dot) — repeat the last set of commands (use in a combination with search, such as *, and jumps). Temporarily map commands you run Because you don’t want to type the same command over and over again. Why? One example is nmap <leader>s :! bundle exec rspec % — colour — focus<cr>. This will run the current spec file when you press ,s (in my case). How? : if you do something more then twice in the terminal outside of Vim, map it using nmap. Don’t switch windows, . Rule of thumb don’t lose your context For Terminal productivity, Use iTerm2 At least because you can split window without losing the context. Why? Install it from the site (or even use tmux!). How? iterm2.com Use Ctrl-D/Ctrl-Shift-D (while in Vim or any iTerm tab/window) to split the current terminal window opening a new shell but still being able to see what you are currently working on. Use !! (double bang) or arrow up Because it repeats the previous command that you should have mapped in Vim but didn’t. Why? Just type !! and it will execute last command. This is simple, but strangely enough I can see people are actually retyping commands. How? Enable Vim mode in bash Because you navigate in the terminal too. And Vim mode makes it seamless. Why? ? and add set editing-mode vi to it. How Create an inputrc file 6. Eliminate decision fatigue when starting out Sometimes the problem is “ .” I have no idea what code to start writing Have you ever been stuck in this state of decision fatigue? Where you just can’t seem to decide which piece of code should you start writing first? This happens when you have a huge project in hand. The simplest solution is to break your big application into a set of small applications or user story. The idea here is to build one piece in its entirety and then move on to next. Write code wherever you can, start with simple classes or functions. For instance, if it is a YouTube app that you need to code, start with the video player. Think of it as an exercise in continuous delivery — write the code that would actually make a first, no matter how silly or small that product is. A video player without any other UI is a product that does something useful (play video), even if it’s not a product yet. product complete We are confident that applying these simple hacks will help you scale your productivity levels. At Indiez, we are always on the lookout for super awesome talent. Apply to Indiez to enter into a remote work culture where we guarantee you freedom and fulfilment and you help us deliver awesome results. Just go on and our . fill our application form At we work hard to curate and manage top 1% tech-talent from companies like , Facebook, Uber, Spotify, Booking.com and the likes. Indiez Google Join 100+ amazing founders who built successful products with . Indiez Know more about us here — Indiez.io