So how much can you learn?

On August 22, 2008, in Web Development, by Anuj Gakhar

Well, thats a question I keep asking myself.  And it has been very frequent in my mind, recently. You know, the more you read blogs and articles, the more you say to yourself “I need to do this” , “I gotta have this in my skillset” (well, if you are like me).

I work as a fulltime ColdFusion developer (with occasional Flex/AIR). And there is so much in the CF world that I want to bring to my daily routine (leave aside other languages) e.g. I am not using any frameworks at work, no unit testing and no design patterns. Definitely not the way to go, I would say. Those are just few of the things I want to do some work on.

I have done some freelance work with ColdBox and Fusebox but 1 or 2 or 3 projects dont make you an expert, do they? I read about unit testing frameworks and test driven programming, but how can I start doing it when I am not the decision maker? Thats something that really bothers me – not being able to learn what I want to.

Apart from the CF world, I always say to myself “someday I will sit and go through this Groovy thing – everyone seems to be talking about it” – but when is this “someday” going to come when I am already very tight on time with what I am doing. I have done some Flex in the past, well, may be 2 or 3 projects (coldfusiondocs.com is also in Flex) but then, I havent even got the time to look at it – I have a few ideas with it that I want to do. I also want to learn Cairngorm and start using things like FlexUnit etc….
But the big question is “when?” – the only time I have for stuff like this is between 12 and 6AM (and I am asleep during that time).

You surely cant keep aside your paid work for stuff that you need to “learn”. And you surely cant ignore your family life as well. I guess the majority of whatever you learn is at your work and if your work does not decide to upgrade to use latest tech, then you are just stuck, unless you give “learning” a priority and decide to move your job.

So how do people do it? Is anyone else in the same dilemma as well? Would love to hear from folks about this…

 

