Posts Tagged training
Give yourself a promotion, no one else will.
Posted by cgrant in Business, Career Development, Productivity on November 18, 2008
Are you happy with your current position in your company? No, what are you doing about it? I hear people complaining way too often that they are unhappy with their work and for whatever reason they put up with it. The overwhelming reason is that people are waiting for someone to pull them up through a corporation. They’re looking for a manager to create a development plan, waiting for an executive to offer them a promotion, waiting for a project manager to ask them to be on the next big project.
No one cares about you
The bottom line is none of this will happen. Sure there are the cases where people are really recognized for the value they provide but it rarely happens. Think about it, if you’re doing a great job in your current role, why would a manger want to pull you out of that roll and put you in something else, she needs a competent person in that roll.
Provide a successor
Sure you may think you have job security being the linchpin in a critical system, but if you’re the only one who can do it there is no way your managers will push to get you on something else. As for a development plan, most development plans are geared toward what the enterprise wants not what you want. If you’re a java developer and you want to be well rounded, ask your manager if you can take a class on C#. Best of luck with that.
Create your own development plan
We’re not talking about a development plan for HR, make one for yourself. Don’t just sit there looking at it, act on it. Truth is if you haven’t learned anything new in the past three months you’re not going anywhere.
Learn something new each quarter
The whole objective is that you need to work for what you want and where you want to be. Point in case, you want your managers job. How willing do you think your boss would be to stepping out of your way. Exactly, your manager has no interest in grooming you for his position. If you see no room for movement within your team look elsewhere.
Find your own path
Better yet move someone out of the position you want. No I’m not talking about hiring a hit man. Pick a position you want and get close to that person. Understand what *they* want from their career and help them get there. Challenge them to be better ask them questions, compliment them in front of key people, help them get where they way to go. If you’ve played your cards right you’ve show you have the skills and have been visible enough to slide right in to the empty chair.
Help your obstacles move
You might find yourself in a place where everyone is very content and no one wants to move anywhere. First be careful you don’t catch what they have. Truth is there is nothing wrong with aspiring to be better than you are. It’s not a sign of weakness, rather is a sign of strength. Sure your developer buddies may laugh that you sound like you want to be a manager, but in five years they’ll still be there doing the same thing, you’ll be bringing in more cash, doing cool new things.
Embrace your dreams, they’re not nightmares
Finally it’s called the corporate ladder for a reason. You need to take the time and effort to climb it. You need to work at it, find resources, look for opportunities, be proactive. If managers and leaders really were to pull you up through the ranks it would be called the corporate elevator. You need to make it happen.
Give yourself that promotion
Social Media Primer
Posted by cgrant in Business, Productivity, Technology on November 18, 2008
Recently I was asked “OK so what is the different between Twitter, facebook, Myspace, LinkedIn, Plaxo etc. which one do you think is best?” So here’s a little primer on the various social media and social networking tools available.
First off, what is social media? Wikipedia states “The term most often refers to activities that integrate technology, telecommunications and social interaction, and the construction of words, pictures, videos and audio.” What does this mean to you? In short it means you can communicate with more people easier. These sites were originally used for entertainment purposes, but have been finding their ways into large enterprises as a core tool in facilitating business. Understanding these is important, not just to keep up with your teenagers, but to keep up with business in the new communication age.
Information and Content:
Our story so far. Email broke on to the scene and invaded businesses. The ability to communicate digitally significantly increased the amount of knowledge and information flowing around the enterprise. Soon we found chat programs such as AIM, Yahoo Instant Messenger, MSN Chat, and Google talk, which allow individuals to communicate real-time with another party. These two tools ushered in a change from local and national focused groups to a globally centric society. But you know that already. Lets move on to the fun stuff.
Blogs:
Blogs, short for Web Logs, is a sort of online diary of sorts. Originally, only web designers and technical individuals were able to publish content on the Internet for the world to see. Blogging applications opened up the web for everyone. These tools allow anyone with rudimentary computer skills, to simply type and click to post content online with no technical knowledge needed. The Internet saw a huge boom in content. Where once only large news companies could report on events, now anyone with a computer could post their thoughts ideas and information. Blogs are now used on the Internet as professional News tools, personal diaries, and reputable information sources. Companies are also incorporating blogs into their intranets to capture knowledge,manage internal communications, and generate ideas.
RSS:
RSS is short for Really Simple Syndication. The problem the Internet faced was that to get all the information you wanted you had to go out and find it. Sure you could book mark sites, but still you would have to go to them regularly just to see if there might be new content. RSS offers a way to have content sent to you when it has been updated, similar to how emails show up in your box after someone has hit send. When you sit down to your email program it tells you if there is new mail or not. You don’t need to go to all your contacts and ask if they have new information you should know about. You get it as soon as its ready without having to go look for it. RSS is typically used with a tool called an aggregator. These tools allow you to collect and organize your various RSS feeds and offer a central point to go for all the information you subscribe to. Google Reader is one of the most popular tools and allows online management of your feeds so you can access it from any computer you may be at.
People and Connections:
Business cards, Rolodex, Address books. The problem with these is keeping them updated and fresh. However you use these tools, be it for keeping track of family member addresses,professional networking or even initiating sales calls, making sure the contacts are kept up to date is always challenging.
Plaxo: Years ago Plaxo came on the scene trying to solve this problem. They offered a service where your contacts could come and update their information directly in your address so the information would be kept up to date. The early implementation of this concept was met with mix results. While the concept was interesting, the tools would email all your contacts in your lists asking for updates. People wanted more control, and while it eventually came, users had a bad taste from earlier experiences with Plaxo.
Networking:
Since the dawn of organized commerce, the mantra has been to expand your network. It’s not what you know it’s who you know. Six degrees of separation and more. You’ve heard all this, that’s why we’re members of professional organizations and why we go to conferences, heck that even why we go to lunch with some people at work. So it was no surprise that the Internet would come along to help us network.
LinkedIn: Many services have popped up in this arena. One of Plaxo’s rivals, a company named LinkedIn, came along and cemented itself as *the* directory to be registered in online. LinkedIn provided similar features to Plaxo in that you would register your information and invite people in your lists to join the service, however LinkedIn also spent a lot of time trying to connect people with each other (thus the name LinkedIn). After completing your profile, LinkedIn would suggest some people you might know based on things like your school or workplace. It also cross references the contacts you have to see if maybe your contacts have some people you might know. This ability to find the people you know, coupled with the added privacy and the simple fact that the contact information is very up to date has made LinkedIn a premier tool for managing professional contacts.
Plaxo: Plaxo came back on the scene but more because of the new service offing they added. A feature called Plaxo Pulse was one of the first tools to take full advantage of the emerging Web 2.0 integration that other sites were offering. Plaxo Pulse would give you a centralized view of what all your contacts have been up to recently. Bob, posted a new blog entry, Jane uploaded pictures, Jim updated his position title etc. This was a great feature for helping you stay connected to your network. It makes it easier to say, “Hey Bob, i saw you got promoted from director to VP way to go, how is everything going?” Plaxo even offers birthday reminders based on your contact’s profile. Even if you don’t know when the birthdays are of all the contacts in your list, if they entered it in their profile Plaxo will let you know its coming up. Sending a quick “Happy Birthday” has never been easier.
Facebook and MySpace: These two sites also allow users stay connected but in a more interactive way. As with LinkedIn and Plaxo, MySpace and Facebook start with your profile. Enter in who you are, what you’re interested in and some people you know and you’re off. These sites encourage more real-time contact. If you remember back the chat clients we talked about before required you to be online and in conversation with a person at the same time they were. The new age of communication is asynchronous. People don’t have one conversation at a time and they don’t have conversations at the same time as the person they are conversing with. Sites like facebook allow users to post messages and responses when they have time.
Similar to email except that the information is open to the group of friends. Think about an email that has multiple recipients (family), “hey all jimmy has his first girlfriend”. Grandma replies to all, “that’s great”, aunt Becky replies to all at the same time “how sweet”, uncle john replies to all on grandmas email “way to go tiger”. All these people are communicating in their own time and with each other. One problem is this type of communication through email clutters up an inbox and offers a chance to lose a message. If I were to open up Uncle John’s email and saw grandma’s response in there also, that’s great, but I miss Aunt Becky’s response. Doing this online in a site like Facebook or MySpace allows everyone to participate cleanly and in a more organized manner. Yes companies are implementing internal Facebook sites also.
Twitter: This one is a bit harder to explain It’s commonly called micro blogging. The basic premise behind Twitter is that you can post content in 140 character segments. People who follow you will see your updates. This is ll just like blogging. Also as with blogging people can reply to you online for all to see. However it’s much more than blogging with less words. Looking at just the first page of the twitter site you start to see the difference. On the first page it says, “What are you doing?”. So I type “getting ready to head to the bar”. Sure I could do this in a blog but blogs have become more article oriented paragraphs of content. Twitter offers quick updates on the world around you. While twitter has a website where you can manage your updates and track friends, this is more of the old style of information management where you have to go out and get it. Using twitter clients allows you to get a constant feed (similar to RSS) on what your network is up to. many of the tools also enable you to see what everyone is talking about, what trends the masses are focused on.
Technology
Web 2.0: Web 2.0 has many connotations. Simply put however its the idea that sites and services on the Internet should be able to work together, share information and utilize features from other sites rather than having to reinvent the wheel for a great service. What you’ll find now is sites like twitter allow you to post updates into Facebook. You blog can pull Facebook information and display your twitter posts. Plaxo can let you know you contacts updated content on all these sites.
Mobile: As computing becomes ever more mobile, access to the Internet and all this online information becomes much more fluid. People can chat asynchronously via text messages, post pictures on where they are right now. The walls and barriers that kept information isolated are disappearing.
As we see the progression the Internet over time we see that people want to be connected with each other. They want to get and share information. They want to connect with new people. Social Media sites are allowing individuals and organizations the opportunity to share information like never before. Success in the future will be based on your ability to adapt to these changes today. So get out there and create a profile.
Bite Size: Refactoring in Eclipse
Posted by cgrant in Architecture, Development, Java, Technology on August 6, 2008
IDEs offer many tools that speed up the development process. Among the many features in eclipse for coding are a series of commands for refactoring code. Understanding how to quickly utilize these commands will dramatically speed up your development process.
- Display Available Refactor Commands (Alt+Shift+T)
- Rename (Alt+Shift+R)
- Extract to Local Variable (Alt+Shift+L)
- Extract to Method (Alt+Shift+M)
- Change Method Signature (Alt+Shift+Y)
- Undo Refactoring (Ctrl+Z)
Bite Size: Object Oriented JavaScript
Posted by cgrant in Development, Technology on May 28, 2008
JavaScript is typically thought of as a procedural scripting language, however it contains many aspects that allow for Object Oriented style scripting. Below you will find a few examples of how to script JavaScript in an Object Oriented style.
Before you start
The best way of studying this tutorial is to have Firefox with Firebug handy. This way you can test the tutorial examples immediately.
Install both of them if you haven’t already done so.
Also review the tutorial on using Firebug and additional tips on debugging with firebug
{tip}
The Firebug command line, found at the bottom of the Console tab, is no different than any command line you’ve used in UNIX, DOS, or Windows—except that it accepts commands written in JavaScript.
The command line is more than just a place for one-liners. You can expand it to become a full-size editor. When you’re working in your external editor, you can quickly copy-and-paste code into the Firebug editor to execute them immediately and how they effect the live page. Once you’ve gotten the result you’d like, copy the finished code and paste it back into your editor.
{tip}
Variables
Global variable definition
var myVariable = "myVar";
function visibilityExample(){
/* visibility: public */
this.publicVar="";
/* visibility: private */
var privateVar="";
}
Methods
Simple method with return
function MyMethod1() {
var rtnVar1 = null;
this.pubVar1 = "1";
rtnVar1 = this.pubVar1
return rtnVar1;
}
alert(MyMethod1()); // returns 1
Static Objects
Demonstrates Object with static methods foo and bar
var MyObject2 = {
foo: function() {
var rtnVarFoo = null; //private variable
this.pubVar2 = "2"; //public variable
rtnVarFoo = this.pubVar2;
return rtnVarFoo;
}, // notice the comma
bar: function() {
var rtnVarBar = "2";
return rtnVarBar;
}
}
alert(MyObject2.bar()); //returns 2
Basic Object Instantiation
Demonstrates basic object instantiation
function MyObject3(r,g,b)
{
this.Red = r;
this.Green = g;
this.Blue = b;
this.bar = function(){
var rtnVarBar = "3";
return rtnVarBar;
}
}
myNewObj3 = new MyObject3("red","green", "blue");
alert("Bar: " + myNewObj3.bar()); //returns 3
Basic Prototype Example
/* Base object */
function MyObject4() {
// constructor code goes here
this.myVariable4 = 5;
this.bar = function(){
var rtnVarBar = "4";
return rtnVarBar;
}
}
/* Adds method to Base object */
MyObject4.prototype.memberMethod = function()
{
return this.myVariable4;
}
myNewObj4 = new MyObject4();
alert(myNewObj4.memberMethod());
Basic Inheritance Example
prototype = base object type (think extends)
objects not defining a prototype are thought to extend Object
(think extends Object)
objects (objA) that have their prototype set (to objB) are thought to extend the second object (objA extends objB)
// Base Object
function Employee () {
this.name = "";
this.dept = "general";
}
// Manager extends Employee
function Manager () { // defines initial Manager constructor
this.reports = "Bob, Jane";
}
Manager.prototype = new Employee; // sets Manager as an extention of Employee
// WorkerBee extends Employee
function WorkerBee () { // defines initial WorkerBee constructor
this.projects = "SalesProj, MarketingProj";
}
WorkerBee.prototype = new Employee; // Sets WorkerBee as extention of Employee
myManagerJohn = new Manager();
myManagerJohn.name="John";
alert("Name: " + myManagerJohn.name + "\nDept: " + myManagerJohn.dept + "\nReports: " + myManagerJohn.reports);
myWorkerBeeBob = new WorkerBee();
myWorkerBeeBob.name="Bob";
myWorkerBeeBob.dept="Sales";
alert("Name: " + myWorkerBeeBob.name + "\nDept: " + myWorkerBeeBob.dept + "\nProjects: " + myWorkerBeeBob.projects);
Extending the base prototype
Adds to base object AFTER child objects have been created aka. Dynamic Inheritance
// Base Object
function Employee () {
this.name = "";
this.dept = "general";
}
// Manager extends Employee
function Manager () { // defines initial Manager constructor
this.reports = "Bob, Jane";
}
Manager.prototype = new Employee; // sets Manager as an extention of Employee
// WorkerBee extends Employee
function WorkerBee () { // defines initial WorkerBee constructor
this.projects = "SalesProj, MarketingProj";
}
WorkerBee.prototype = new Employee; // Sets WorkerBee as extention of Employee
myManagerJohn = new Manager();
myManagerJohn.name="John";
alert("Name: " + myManagerJohn.name + "\nDept: " + myManagerJohn.dept + "\nReports: " + myManagerJohn.reports);
myWorkerBeeBob = new WorkerBee();
myWorkerBeeBob.name="Bob";
myWorkerBeeBob.dept="Sales";
alert("Name: " + myWorkerBeeBob.name + "\nDept: " + myWorkerBeeBob.dept + "\nProjects: " + myWorkerBeeBob.projects);
Employee.prototype.hourlyRate = "50"; // << Dynamic Inheritance
alert("Name: " + myManagerJohn.name + "\nDept: " + myManagerJohn.dept + "\nReports: " + myManagerJohn.reports + "\nHourly Rate: " + myManagerJohn.hourlyRate);
alert("Name: " + myWorkerBeeBob.name + "\nDept: " + myWorkerBeeBob.dept + "\nProjects: " + myWorkerBeeBob.projects + "\nHourly Rate: " + myWorkerBeeBob.hourlyRate);
Working With Constructor Parameters
/**
* Base Person object with empty constructor
* @constructor
*/
function Person(){
this.name="Name: ";
}
/**
* Base Person object with 1 element constructor
* @constructor
*/
function Person(name){
this.name="Name: " + name;
}
bob = new Person("Bob");
alert(bob.name);
/**
* Extended object with constructor
*/
function Teacher(name, subject){
this.base = Person;
this.base(name); // Think super(name) from java
this.subject="Subject: " + subject;
this.toString = function(){
return this.name + "\n" + this.subject;
}
}
Teacher.prototype= new Person; // Ensures dynamic inheritance
jim = new Teacher("Jim", "Math");
alert(jim);
/**
* Using ".call" for parent rather than ".base"
* for a 'cleaner' implementation
* .call was implemented in: JavaScript 1.3
*/
function Janitor(name, shift){
Person.call(this,name); // Think super(name) from java
this.shift="Shift: " + shift;
this.toString = function(){
return this.name + "\n" + this.shift;
}
}
Janitor.prototype= new Person; // Ensures dynamic inheritance
stan = new Janitor("Stan", "Night");
alert(stan);
Bite Size: Google Reader Keyboard Shortcuts
Posted by cgrant in Productivity, Technology on September 1, 2007
Google reader provides a variety of keyboard shortcuts to help your feed reading go smoothly. Check out this quick reference.
- j – Older
- k – Newer
- n – next
- p – previous
- l – label / tag
- s – star
- e- email
- r – refresh
- u – toggle folder list
- h – home
- t – label / tag
- v – view original (link to site)
- m – mark as read
- shift + a – mark all as read
- shift + o – open feed (shows feed entry comes from)
- shift + s – share / unshare
