Below is a list of common and useful commands for working with docker.
List all images in local machine
docker image ls
List all running instances
docker ps -a
Stop/remove all docker images
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Run a container from Docker Windows using .NET Core image
docker run --rm -it -v "$(pwd):/app" -p 5000:5000 mcr.microsoft.com/dotnet/core/sdk
(Notice the double-quotes around path, otherwise pwd will not work from Windows)
Run a container with Redis
docker run --rm -it -p 6379:6379 redis
Get into a running container
docker exec -it 55ff7be44aba /bin/bash
(Replace 55ff7be44aba with the actual container name or id)
The following list shows some of the tools I have used (and still do) on my daily activities as a Software Developer.
Task & Time Management
- Google Drive
- Visual Studio
- Visual Studio Code
- Visual Studio Online
- SQL Management Studio
- PowerPoint Story Board
- Microsoft Visio
- Visual Studio Online
- Microsoft TFS
Team Work / Collaboration
"It's all about working smarter, not harder".
Effective Time Management techniques must be one of the most popular online topics among professionals of all fields. In Software Development specifically, being able to manage time is a critical skill every person should master, since the work usually requires large number of complex (and sometimes abstract) tasks, and the pressure to comply with a specified timeline. Also, good time management will allow developers and team managers to provide better estimates and assessments when facing new projects, as well as identifying unrealistic scenarios. At the same time, no matter how obsessed you are about your work, you would also like to accomplish great things in your personal life, have a healthy life-style, and make sure you spend quality time with your family and friends. In this post I’ll provide several tips that I’ve learned throughout my career from listening and paying attention to other great leaders and highly efficient people.
Select the best tools
You will need tools to capture data and manage time and activities. The first thing I’d suggest is to try several tools and find the perfect combination that works for you. Things you should consider are:
- Easy access from anywhere (desktop or mobile)
- Very simple to use (you wanna make this process very simple and pleasant)
- Use templates and forms (remove the repetitive areas and only focus on what you need)
In my case, I’ve found the following tools very useful:
- Microsoft Outlook for managing work calendar
- Google Calendar for managing personal activities (although some times I mingle work and personal items in Outlook, since the 9-5 schedule is no longer so rigid and we can get work done from anywhere and at any time).
- Microsoft Outlook Tasks for maintaining a lists of pending items at work and reminders
- Wunderlist mobile app for maintaining a list of personal pending items
- Company’s Performance Tool to manage career goals
- Google Drive to store forms and templates I’ll use throughout the year for personal growth
Tips for Time Management
Set your Goals
You wouldn’t visit a new country and try to drive without a GPS, would you? If you are really serious about your career, you would want to know your accomplishments and identify your areas needing improvements. You need to set realistic goals and push yourself to meet them, then you can perform an honest assessment and determine why you fell short, or if it was an extremely easy year, how to maximize your potential. You can use the TTT&T list:
- Set goals for This year
- Set goals for This month
- Set goals for This week
- Set goals for Today
An interesting variation of this is the “Rule of 3“, proposed by JD Meier.
Break down the goals into actionable and time-bound items.
Tasks should be small (no more than a day) and outcome should be well-defined so you can measure results.
To be honest, I stopped worrying about keeping my master list sorted by priority at all times, since requirements tend to change frequently, and therefore priorities are affected. What I like to do is to make sure I have meaningful tasks up in the list and prioritize them based on due date and actual value (what benefits do I get from completing a task).
Block time in calendar for focus time
Calendar is a great tool, use it properly! Most people only use calendar items for team meetings and online calls. It is a great practice to also block time for focusing and completing a task. This is a great way for optimizing the work day and also letting your boss know that those meetings better be critical, otherwise some work is being pushed back.
Albert Einstein said: “Never memorize something that you can look up.” I guess this phrase universally applies to many things, but in this case, the bottom line is to free your memory and rely on tools to remind you what needs to get done. In my case, this allows me to go home for the weekend and totally disconnect, since I know that Outlook will tell me where I left off. Also, I never miss any birthday 😉
Work more with a fresh brain
Most people are more aware in the morning, but you should identify what is your most efficient time of the day (I used to prefer late night for getting stuff done when I was in college, but I now I’m more of a morning person). Choose tasks that require high level of concentration and effort and work on them when your brain is fresh, and leave simpler tasks for later.
Track your daily achievements and reward yourself
This is not about maintaining a diary, but recording meaningful things that are being completed so you can tell whether you are on track or not, and adjust you workload accordingly (or ask for help). I have to agree that this is not a fun task, as it represent extra work, however, the benefits are clearly visible and will be very helpful. You can try these tips:
- Dot it the same time each day so it becomes part of the daily routine.
- Use a template so it is very simple to do.
- Review achievements on a weekly and monthly basis and reflect on them.
- Recognize your accomplishments and reward yourself.
- Identify what areas need more attention in order to meet your goals, and act on them.
Calibrate your plan
You should try to stick to your plan, even if your ultimate goals look impossible to reach sometimes. Perseverance and hard work is one of the greatest skills that will make a person succeed. However, often times the path we are taking to achieve those goals is not always the most efficient one, hence we need to calibrate and make subtle changes to get back on track. It is a good idea to frequently compare your achievements against your goals and make proper adjustments.
Leverage Productivity Tools
Here are some of the tools that can assist in becoming more efficient and aware:
- RescueTime – Automatically tracks time and activities to help you understand daily habits and identity productivity issues.
- Pomodoro Technique – Allows to organize and split the work day into small intervals, in order to reduce interruption and reach maximum focus.
Say “No” more often
This sounds bizarre, but it is actually one of the most important things we can do to be more productive and reach desired goals. It is not about insubordination or refusing to help others. This is about clearly defining what activities are more important in a given moment, and staying focused. It is also about avoiding unrealistic schedules that will result in stressful situations and missed deadlines. Every “yes” is actually a “no” to something else.
Time Management is a very critical skill every software developer should master. There are countless guides, articles, and tools available. The most important part is to recognize how to make efficient use of the time by spending it in meaningful tasks. It is also very important to reach a good work-life balance in order to feel accomplished and energized.
Productivity vs Guilt and Self Loathing – Scott Hanselman
15 Secrets Successful People Know about Time Management – Kevin Kruse
The 7 Habits of Highly Effective People – Stephen R. Covey
Getting Results the Agile Way – JD Meier