Codecademy is a great website for learning programming. It is helping thousands (may be millions) of people learn how to code. Content wise Codecademy rocks however there are few design areas where Codecademy can improve on. Before I want to start on I want to state it categorically that am not a professional designer. I am just a grateful user who wants to give my feedback to a very useful website that is giving so much to users. Here I go:
(Note: please click on blog images for bigger, better and clear images)
Codecademy header needs to be visible. Always.
Header contains a company’s brand identity (logo) and the most important links. Moving header outside visible page (like in image below) when user scrolls down is not a good option. Always flaunt who you are.
Other moving and fixed parts:
Editor area and Result area should always remain fixed on web page independent of scroll (unless when user scrolls to the bottom of the page for footer). Even now Editor and Result areas are somewhat fixed but slightly moves up and down as user scrolls up or down. There is no need for them to move. While writing a line of code user is generally focused on a particular line in editor area and simultaneously going through lesson's instructions. When user scrolls up/down the lesson instruction pane, Editor area also wavers up/down because of which user need to refocus/find her line of code again. Lessons' instructions should move up and down independent of right hand side Editor and Result area.
Run, Reset and Save options:
Run, Reset and Save buttons/info is getting duplicated on screen hence eating a lot of precious web space. Info from both the highlighted areas (in image above) can be clubbed in a single horizontal row. Something like:
Green Run button (Ctrl+enter) then Red Reset button (Alt+R) then Grey Save button (Ctrl+S).
This will also free up some space for increasing height of result area so that users can see more lines of result in result area. Exercises where result is displayed in various lines will be better and fully displayed in that case.
Movement from one section to other:
When one section is finished in a course then link to next section is shown in result area. If we click on that link then next section instruction set appears but it is never completely visible on web page. Some part of the lesson is always hidden at the top. A user has to scroll up the instruction panel to see start of new section’s instruction set.
Wrapping text in Editor as well as Result area:
If some error message is longer than width of the result area then result area doesn't auto-wrap the message. It just goes beyond the console area and is not visible.
Codecademy track>>course>>section alignment:
Course hierarchy seems to be displayed in disorderly fashion on web page. Track>>Course (for ex JavaScript>>Getting Started with Programming?) is on right hand side while section name (“Why learn programming” in this case) is on left hand side. If all three of them can come neatly on left hand side (may be like: JavaScript>>Getting Started with Programming>>Why learn programming?) then hierarchy will be more clear and some precious web space can be spared for Editor/Result area.
This might seem a bit extreme criteria to evaluate what you really want to work on but answer to this will tell you whether the job that you are doing now is meant for you or not. Whatever you would love to work on your deathbed you should be doing that now. Earning livelihood by doing some job will make you like so many people who want to just do their job, earn, retire early so that they can enjoy their life -- metaphorically it's like saving up sex for old age. Why would you want to retire if you love what you are doing? If you don’t love your work then nothing great will ever be created by you.
There are hordes of stories of people working unbelievable number of hours everyday, people working very hard despite very unfavorable conditions. You can't make those people work like that just for livelihood, they work for their love. People working on job wait for 5 pm.
Mathematician Euler lost one of his eyes in his twenties but that didn't handicap his love for math. In fact he went on to say that "I’ll have less of distraction". He kept working and lost vision in his second eye at age of 70. Even complete blindness couldn't stop him working on solving mathematical problems. He proved to be even more productive in his blindness and worked for 17 years in total blindness.
This is not madness for mathematics. This is epitome of love for the job/love.
Find your love. If you haven't found it yet, keep looking. Don't settle.
If you are managing people who are doing work that has not been your forte then estimation can be deluding process for you. You can't estimate yourself in this case so first you ask for estimates and then try to validate them. The moment you ask for estimate from a person you are asking for his commitment, asking for his word. No one in this world wants to be proven wrong, even to himself. No one wants to go back on their words. So the moment estimate is asked that person start to estimate by including all risks, all possible disasters that may happen, all possible subjective worries. When estimate is done after factoring in all these fears no doubt estimate will be inflated.
You can get estimates reviewed by peers or specialist within/outside team but most probably you won't find any deviation. People within an organization have a healthy fear or healthy respect or social/professional dependency with each other so until something is not glaringly wrong it won’t be pointed out.
Validating estimate by established estimation standards never work. Standards are too general whereas estimate has to be specific. So standards can act as guideline but they can never validate estimate.
Getting estimate from a person and then boss him to cut it down 20% and then continuously sit on the top of his head to finish it even faster never helps.
So how work can be get done in more efficient manner?
By placing your faith in the person. Tell him not to worry about missing deadlines, not to worry about repercussions, not to worry at all. Request him to work, just work and give his best. By faith all the buffer estimates (read fears) evaporates. Once the assurance is given to the person, keep faith in him. Don’t start moaning the moment something goes out of the line. Keeping faith doesn't mean that you forget about him. Do keep track of the progress at mutually comfortable level. Keep judging the person. If at any point you feel your faith is being misused, act.
There are circumstances when estimation will be mandatorily required so only faith won't serve the need. But whenever possible give faith a chance.
Faith will give you positive surprises. In today’s world people are not treated with faith and that’s why world is so cynical, cautious and inefficient. You give a person your faith and there will be occasions when you will be pleasantly surprised. There will be times when you’ll find gem of a person.
If you feel that you’ll earn enough in 2 years and then you’ll start a startup, that’s not gonna happen. You’ll never earn enough (it’s human psyche; ask Warren Buffet if he has earned enough). For you to start working on your dream project - passion, food and shelter is all you need.
If you feel that you’ll settle down first and then you’ll start a startup, that’s not gonna happen. Life doesn’t give you time to settle down, there is always more life. You settle down when you are dead. Startup is a roller coaster experience so better start a startup when you are not settled.
If you feel that you want to give yourself some time so that you can learn enough and read enough for a startup then keep learning and reading, startup not gonna happen[1]. You can never learn enough for a startup unless you are working on your startup. Reading books/ blogs/articles/essays for 1 year is equivalent to working in your startup for 1 day.
If you think you will think of an Awesome Idea first then you'll startup, that's not gonna happen. There are no awesome ideas. All ideas for startup look small, niche, not-great at first. They shape up to be a great idea on the way. So if you’re not already on the way, then it's not gonna happen.
If you're working for some giant company that pays you enough but you dream that you'll get out one day then that's not gonna happen. Decent pay in Giant organization will make you comfortable, lazy and coward. Forget that startup; keep pleasing people for your next promotion/salary-hike. Or be courageous and give shape to your idea.
When you start making how-to-climb-the-ladder plans in your current organization but you feel that you'll think about, or focus on, startup in parallel, that's not gonna happen. You don't do startup in parallel. Either you do startup or you don’t but never ‘in parallel’. It’s full time job. It's 24*7. May be not 24*7 work but 24*7 focus and dedication for sure.
When time flies you'll not see it fleeting. When it’ll be 2 years and then 5 and then 10 years you'll not even realise. Time flies. It’s going on now. It’s now or never.
If startup is your want and not your need, you won’t start one.
[1] Reading, after a certain age, diverts the mind too much from its creative pursuits. Any man who reads too much and uses his own brain too little falls into lazy habits of thinking. – Albert Einstein
What’s the worst thing about your product/service?
What’s the worst thing about your website?
What’s the worst thing about your team?
When you seek feedback from people in superlative term, it works. People answer more openly. If you ask “Name two things that can be improved in our product?”, it gives the impression that you are trying to be defensive or you created this questionnaire just because your manager asked you to.
Create a contest amongst your customer support executives on what’s the worst thing about your product/service. Results will surprise you.
Create a contest amongst your Beta testers on what’s the worst thing about your mobile app.
Create a contest amongst your newly hires on what’s the worst thing in hiring and onboarding process.
Create a contest amongst your employees on what’s the worst thing about your company's intranet portal.
Contests are better than surveys. People willing to give feedback will answer in both the cases but certain set of people tend to act when there is a carrot on the other side.
When you start finding worst thing en route you’ll find nearly all the flaws.
Creating great stuff means you need to go to great lengths.
What’s the worst thing about this blog?
I generally go to this sports complex for jogging. There is a mini football field where 20-25 kids play football regularly. Today, due to Monsoon rain, football field was filled with water. Few of the kids were bantering in a group at a distance whereas few others were standing dejected near the football field. While passing by I told them to ‘do something’ about the field. One of the kids said, in a very sad tone, “What can I do?”
Adversities are always there, small or big. Either we decide to solve problem or excuse ourselves into ‘what can I do’ mode. By passing the buck to the system or to someone else we just try to fool ourselves. Many a time we shirk by saying I can’t do anything substantial. Until we do something how can we decide that it won't be substantial? Substantial is secondary, doing something is primary.
The kids instead of dropping the ball could have done a lot.
Form a Facebook group and mobilize like minded people to act. System tend to listen to passionate group.
Question right authorities on the right forums.
Request people to help you and someone will.
Start a revolution.
Start conversation. You might find one of your football buddy’s parent worthy of helping you.
If no one comes then do your part.
If you're not sure what to do, do something.
You can always do something. Always.
When did you last dedicated time for conscious proactive thinking?
Thinking (more of mind wondering aimlessly) while you are waiting for something (your flight is delayed, etc) is different.
Planning in reaction to something (launched product turned out a dud; missed promotion) is different.
When you think in reaction to something, there is a worry part attached to it and that inhibits your free thinking. You will not be able to enter into great thoughts territory with worry as your baggage.
‘Great thoughts time’ means you dedicate certain time, may be 1 hour every week, to consciously think Great thoughts. Think which way your industry, in which you are working, is heading? Think what product can you launch that will solve a problem. Think what can be the next app that will make something easier. Think how you can make your current startup into a great company. What’s good, what’s bad and what can be made better. Think how, why, when and what of things.
Great Thoughts Time will take your thinking level to new horizon. It will help you focus on great, bigger problems. It will help you to figure out where the world is heading so that you can go there and solve better problems.
‘Good/better’ can be achieved by planning or run-time thinking but ‘great’ will incubate only in Great thoughts time.
Find your Great Thoughts time. And Think. Solve bigger problems.
Richard Hamming talked about great thought time in one of his talks. I would highly recommend this essay.
Can you say this? Or you feel a tinge of remorse and recall the things that you could have done but didn’t?
I was reading biography of Steve Jobs when this line hit me like a thunderbolt. I am not going to write anything about biography now as that might be topic for other time. Jobs said this on the day he relinquished his CEO post from Apple. That evening author (Walter Issaacson) of his biography came to meet him. By this time Jobs have already been suffering from bouts of cancer for several years and he was well aware that he was about to die.
I am very certain that there must miniscule percentage of people who could say this at the dusk of their life or at the end of any day. We all run in life after immediate short term goals like a headless chicken. Can you say this today? If not, then this is the time to do whatsoever you think you can. I wish, I could have, I should have, given a chance, are all excuses. Stop living the life of someone else’s image of you. Stop living by other people’s advice, recommendation or lessons. Go live your Dream. Do whatsoever you think you can do. Forget social assumptions and norms. Drop people’s expectations. They are all bullshit. You know what you can do and you are right.
Live to say: I’ve done all that I can do.
PS: There are several times when something (statement, action, thought etc.) hit me like thunderbolt. That makes me stop; Stop whatsoever I am doing and think; Think about that thing. I call them Wisdom thunderbolt or wisbolt. I’ll be sharing those in future with ‘thunderbolt’ tag. Thanks.
Our ecosystem – education, family or society – is hell bent on creating intellectual midgets. We are taught to be Always Right. We are taught, “If you’re in doubt, Don’t”. We are taught not to make a fool of ourselves by doing anything anti-majority. We are taught to avoid people's mockery. We are taught to avoid confrontation. We are taught to feign omniscience and not ask question even if we don’t know something. We are taught not to tell people that they are wrong, even if they are wrong. We are taught to avoid and ignore things/people. We are taught not to question authorities, rules, traditions, processes, and so called intelligentsia. We are taught directly, indirectly, surreptitiously to be a midget.
You need to fight everyone, even yourself, to avoid this midget trap.
Try things.
Imagine.
Explore.
Make mistakes.
Learn.
Question.
Do it.
Even lovable Steve Jobs preached ‘Stay hungry, Stay Foolish’.
If you are in doubt, Do it.
At times, you get some concern from just one team member, from just one client or from just one customer. Your first thought will be ‘exceptions are always there. Ignore it’ or ‘this guy is finicky’.
Nope.
In this diplomatic world of ours not everyone complains. Not everyone is courageous enough to raise a concern. The concern from that one person can be concern of many more but others just prefer to ignore it. Most people, even if they encounter some problem/hassle don’t report it. That doesn't mean that concern went unnoticed. The feeling of discontent might simmer in people or remain in their subconscious for long. These people will give wrong feedback to others in their area of influence or at worst they might ditch your product/services.
Discontent leads to bad vibes and people with bad vibes spread cooked up information which leads to rumors. And Rumors are failure of leadership.
Concern from one person might also be a premonition. That person might be the first one to experience it and reporting it proactively. If you listen to the first one promptly then you can avoid big time issues/discomfort.
Understand concern from every single source, especially exceptions, and address it. And then broadcast that message to bigger audience who, you feel, might have been impacted. Address the concern. Broadcast it categorically. This will kills rumors and give people a sense of importance that their concern gets addressed. This is a small gesture but this can have huge impact.
Exceptions are not meant to be ignored.
There are times when we are running into deadlines and we have to deliver with some compromise on quality.
There are times when your client is a very demanding person, but with no additional budget.
There are times when your software developer will feel (or he may shout aloud) that you are becoming too finicky about small quality control details.
There are times when your friends will feel that you are being too rigid.
There are times when you feel that this is wrong and I should stop it. But then your Lizard brain asks you to just avoid it.
There are times when you feel you will start exercising; from tomorrow.
That is the time when you stand up and act.
Because you compromise only once, thereafter it will be a habit.
Be a yardstick of quality. Don’t be flexible in your expectations.
Tell that client that any new changes will be billed afresh. She might feel offended but if you deliver great quality she will understand.
Tell your friends that I can’t be flexible on this. This might feel anti majority but this is what I feel.
Tell your developer one more time that god lies in details and quality is the most important.
Compromise is Sin.
Everything is simple. Yes, Everything.
If something is complex, it means you didn’t spend the right amount of time on it, with requisite Focus.
There must be times when you solved something and felt, “ohh that was Simple”. It was not simple. You worked on it to make it simple.
If something still perplex you. You still didn’t get the right angle or right context.
Steve Jobs said “That’s been one of my mantras – focus and simplicity. Simple can be harder than complex. You have to work hard to get your thinking clean to make it simple. But it’s worth it in the end because once you get there, you can move mountains.”
What about legal document, terms and conditions, insurance docs, red herring etc? They are not simple. That’s why Nobody reads them. I am sure you don’t want your service/product to be of that class. How can you incorporate this in your company culture? Include “Make it Simpler” in your company philosophy. Whenever you are about to deliver something, Ask yourself “How can I make it simpler”.
Whatsoever is your field, things should be simple to you. Simplify. And then Simplify some more.
It’s elementary Mr. Watson.
Your plans are your faith in yourself. You plan something and you believe that it will succeed. Belief is never totally rational. There is always a pinch (sometimes tons) of emotions in a Plan. Plans always succeed in Mind. Plans are always million dollar idea. Plan always brings you fame, in plans.When you plan a startup, you believe in that idea. You do try to be logical and rational but faith is always there. You might have junked tens of plans before starting ‘the one’.
But,
Plans are based on your past experiences and your learning from various sources. Tell you, past experiences don’t exactly repeat in future and learning is way different from ground, dirty, reality. Infrastructure, Hiring, Budget, client payments and processes, they are all plans. And they will all go haywire.
You planned to hire; you planned to create, you planned to deliver. That's ideal plan stuff, but things are totally different on ground zero.
But,
That’s the thrill. Entrepreneurs dare. Plans will fail. And only then some plan will click. They are not failing, they are teaching you. Your faith in yourself will finally work. Your plan # xyz will surely work.
This is the time to plan and today is the time to execute.
You might be encouraging your team to work harder by promising them higher salary, provided they show results. Some managers promise better growth while others promise lesser work pressure in future. But when a manager offers something, he is showing the carrot which is a carrot to the manager.
You promise promotion, your team might be looking for frequent appreciations.
You are offering better hike but team members might be seeking better work culture.
You are offering stability however a team member might be seeking new challenges outside current domain.
You might be offering daily challenges but team might want to specialize in one particular focus area.
People promise for things that they like. This carrot approach is botched up in nearly all the appraisals system in nearly all the companies. Companies define a framework for its people and decide what the carrot is. Appraisal frameworks generalize the things but carrot is highly specific to an individual.
Same applies to products and services you are offering.
Your product is class apart functionally but your customers might be more inclined towards its exterior looks. Your product is good for showoff but your customers might love a more economical product. You give some service economically but you customers might be more interested in easy availability.
Find carrot of the person you are talking to and then talk in terms of that carrot.
If you are not content with the status quo you feel bored. Playing-meeting-after-meeting job is status quo; am-looking-for-a-good-idea inertia is status quo; am-waiting-for-my-chance excuse is status quo. Status quo doesn't help anything. Status quo is just inertia.
By boredom, your lizard brain has signaled you that it’s time to create something; it’s time to try something new. Boredom doesn’t depict lethargy; it depicts your discontent with status quo. Boredom tells that you want to change the current situation. Your mind somehow knows that you can ignite a revolution and that’s why it’s signaling you to start something. Doing mundane job without even realizing that you’ve become mechanical is bad, not boredom.
Boredom is good.
Good talkers never get talker block and intelligent writers never get writer’s block. Gist is that when you talk, talk, and talk more, you produce golden words during that journey. Same applies to writing. It might seem that few people produce excellent speech or excellent writing every single time they deliver. That’s an illusion. Because behind that great quality published work there lie tons of unpublished work. It’s rightly said that it takes 20 year to become overnight success.
There is no startup block. If you keep looking for that perfect idea, perfect execution plan, perfect team or perfect infrastructure, it will never work. Sorry if that seems offhand but that’s truth. Ideate, execute and repeat this till you hit the bull’s eye. There is no right team, no right plan or no right time. You have to get your hands dirty and try several things because it’s only in that journey that you’ll bump into the right thing. Get out of that starter block of yours and start playing the game. It will work. For sure.