21 Responses to So how much can you learn?

  1. Chris says:

    I totally agree with you. Between work and my family I find it hard to find time to learn new technologies. I have been trying to learn Flex for the past 6 months and really haven’t gotten too far.

  2. nate says:

    Sometimes the hardest part is defining a problem that you could formulate your learning around. For me once I have a clear problem in front of me its easy to say well, how would I solve this using X design pattern, or Y technology. When the things you are learning are especially abstract this becomes even more important. Defining the problem also can help you isolate which new things you are going to try out. Learning flex, air, design patterns, js dhtml/ajax libraries, the latest coldfusion upgrades, and the dozens of frameworks available it way too overwhelming. Break it down. Tackle a few at a time define them in your solution to the problem.

    Defining a problem that you want to solve is also huge, If you don’t define something are excited about or are willing to work on outside of work hours chances are its not going to happen.

    A lot of the time its also helpful to set milestones; how do you keep yourself true to keep making progress when its easy to let it slip? Even drastically conservative milestones are still good to have.

    Ultimately it does come down to making time to learn. I find that I live by a calendar these days. Placing time on the calendar either at night or on the weekends, helps make sure that I get the reminder message.

    One thing’s for sure, if you stop making time to learn you’ll quickly fall by the wayside of the dev fastlane.

    Curious to see what other people think.

  3. Ben Nadel says:

    I feel your pain! Still trying to figure this out myself.

  4. radekg says:

    I think I’m an expert in this, lol. Not having social life, family life is definitelly helping. But no kidding… Try spending 1, 2 hours every second day for building small apps to understand the basics. Then you have to simply apply what you’ve learned in your daily job. You don’t have to learn 10 frameworks as on daily basis you’ll be using just one. Same with Flex frameworks. Stick to one. Spend 1, 2 hours Saturday morning/evening – pick your time. Listen to podcasts, screencast while driving, working. Things always stay in your head. And as nate said: formulate the problem and then apply the technology. Without the idea of application you will not be able to fully explore what you want to learn.

  5. Anuj Gakhar says:

    @Chris, I completely understand. Its hard to find time mate. Maybe someday it will happen.

    @nate, I agree with your suggestion here. Thats what I have been doing. I tell myself so many times ‘this weekend I will sit down and do X…’ and then the weekend comes and it just doesnt happen most of the times or if it happens, I dont get enough time to finish X which means it gets delayed to the next available free time, which is most often next weekend and the continuity is broken and in about 3 weeekends, I give up on X. see what I mean?

    @ben, Yeah , I know sounds like I am not the only one.

    @Radek, I know what you are saying. I think I try to do what you said, but it doesnt happen. I mean, how can you build something in just a few hrs? that too, when you are new to the thing. It spans over a few weeks and I lose the rhythym. But I am gonna keep trying I guess.No other way out.

  6. radekg says:

    Anuj: it all depends what is the scope of an app you want to build. If we are not talking about being an expert in all technologies then all you have to learn is how to do X or Y in chosen technology. In other words, enough to jump in without spending one week on learning basics which already know. There will be time for best-practices. Other method which sounds very reasonable is participating in 1, 2 OS projects using different technologies. You can then focus just on one element of the app and not on the whole project.

  7. John Whish says:

    This is a common problem and I’m afraid there is no simple solution. I would however recommend that you:-
    * Join a User Group. If there isn’t one nearby start one (you don’t have to be a guru)
    * Read FAQU and the new Flex Authority publications. They only come out quarterly so don’t require huge amount of time.
    * Download an open source project and step-debug through it.
    These all take time but will speed up the learning curve. I hope that helps 🙂

  8. Christine Panus says:

    I think we’re all in the same boat, when it comes down to it, the 9+ hours you give each day plus all that other stuff you have to do to keep the fabled work/life balance leaves little time for learning new stuff. I’ve often contemplated taking a vacation just so I can get time to write some code. For me, especially when learning something new, it’s an all or nothing kind of gig. I’m either going to sit down and write code for 10 or more hours (until it’s done) or I’m not going to do it. The only things I’ve found that get close are treating yourself to a class or two, going to the cons and user group meetings or obligating yourself to some giant project that will eat the rest of your life away. I don’t think there’s a real good answer… Pick your priorities on a daily or weekly basis and see if you can ever get the learning one on top…

  9. Anuj Gakhar says:

    John, Christine, Thanks for your comments. It just makes me feel little bit better to know that I am not the only one. Although I agree to most of what you have said, but I feel that everyone has their own way of learning things. For me, I am at my best when I am alone , no disturbances, no IM’s , no phone calls, and I can then read through articles or books or blogs and learn stuff very quickly. In the last 8 years, this has proved to be the most productive way for me to learn things. Anything else, just doesnt work.

    But thanks anyways guys. I am gonna try some of these suggestions and see if that helps me in some way. And if I do make some progress, you guys will surely know because I will come up with some blog posts then. 🙂

  10. Henry Ho says:

    I was about to blog about something like this.

    Should one be a Jack of all Trades, or be an expert and focus on a single technology/framework, and that’s my question.

    Just out of curiousity, how many years have you been as a web developer?

  11. Anuj Gakhar says:

    @Henry, Focusing on one thing is too risky these days. I dont think I can take that risk. You have to learn several technologies to be able to live up to the ever changing job market.

    And as per my career, its just over 8 years now.

  12. I think I found my way to gain some time for expanding skills. I spend almost 2h a day on trains commuting to the city of London for work and back home. It is a perfect time to do some reading, especially if I start with the new framwork or technology. It helped me a lot when I switched from CF to Flex. These two hours a day gives 40 hours a month on reading tech books and technology documentation.

  13. nate says:

    Its funny, a lot of project managers I know are looking for what they call the “holy grail”: one developer that can do all the front end, the back end and jump on design. Seems like a good idea right? one person in stead of 2 or 3 to have in meetings, less ramp up time for a large team, less people to contact about their hours, less questions about a project in general. Sounds like a good thing, and maybe having an ok generalist in a small shop is the way to go.

    There are a few problems with that…

    The ever present “what if they get hit by a bus” question. If your rock star dev gets seriously jacked or leaves for another company, or goes on vacation (heaven forbid) then you are down one rockstar and all of their knowledge; which seems the most expensive element to regrow.

    People without any focus tend to get frazzled jumping between soo many roles. Overly stressed leads to not spending any time learning anything, hating your job and moving on. Both parties loose.

    If they can do everything they typically get over resourced to do so, this also leads into doing more scoping and estimating, planning, brainstorming (which is all really cool), and being the general person that answers questions. This can have a tendency of often leaving the only time to get all the normal work done is during your second or third shift.

    If your company is big enough to allow for specialists then it totally makes sense. A larger team is able to respond to a lost person easier than a one or two person dev team. Having to cancel a vacation because a project got all loose and the timeline changed really gets old. How many times have you been told(or want to be told); “we’ll make it up to you”

    Its hard to keep a jack of all trades dev happy, as a jack of all trades dev its hard to be happy.

    Of course in the larger setting there can be similar problems…

    Too many chiefs can make getting a decision on a tech project difficult.

    Over specialized means if that specific job gets light, the company will look at creative ways to resource you, or at getting rid of you. Having secondary/tertiary skills can help guide them in the “creative resourcing”.

    Communication can be a larger problem in a larger team.

    You can be slotted for doing only one task, which can be boring and there may not be lots of room to wiggle if thats what you find.

    I went from a dev team of maybe 10 in a single office(including management) to a dev team of like 20+ with lots more devs across the world that can jump in and its been great. The learning I’m able to focus on is much more focused and fullfilling to me. I don’t feel trapped where I can’t take a day off.

    At this time there’s still a huge demand for web developers; front end and back end so you could probably do whatever you want(depending on where you live and if you’d want to move). I’m sure this will swing full circle again soon enough.

    To lots of “a or b” questions I find a common theme.
    Jack of all trades or focused skillset? Balance.
    Learning all the time, working all the time? Balance.
    Working to have balance can be very helpful.

    Hopefully some of the above is interesting and provides some additional conversation points.

  14. Anuj Gakhar says:

    @Robert, that is a good idea. Thats probably the best thing you can do on a train , ofcourse if someone is not standing on your toes 😉

  15. Anuj Gakhar says:

    @nate, good points mate. I can understand because I have been in this situation before. Your manager expects you to know design, programming, databases, client handling , all at the same time and still manages to come to you someday and say “why dont you know this XXX, its so easy.” haha…. but fortunately, my current situation is different.

    I am focused on one thing or rather one area and my emlpoyer is not throwing too many things at me, its me who wants to do more than I currently do. End of the day, its down to the developer to keep himself upto date with latest tech.

    I also beleive that things have changed completely now, because of the outsurcing . You could walk in to an office with 3 coders sitting there doing nothing and the company might be rolling out major releases every month, because there could be a team of 15 people sitting in some other country doing stuff for them. However, this is a completely different subject, one that could take a full book to cover.

    My only point was, if you are a developer and plan to be a developer for next few years, you are gonna learn new things (atleast 1 or 2 ) every year, otherwise you will be left out eventually. And trying to find time outside of your day job is sometimes a struggle.

    Good points thought, appreciate you taking the time to write up here.

  16. rohit jain says:

    hey buddy….wass up!!!

  17. Miriama Mahuika says:

    In my experience contractors are hired to do a specific job. If they do not have the experience someone else would be hired instead. Because of this the person needs to find a way to fit it into their schedule.

    With full time developers on the other hand, it is in the companies interest to keep them up to date including any training required. This is especially true in smaller companies where your tasks are more varied.

    So, go full time and convince the company to train you on the things you want to learn. Most have a problem with the pay cut involved but they would need to weigh up whether this is worth keeping up to date with technology.

  18. I fully agree with Miriama here. I have been working as a contractor for a year now, and I must say there is a totally different variety of skills required by the clients who hire contractors. This forces us to constant up-skilling on our own, which is not an easy task. These days a sucessfull Flex contractor has to be a pro in at least a couple of frameworks such as Craingorm, Pure-MVC to mention only the most popular ones, things like physics engines and 3D libs as well. I am sure we will have to be looking into things like Thermo as well as soon as they are out. So, there is no other way than constant up-skilling in order to meet rising client requirements. By the way, Miriama, did we work together for Publicis a year ago?

  19. Miriama Mahuika says:

    Ah hello Robert! Yes we did work together at Publicis. How are you doing?

  20. Very good!, it seems the internet world is small 🙂 I quit Publicis shortly after you 🙂 How are you doing?

  21. Hey Anuj,

    It is indeed a frustrating problem that affects any of us that have a life outside of work. I work from home most of the time, but even that doesn’t give a lot of opportunity as any time I am not working, I have my kids jumping for my attention and I cannot ignore them, and when they finally go to bed, I am too knackered to do more learning or coding, I still have to do tech support and answer support tickets in the evening as it is LOL.
    The only chance I get to learn anything new is when I get a new project to start from scratch, then I can choose to do it in any frameworks or technology and thus learn them as I go along. Sadly this has not happened for a long time and I have only been working on existing legacy code or have been doing contracts like yourself.
    I have not yet learnt ANY of the latest frameworks, but to be honest none of them really appealed to me enough to want to, until I found ColdBox, which I do like the look of and do actually want to learn.
    As a contractor though you of course also do not have the freedom to learn whatever you want, you have to learn what is being called for. It has only been recently this year that I have seen frameworks as a requirement for contracts, but it was a sudden change and now all of them seem to want modelGlue and ColdSpring at the very least and many also want Flex and Actionscript too. Alas no sign of ColdBox though, so is there any point in learning that?

    I guess the only chance you have is to get a contract working from home, then you can save that travel time. Or get yourself some direct clients/projects so you can do them how you wish.
    I think we both know that things are not going to change at the place you are working now, where being innovative is frowned upon.

Leave a Reply to Robert Jesionek Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

© 2011 Anuj Gakhar
%d bloggers like this: