Jan
1
2010
krystiano

Welcome to 2010 !
New Year’s Resolutions are a great idea…in theory. In practice however, we set ourselves to fail fast by trying to be too ambitious and too vague to know where to start. In addition, the methodology which we use to accomplish those goals is not the right one. We try to predict and plan too much up front and this is why most of us fail to keep them. If you’re an IT person then you probably heard about the Watefall model, if not, take few minutes to read this or watch this two minute video and don’t forget to come back to this blog post.
Oh great, you’re back…or you never left. So, imagine that your resolutions are software projects. Because everyone has been doing so for years, we don’t question the New Year’s Resolution methodology and we should because it is very Waterfallish. At the beginning of every January, we try to decide what are and how we will achieve our resolutions. With 12 months ahead of us, we are just setting ourselves up to fail and if even feels like lying, doesn’t it? We can try hard, but we can’t possibly predict what will happen over the course of this year. For that very reason, we need to change our thinking and apply a different methodology. While the resolutions remain the same, we need to define them better and come up with a more flexible approach to meet our goals. Such methodology already exists in the IT world. I bet you that at this point you know where this is going. That’s right, Agile, baby! Now let’s try to apply it to non-software projects, more specifically to your New Year’s Resolutions. The main rules of Agile are not plan too far ahead and to make few smaller steps while re-evaluating the situation after every step.
First thing first. Make yourself a cup of coffee, sit down in your favorite chair with a pen and some paper and write down what you would like to achieve this year. This is an important step, so take your time to think. Be realistic, but at the same time try to push the boundaries a bit. This list will be your so called product backlog. Now reorganize it by order of descending priority, then take the first item from the top and break it down into details. Enumerate your requirements, things you’ll need, people you will have to contact, etc. Order those detailed items by ascending chronological order and put an estimate next to each item. (You can do the same thing to the second item as well, but don’t go too far down the list. Chances are things will change before you even get started working on those item.) This is an important step. What we did here, is we took a goal and we broke it down into smaller more achievable goals, which will allow us to monitor progress and adapt to the unforeseen if needed.
The objective of your mission is to arrive to the destination while having the flexibility of taking different paths along the way. People and events will get in your way. Don’t try to plan for it, rather expect it to happen at some point. Remain positive. Distractions are not necessarily a bad thing, you can learn from them and make adjustments as you go.
Here is where I hand you the ball and run with it. Even if you haven’t been exposed to Agile methodology before, you might not work out perfectly the first time, but keep trying. Once you get into it, you will definitely appreciate the outcome.
Quick tips to help you in your motivation department:
- Make yourself an inspiration board. It’s a great way to keep yourself motivated to stick to the plan. Gather pictures, quotes, whatever reminds you of your goal and pin them somewhere where you can see them everyday.
- Make public commitments. Let your co-workers, friends and family know about the goals you are trying to achieve. This will give you an additional boost to reach your goals. Last year I wanted to stop my coffee drinking habit. Don’t ask why. ….OK, ask why. Because I realized that too much coffee was making me irritable towards the end of the day. I asked few co-workers to spit in my cup if they see me drinking coffee. After I made it public, my additional motivation was to not give then the satisfaction to do so. (While I’m a it, thanks Dave Mosher for inspecting my cup on a daily basis, it helped
) Moral of the story is, involve others, everyone needs cheer leaders.
- Join a club to surround yourself with people with similar interests. If you like photography, join your local photography club, or join a forum on the Internet. There are plenty of people out there, to share your ideas with.
Start right here right now. Use the comment box below to share your New Year’s resolutions.
1 comment | tags: #socialconnections, #vendasta, agile, inspiration board, new year, new year resolution, public commitment, scrum, waterfall | posted in Inspiration, Random Dust, Uncategorized
Dec
10
2009
krystiano

When it comes to career choices, many IT professionals chose to just go with the flow due to so many options out there. We need to choose a programing language, operating system, industry, etc to specialize in. No wonder some just get discouraged while trying to make their next career move. After all it’s our future we’re talking about and we can’t go back in time if we make the wrong choice. Wouldn’t it be nice if someone could just show you how to be in control of your IT career by teaching you where to invest your time to become the most valuable professional in any company? …now there’s a book for that.
I’ve recently read “The Passionate Programmer” by Chad Fowler (@chadfowler). What a great book. So many valuable tips and so entertaining to read. It’s a comforting feeling when you can related to what you’re reading. In his book, Chad writes about how to stay passionate and what actions to take to have a successful career as Software Developer. Following, are some points that I’ve either already put into practice or found interesting. I hope this will be enough to persuade you to read his book:
- Dig deeper. Don’t just use your tools, understand them. If you use ssh everyday to accomplish one specific task, take few minutes to read the ssh man page. See what else ssh has to offer. How about regex? Do you understand how to use it, or you just keep trying until you get what you want out of it? Same goes for your favorite IDE. You will be way more productive if you know your tools.
- Practice, practice, practice. Programming is a creative process. Any creative profession requires long hours of practice. I like photography, so I’ll use that as an example. I often take my camera out just to take some practice shots. I almost never leave home without a camera, but I don’t post photos from every photo I take because a lot of them suck really bad. Which to the viewer could mean that I suck as a photographer (I hope it’s not the case). Musicians, athletes, designers, painters, writers, they all spend time practicing. So why would that be different for a programmer? If the only time you write code is at work, then you are practicing on the job. A great way to practice your programming skills is to work on some personal projects. If you have hard time coming up with an idea for a side project, you can instead do some coding exercises which can be found on sites like CodeKata.
- Finish things. Before you move on to your next task, finish what you’ve started. I personally hate not being able to say “I did it. It’s done.”, after I’ve invested my time into something. Saying “Done” or writing a check mark next to an item on your todo list feels good, doesn’t it?
- Deadlines are your friend. Without having a time window for your task, you will probably spend way more time on it then you should. Sense of urgency can make you more productive.
- Make a hit list. If you acknowledge that you’re procrastinating, then write a hit list. Enumerate tasks, then pick one per day and do it. Make sure the tasks are small enough so you actually have time to do them. After that, that’s it, you got no excuses.
- Be positive. This one made my life so much easier and much more enjoyable, so many times. Stay positive, keep your mind on the present time. That way you will enjoy small victories instead of always focusing on the big goal.
- Stay away from whiners. Also called chronic complainers, and they can stealthy bring you down before you even realize what hit you. Try to stay away from work conversations about promotions, office politics or gossips. Here’s a tips on how to handle chronic complainers.
- Make boring exciting again. From time to time we all have some boring tasks on our plates, so we might as well accept it. Whenever you’re working on a dull task, try to go the extra mile and do a bit more then the minimum required, this should make it at least a lit more interesting as it will make you think.
- Don’t be a yes-man. “Yes” is a positive word, but the ramifications of what you could be committing to by saying it, could potentially be negative. Don’t be afraid to say “No” when your gut tells you so. That way you will avoid unnecessary disappointments.
- Stay cool. Usually, when the feeling of being overwhelmed kicks in when we start to panic. Try to stay calm when fixing a last minute bug. Also remember that everyone makes mistakes, and we all forget. Even if it currently feels like it, chances are that the mistake you just made will never have any impact on your career.
- Own it. Try to be independent and have ownership in your current projects. It will automatically make you more passionate about your work. Propose solutions to your leader or manager. Talk to them about the ideas you have, the additional functionality or performance improvements.
- You are what you explain. I can relate to this one big time. English is my third language. There was a time when my vocabulary was rather limited and I had hard time selling the great ideas I had, during conversations with the director of IT department. I found that if I took the time to write a clear and concise email instead of struggling to explain it to him while standing in the door frame to his office, the chances of him getting excited about it and giving me a “go ahead”, were much grater. Point is, you might have an idea, but if you can’t sell it, then the idea will remain just being an idea. Communication is a skill that can be learned. Personally, I found that a good way to improve communication skills is by writing. Focus on writing clear and concise sentences and eventually you will start talking the same way.
- Speak their language. This is an extension of the above point, but with regards to “translating” what you do, so that non-IT people can understand the benefits of your work. Say, you wrote an app which once a day goes over the records of all accounts and verifies if a credit card is about to expire. So what? How does that benefit the company or department or your client? You can say that instead of the database admin emailing results of a query to the secretary every morning, he will have an extra 30min a day to work on something else. Learn the business language of your industry. Good way to practice is while you work on a task, take a minute to think about how you would explain the business benefits of what you’re working on.
- Share your work. Contribute to an open source project or start a new one. This is a great way to practice your programming skills, learn from other contributors and make new connections. By doing so, you will demonstrate that you’re passionate and got a nice set of skills to potentially lead a project.
- Be a good listener. No matter what’s their title, everyone appreciates a good listener. People like to talk about their achievements and their passions. Appreciate the fact that they want to share something with you, learn from their experiences and feed of their positive vibe.
- Focus on the process. Everyone probably heard this many times before, how maintenance cost is the biggest chunk of total cost of a project, but never tried to do anything about it. Be nice to your code and it will return the favor. Good process will lead to good code. Bad legacy code will enforce bad process. Take the available time to get it done right. Don’t burn time gold-plating, but make sure you’re satisfied with what you’re committing. Before you write a single line of code, run your architectural design by co-workers. There are (hopefully) more brains then just yours in your team, so rely on them and implement changes suggested in code reviews. Oh, and ideally…TDD everything. TDD positively affects the way you write your code, and makes both production code and test code more maintainable.
- Seek feedback. This was always a natural thing for me to do. At any job I had, I was always curious about how am I doing from the manager’s, director’s or president’s point of view. Do they think I’m good at what I do? Do they even notice the effort I’m putting in? Do they wish I was better at something they could benefit from the most? Think of people you would like to get feedback from. Then ask those people to honestly answer few questions about yourself and your performance. Do it in writing, so that they can do it whenever they find time for it, this might also yield to more honest answers.
- Be agile. Agile works well for software projects, but it’s applications are not necessary limited to software. Apply agile approach when planning your career. It’s a fast changing industry, and no one can predict which way it’s going. By being agile with your career, you will be able to better adapt to changes as they come.
Those are just few tips that will help you drive your career as software developer to the destination of your choice. If you do want to be in full control of where you going, then pick up Chad Fowler’s book.
2 comments | tags: #socialconnections, #vendasta | posted in General, Inspiration
Oct
24
2008
krystiano

Life rocks! Yep, life is awesome! For me, the best thing about life is challenges. Seems like I can’t go through a day without challenging myself. The more I do, the more ideas I get about what to do next, and so on and so on and so on. Recently I found a bug in the way I live my life. I spend most of my time chasing stuff and not because I have to, but because it’s fun. I wish I would spend some time enjoying my achievements before I attack the next challenge standing in front of me. Just looking at the last 12 months, we bought a brand new house, we got married, I worked on a lot of great projects, I made more money then I expected, I met a lot of cool and smart people, and lots more. But now that I look at it, I just took it all for granted, instead of stopping for a moment to say “WOW” or “sweet”, or whatever sounds fresh those days.
OK, the above paragraph totally sounds like I’m miserable. I’m not. No really, it’s all good. I’m just amazed with the endless pool of things that I can occupy my mind with. I don’t recall ever saying that I’m bored. There is just so many things I want to do. Now that I think of it, I don’t remember last time I brushed my hair, but that’s because I like to keep them short like my phone conversations. Perhaps a slightly different topic? …Anyways.
Recently I decided to brainwash myself by watching documentaries about the “Law of Attraction” (like “The Secret“). I came to the conclusion that it’s pretty much how I have been living my life without even knowing “the secret science” behind it. Yeah, I did have to deal with some unpleasant crap in the past, but I dealt with it and I moved on. Some might argue, but I think that one’s past doesn’t determine one’s future. There are so many different paths to chose from, that the path you chose doesn’t mater that much. That is, as long as you have a goal, a destination which you want to eventually reach and you are motivated to reach it. (The key word here is motivation). It’s sort of like driving on a highway at night. You’re driving from Saskatoon to Vancouver, and you know that you want to end up in Vancouver even if you can’t see it yet. The only thing you can see is what is few hundred feet in front of you, or whatever the headlights can reach. There is always a chance that you will take a wrong turn or you might get a flat, or the car will break down, or you will run out of gas money, or even stop along the way to enjoy the Okanagan Valley, but this might only slow you down, not prevent you from arriving in Vancouver.
So all this to say that life is awesome, and that I plan to take some tome to enjoy it. My goal is to organize myself to find time again for things that I used to have time for before. Like photography, music production, blogging, and most importantly my wife.
3 comments | tags: challenge, challenges, law of attraction, life, the secret, time management | posted in General, Inspiration, Random Dust
Aug
6
2008
krystiano

I decided not to count days anymore as I’m starting to feel like I’ve been a freelancer long enough. I’ve learned so much in the last couple of months, that I feels like I’ve been doing this for years. One cool thing that I realized just last week, is that working long hours is good for me. I actually see it as an investment. I spend most of my time writing code. Since the beginning, I kept track of my hours, what I worked on and when, etc. (Doing stats on myself is interesting.) Recently it felt like writing code got easier, and was taking me less time to do the same amount of work. Being an engineer, I had to back it up by some proofs. So I checked my time sheets from few moths ago and last few weeks and it was true. I improved my efficiency by about 25%. So by spending long hours coding, I now can spend less hours coding. Sweet.
Why stop there? That got me thinking that I should try to enhance my other skills. As a freelancer, there are other things that one needs to take care of. Accounting, marketing, documentation, research, customer relations, etc. By having to deal with the above on daily basis, I obviously got better at it, but I’m sure there is still room for improvement. I’ve always been a self-learner. (That might explain why as a kid I walked into a river and almost drowned.) I find it more rewarding when I figure out things all by myself. But the future me decided to try a different approach for once. I decided to learn new things by means that I never tried before. So I decided to read a book. I read books before, but they were all technical and related to my field of study. This time I’ll be reading a book that my wife have chosen for me. I asked for something with content but nothing too technical.
OK, let’s jump to different subject now. Salespeople. Their job is the exact opposite of a developer (me). A good salesman can sell anything, even something that doesn’t exist. To make things even more interesting, he can promise the client that it will be ready by the end of the week. As a freelancer, I get to be the salesperson and the guy who makes it happen. Therefore I need to make sure that I don’t commit to unrealistic requests. What’s interesting is that freelancing offers way more then just more money. It gives me a chance to explore different fields and opens a lot off doors. Let’s say I’m an employee (programmer) and one day I decide to make a turn and become a marketing manager. I got no experience in marketing, so what do I do? As a freelancer, I get to explore the marketing side of business whenever I feel like. Maybe it’s not on the same scale, but still, it’s a good introduction to something new.
So basically, I decided to invest some time to learn the non-technical things and try out some new learning methods. I will let you know how it goes.
no comments | posted in General, Inspiration, freelancing