4 Things I Wish I Would Have Known When I Started My Software Development Career

My software development career began about 15 years ago.

But only in about the last 5 years did I really start to see a large boost in my software development career.

Here are some of the things I wish I would have known when I got started in the software development industry; things that would have made me more successful, much earlier, if I would have known them.

There is no “right way” in software development

I wasted a large amount of time, both in studying and arguing, early on in my career, falsely believing there was an absolute “right way” for many aspects of software development.

It turns out that just about everything I once thought was correct about software development at some point turned out to be wrong.

But more importantly, I found that very few things were black and white.  Almost every decision when writing code and developing software is based on the current circumstances.

I’ve talked before about how the religious adoption of a technology can be harmful to software developers, but this topic goes beyond just a technology.

It is also true that no best practice is universal.  Even highly charged topics like whether or not to unit test or whether agile or waterfall methodologies are best, do not have straightforward one-is-always-right answers.

In my career, I’ve wasted plenty of time on the “right way” road that led to nowhere instead of taking the “pragmatic” (practical) road, which would have carried me much further.

Reading a book cover-to-cover is not the best way to learn

When I first started wanting to grow my knowledge of programming and different technologies, I spent too much time reading technical books about a specific technology cover to cover.

Reading the Bible

There is nothing wrong with reading books, but often the choice of what book to read and what parts of it to read are very important.

For example, I remember reading a very large book on programming with Visual C++.  (I’m pretty sure it was an earlier version of this book.)  Anyway, the book was a good book with lots of information, but reading it cover to cover was not the best approach to learning Visual C++.

I would have learned and retained a lot more by skimming over the chapters of the book to get a broad understanding of what there was to know about Visual C++, then figuring out what things were most important to learn first.

I would have had much more success by sitting down and actually practicing the basics by trying to actually build something than just reading or going through examples in the book.  You don’t really learn a technology until you’ve solved real problems with it.

Learning particular technologies in-depth is a waste of time

Not only did I waste time by reading books cover to cover, but I also often chose to read the wrong books.

I had mistakenly believed that learning a particular technology inside-out would be a good way to advance my career.

I spent too much time reading books about very specific technologies like ASP.NET or Hibernate instead of reading more books like “Code Complete,” “Clean Code,” and “Agile Principles, Patterns And Practices in C#.” (All of these books, by the way, I recommend that you read, if you haven’t already.)

While it is important to know about the technology you are using, it isn’t important to be an absolute expert in that particular technology.  There isn’t much benefit to knowing the exact API call to make when you can just easily look it up when you need it.

Too many technologies that I spent a good amount of time learning about in depth, ended up either dying out or being technologies that I eventually abandoned myself.  Most of the knowledge about those specific technologies ended up representing a big waste of time.

I found that it was important to become an expert at whatever programming language that I was using at the time, because expertise in a particular programming language will usually last you a pretty long time; I definitely would have still spent time learning in depth about C++, C# and Java, but, I perhaps, spent a little too much time learning all the intricacies of C++, which isn’t benefiting me much now.

Community is extremely important in your software development career

Early in my career, I made the mistake of not really reaching out to the community for help and to provide help to others.Festive background

I was always good about helping my coworkers and being social at the various jobs I held, but I never really reached much beyond my company.

I spent a large amount of time trying to make an investment in my career at a particular company at the expense of making an investment of my time in the software development communities that I was involved in.

I spent lots of time creating internal presentations on technologies or best practices that could have been spent creating content and material that could have served the community as a whole, as well as brought me recognition at my job.

I also made the mistake of not thinking that I had something valuable to contribute.

I talk to many beginning software developers now and sometimes I think they have much more to contribute to the community than us software developers that have been in the field for a long time, because they understand better the issues that other beginners are struggling with.

If I could do it over again, I would have made sure to be much more involved in conferences and user groups earlier in my career.  I would have started my blog much earlier and I would have used much of my learning time to create projects and resources that would be able to help others rather than just reading a book.

Always have a side project

Perhaps the biggest change I would have made that would have impacted my career the most would have been to cut out all the TV watching, Everquest and World of Warcraft playing I did earlier in my life and replace that time with work on a side project.

I’ve wasted a pretty sizable amount of time in my life doing things that were enjoyable, but didn’t produce any long term benefit for my life.

About 3-4 years ago, I pretty much cut out watching TV completely and now I hardly ever watch movies either.  TV and most movies are just a huge waste of time that you could be using to do something useful.  The same goes for video games for the most part, but at least with video games you are actively doing something not just absorbing useless information.

I’ll always love to play video games and I don’t think I’ll ever stop, but I do wish I would have spent a good deal of the time I spent playing video games and watching TV on a side project instead.

Sadly, the first real side project I actually took on was only about 3 years ago when I started creating my first Android application.

When you are working for someone else, it is really important to spend time working for yourself as well, otherwise you are building someone else’s empire while neglecting your own.

Not only did I learn a huge amount from the side projects I have taken on in the last few years, but I have benefited greatly from them.  In fact, one of those side projects, creating Pluralsight courses, is something I am doing pretty much full time now.

Putting everything I learned together

These are just a few of the things that I wish I had known when I first started my software development career, but there are many more and lots of other things that I did do right from the beginning.

I’m actually working on a top secret project to put all this information together to help developers boost their career and learn to market themselves.

If you want to be the first to be notified when this project gets officially launched, sign up here, and I’ll be sure to let you know.

What about you?

What are some of the things you wish you would have known when you started your software development career?  Let me know in the comments below.

Quick side note: if you are stopping here reading this post, you are probably the kind of developer that cares about your career.  I’m putting together a complete package full of information on how to really boost you software development career and increase your earning potential.  It is only available for preorder right now.  I’m only going to be selling it at this heavily discounted price for a short time.  I’ll also have some exclusive interview with famous software developers like Bob Martin, Jon Skeet, and Jeff Atwood sharing their secrets to their success.

About the author

John Sonmez

John Sonmez is the founder of Simple Programmer and a life coach for software developers. He is the best selling author of the book "Soft Skills: The Software Developer's Life Manual."

  • Jeff Ammons

    I loved Ivor Horton’s VC++ book. He has a great writing style. His Java book was good too.

    This was a good post by the way.

    I’ve always tried to keep some kind of side projects going even if they are small and pointless. I’ve built a bunch of blog engines that only I ever used because they were a known domain and made a great playground for experimentation.

    I’m hoping to get some time to experiment with Android soon. I haven’t done much with mobile since The Great Windows Phone Debacle of ’10 & ’11. That’s the only side project I’ve ever regretted.

    My only hesitation on Android is the growing sense of apprehension with the sheer volume of info I am handing over to Google in exchange for convenience. I’d feel better if that data were spread over a variety of companies instead of just one who happens to be particularly good at sorting, organizing, mining and selling data…

    Enough rambling. Just wanted to say good post. Then ramble.

    • Riccardo Tasso

      Hi, this was a very inspiring post.

      Anyway I disagree with the part regarding the time “spent” watching TV and so on…

      I think that there is a thin line between training and exhaustion. Letting my mind free to watch a movie or reading a book (not a technical one) and so on opens my mind, giving me more energy in my professional life.

      Riccardo (a young developer)

      • Naveed

        As you are still young you are not understand it, watching TV is totally waste of time…

        • http://twitter.com/SonaliBarua Simran

          Watching TV maybe. But I agree about letting your mind relax. When I didn’t have a side hobby, my coding started failing mostly because I got burned out. I started making silly mistakes. I started taking pottery and whenever I attend my arts course, I do better as a programmer. Having some hobbies outside of programming gives you the mental flexibility to remain agile. Which is what you need as a software developer. The really great programmers I’ve met also have intensive hobbies outside of programming as well. they don’t watch a whole lot of TV though. Just some select TV shows.

    • jsonmez

      Thanks. Didn’t mean to bash Horton’s book in anyway. It was definitely a great book and I learned a lot from it.
      I just could have better spent my time at that point in my career on a more broad topic.

      • Jeff Ammons

        At the risk of starting a politeness war, I didn’t mean to imply I thought you were bashing the book. Just saying that I like his writing. Both the C++ and Java books were mighty tomes. Great value by weight to be sure. To your point you can’t read very many books that size unless you are in an academic rather than business setting.

        • jsonmez


  • Pingback: Windows 8.1 Pinned Site Tiles Notifications In The Daily Six Pack()

  • ericbae

    Loved the point on “Always have a side project”. That was one of the main focus of my current “side project”. It’s called “SideProjectors” – http://sideprojectors.com – as much as it’s cool to create a side project, many of them get abandoned, so I wanted to do something about it!

    • jsonmez

      That is awesome. What a great idea.

  • http://javacurious.wordpress.com/ vishal jain

    Great post !!! I really enjoy your posts. Out of 7 years, I’ve learnt many such things in last 2 years and many things are yet to learn/apply :)

    • jsonmez


  • Ertzu

    Really great post. Side projects are very important for your own competence development, whether doing small or big things. For a family man, the hardest issue with that is finding time for that.

    • jsonmez

      Thanks. I agree. It is difficult. I realized that I had to make a choice to either give up some of my personal indulgences like video games and TV or family time if I wanted to be able to work on side projects. Sometimes this choice is tough though.
      Another alternative is to work harder or more diligently during the day. I have found that unless I focus using a technique like the Pomodoro technique, I tend to waste lots of time.

  • mustafa kok

    It is strange that I’m experiencing same things, thanks for the post.

    • jsonmez

      Your welcome.

  • Kelson Martins

    Hi, my name is Kelson and Im brazilian and sorry for my terrible english.
    I just started to follow your blog and I have to tell you.
    Thanks for this post.
    Im the start of my carrer and reading each one of your words make me fell the mistakes that Im doing. And by doing that, wasting a precious amount of time.
    It is a must read for anyone at the start of carrer.
    I have to translate this to pass to my coworkers in Brazil.
    Thank You.

    • jsonmez

      Thanks, glad you enjoyed the post.

  • Dean Schulze

    Good post.

    I have to disagree about learning technologies in depth, though. You should learn your bread-and-butter technology in depth, and learn several supporting technologies in less depth. A Java developer needs to know at least design patterns, SQL, Maven, and version control tools in addition to in depth knowledge of Java.

    In depth knowledge doesn’t mean memorizing APIs or anything else that you can look up with Google. It means knowing how to use your technical knowledge to solve business problems. This is where analysis, architecture, and design patterns come into play.

    Also, learn new things. The MOOCs at Udacity and Coursera are a great way to do this. If you are not taking Udacity and Coursera courses, why not? Do you know it all? You’ll enjoy it and be a better engineer for it.

    • jsonmez

      Thanks. I agree with you. When I talk about not learning technologies in depth, I mean that it is better to spend more time learning broader subjects and more applicable things, like languages and design patterns, because it is less likely that those skills will become worthless.

      Early in my career, I made the mistake of taking my “study time” and devoting it to frameworks and specialized areas of a technology, which was a waste to some degree when I switched technologies.

      Even Java developers have to be careful, because they may not always be “Java developers.”

      Definitely agree about taking courses and learning new things. Always be learning. :)

  • Riccardo Tasso

    Hi, this one was a very inspiring post.

    Anyway, I have to disagree with the part regarding the time you consider bad spent watching TV and doing something else than programming.

    I experienced there’s a thin line between training and exhaustion. Letting my mind free to watch a movie or reading a book (not a technical one) and so on opens my mind, giving me more energy and inspiration in my professional life.

    I think it’s always bad to bet only for one horse.

    Riccardo (a young developer)

    • jsonmez


      I agree, in part.

      Let me explain. I don’t regret taking some leisure time, everyone needs some downtime and needs to expand beyond just programming, but time spent watching TV was mostly a waste as well as much of the time spend watching movies, because I didn’t benefit from them or really expand my mind in anyway. Some small amount of TV and movies is fine of course, but making a habit out of TV and movie watching is not good in the long term.

      It is much better to spend that time reading a non-technical book that has some value.

      One of my favorite bloggers and podcasters, Patt Flynn (http://www.smartpassiveincome.com/) says “work hard now, so you can reap the benefits later.” As a young person, putting in more extra work can really benefit you in life later.

      I have also found that many people don’t realize how much they can actually do and accomplish. It takes time, but you eventually realize what you thought was too hard and exhausting is easy, and you find out that your limits are much further than you thought they were. Few people ever really live up to their potential.

      Over the years, I have learned that I can do much more work and work much harder than I thought possible and even though it isn’t easy, it is immensely rewarding.

      I do take breaks though and taking breaks is definitely important.

      • Timmy Hasler

        While I see our point of
        view I have to disagree. You spend 1/3 of your day sleeping, 1/3 of your
        day at work. If you then go home and spend that remaining 1/3 (or the
        majority of it) doing something like a side project then you may be developing
        yourself professionally, but you are not developing yourself as a person.

        Don’t get me wrong, I like a side project. I
        tend to spend maybe 4-5 hours a week on some project or another, but the rest
        of my leisure time is spent relaxing, socialising and cultivating hobbies (my
        biggest hobbies being volunteering, video games and movies).

        A career is important, but a a life is more so.

        Again this is simply my opinion, perhaps you just
        enjoy programming way more than I do, or your side projects is your choice of
        principle hobby.

  • brijeshm misra

    On community and side project, it could have gone completely wrong without right experience, so maybe you chose right time?

    • jsonmez

      I have found in life that it is much better to get in there and start failing early and that is actually the best way to get experience. I wish that I had started a blog on day 1 of learning to write code and the same with a side project.

  • Marc Clifton

    Great post, I especially like “When you are working for someone else, it is really important to spend time working for yourself as well, otherwise you are building someone else’s empire while neglecting your own.” — I’ve done that religiously for years, resulting in many articles on the Code Project, new contracts, and I find it relaxing to explore crazy ideas, some of which turn into viable solutions for the contract work that I do.

    • jsonmez

      Thanks. Yes, it is amazing how the little time you put in for yourself builds up over time and you actually start to create a real asset for yourself.

  • Becky :)

    Agree 100% – community matter in all things, and side projects are seldom a waste of time. Also, I wish I had appreciated how important it is for engineers to speak up – no-one will listen if you are afraid to speak up!
    That and stay away from the free biscuits.

    • jsonmez

      Yes, definitely agree about speaking up.

      • Kavita

        When is the best time to learn the technology in my academic career?

        • jsonmez

          Always, all the time. Continually. :)

  • JReuben1

    I often read technical books end to end to get a holistic perspective, and i enjoy learning a technology in depth – I may be doing it wrong, but I am enjoying the journey !

  • Christian Treber

    Totally agree! “There is nothing new under the sun”, when it comes to new technologies and methodologies, but “new” methodologies often are more valuable than technological advancements, and the half-life time is longer.

  • Rama Krushnudu Vadela

    really good one.
    Thanks John. i am a regular reader of your blog post & podcosts.
    I came to know lot of things from your posts. But implementation wise i am pretty slow.
    I am trying to override that problem.

    I am expecting some blog posts from you on the topics :
    1.managing the things on a day : personal kanban or pamadora like any other technics
    2. how to put the things into practice.

    may be you can talk from your own experiences.
    please point me the correct link if this is not the correct place for suggestions on new topics on blog posts.

    Rama Krushnudu V

  • Francois Langlois

    Great post.

    I’m myself at a point where I want to get better (I fell I’m missing some things that I think I should know) and I was wondering what book to read or what to do next to become better. So reading your post couldn’t have been more appropriate for me right now (starting tomorrow to take time each Saturday to learn more and do some code at home).

    I’ll read your other posts and articles on your site.

    Thanks for sharing your experiences and the wisdom you gained!

    Francois L.

    • jsonmez

      Your welcome, glad you found the posts useful.

  • Jagmeet Sidhu

    Great Post!

    I’m graduating next year, and these were some really good points i’ll keep them in mind. (although i am movies addict and its not possible for me to abandon them), hope i can take this chance.
    Thanks again :)

    • jsonmez

      Awesome. Here is an idea, which I employ: only watch movies that are curated. What I mean by this is, instead of watching 20 movies in a month, watch 5, but make sure they are recommended ones that you know will be the best. I do this with many things that I do not have time for, including books.

  • Jan-Willem Klomp

    I started my work in software development at a large consultancy firm and for the first six or seven years I sort of laid back and let the company decide what was good for me and my carier, because I believed they knew best what was good for me. I was put on assignments that I didn’t like and that did not have the added value I was looking for. I lacked a clear picture what I wanted to do or wanted to end up. Mistake. If I could do it all over again, I would get into the driving seat myself and set my own course.

    Also I would have spent more time developing myself these first year. I had the idea that I would learn new stuff only in the company’s’ time, and was not really willing to spend evenings and weekends. Over the years I have come to understand that personal development takes significant amounts of your personal time, and have indeed come to see it as ‘side projects’.

    • jsonmez

      It is tough, because starting out no one tells you how to succeed. Many are even against you and secretly would like you to fail.

      • http://RichardGriffiths.azurewebsites.net/ SoulFireMage

        That’s a good point John. It’s not necessarily deliberate but if a reasonably well fitted cog starts to change shape and want to become a different part, a more versatile one, it may well be rather inconvenient for the average corporate machine!

  • Pingback: 4 Things I Wish I Would Have Known When I Started My Software Development Career()

  • http://www.developed.be/ Robin B

    Great post. I’d add it’s important to keep personal notes when you’ve solved a problem you’ve spent several hours on. Chances are you’re going to face the problem some time again and it’s valuable to recall your original research. You can later turn the most valuable posts into blogs.

    • jsonmez

      Thanks. I agree!

  • swampwiz

    My biggest mistake was going into the front end instead of the database part of the field, so that I ended up learning the various Microsoft API’s that would only be around a few years and then made obsolete, which in term made be obsolete & unemployable. Had I gone into the database part, I could be raking in it as a data scientist.

  • Igbineweka Kelvin

    Am a young developer back here in Nigeria and i must confess that you speak the mind of lot’s of young programmers out there. Great post!

    • jsonmez


  • Jens

    Thx for points. Iam newly graduated and am a bit nervous on what they expect, i mean i have learned many development technologies, but have started to focus solely on .net. But i am always nervous when i am called into job interviews expecting them to ask my millions of questions, even applied at microsoft and passed the code test, but failed the phoneinterview since the interviewer ask me something i havnt touched in years. what do they expect from newcomers?

    • jsonmez

      Don’t worry. It is a numbers game. Keep interviewing and learning. Eventually you will find the match. It is impossible to saw what any one company will be looking for, but you will get a general idea of what you need to know by continuing to do interviews.

  • Jonathan Greene

    Loved the post and I definitely agree with everything you have said. For me I think of myself as still starting out. I haven’t had a job in Software Development but have made tons of applications and one thing I can say that I wish I would have done from the beginning is to not under estimate myself. Like you said there is no one correct way to write software and that is something that held me up for the past 3 years. Another I had to advice against at least for me specifically is making excuses. Honestly if I would have spent half the time writing any code that I did coming up with reasons that I couldn’t I would have a great job by now and have a few languages under my belt. Last I would like to warn against getting too caught up in drag and drop stuff. For me personally and many like me I started writing code with simple drag and drop programs and found I did not want to venture into full on programming for fear or my understanding. I know a lot of people who start with drag and drop programs and that’s good because it helps you to understand what variables are and what objects are in an easy to see format that visually will show you what the result of changing this value is. However you must venture out and see what programming can really offer and while it is scary just getting out and doing it for even 30min a day will lead to amazing results within a year.

    Thanks for hearing my two sense and I will be sure to check back and see what else you write.

    Sincerely yours
    Jonathan Greene
    [email protected]

    • jsonmez

      Thanks for the comment and great input Jonathan. I agree about not under estimating yourself. Everything seems hard until you actually do it, or even try it.
      Cool that you are going to Full Sail University. I always wanted to do that. :)

  • Pingback: 四件在我步入职业软件开发生涯那天起就该知道的事情()

  • Pingback: 四件在我步入职业软件开发生涯那天起就该知道的事情[外刊IT评论] - 蓝骑士随意录()

  • andy

    I just test that can i leave a message. ^^

  • andy

    哇 真的可以.

  • andy

    there was five things ,haha.

  • Sanjay Borhade

    really helpful….as i am about to start my career…..i’ll try to avoid it…..thankssss…..

  • hawkhero

    Great thanks for the sharing from a senior developer like you. About joining a community, I would like to, but it’s really time consuming. What’s the benefit to be active in a community (local or global) according to your experience?

    • jsonmez

      The big benefit is that you have great opportunity to network and build up a reputation. It is amazing how many opportunities open up when you know the right people.

  • Pingback: 四件在我步入职业软件开发生涯那天起就该知道的事情 | MultiProcess()

  • Lori Peterson

    Thanks for the great post! I too have made these mistakes which I’m currently in the process of turning around. I really agree with “You don’t really learn a technology until you’ve solved a real problem with it”. I learn so much more by having side projects and applying technologies rather than just reading about them. But one book that truly inspired me this past year on becoming a better developer that wasn’t focused on a specific technology was “Clean Code” by Robert C. Martin. We often write code for the way we understand it and to get a specific task done.. After reading this book, I now try to write code that someone else will be able to understand.

  • 1964911

    Hi John,
    I’ve been thinking about making a career change; I am a chef
    and been working full time at a restaurant for the last 7 years as an
    executive chef but soon to be laid off due to a new CEO who’s been
    laying off all the high position like General Manager, Marketing
    Director, and F & B Director. Ever since the new ceo came he’s been
    replacing all the top management with his own people and I am the last
    to go until they figure out what to do with my menu and my crew.

    of looking for a new job I want to become a software engineer, I’ve
    been self studying both front-end through free and paid resources, I am
    considering signing up for bootcamps like GA, Devbootcamp and etc,(btw
    what do you think of these bootcamps?). However one of my biggest
    concern is my age; I am getting close to 40 and I read here and there
    that the programmers are for the young and I am definitely not young by
    age but young at heart. I understand it’s case by case but do you think
    it’s too late to become a entry programmer and expect to land a job?

    • jsonmez

      If I were just starting out in the field, I’d probably do a boot camp. Especially if I had the money and time for it. I haven’t ever been to one, but I really like the idea of a very compressed learning schedule doing real work. You can also learn on your own. Definitely get a subscription to Pluralsight. (Disclaimer: I have courses there, but I would recommend them anyway.) I don’t think age matters unless you are in Silicon Valley trying to work for startups. The other thing you want to do is start getting some published code out there. My suggestion is always to create an Android app and start a company that produces that app. This is a great way to build experience without experience.

    • http://RichardGriffiths.azurewebsites.net/ SoulFireMage

      I’ve only at the beginning end of a development career, so take a big pinch of salt with my reply. However, I’d use Coursera, Udacity and MIT open courseware as my first choice for online courses for a lot of topics. Partly because of the assignment work and depth you can cover, plus the supplementary materials and forums.

      Pluralsight is good because of the specific technology range (it’s a LOT) but getting written material, slides, exercises does cost an even higher premium per month – a shame, as if it was included in the normal premium price it would be great value. Just MHO and I’ve used their courses for C#, LINQ, F# and recently, MSIL which was a very good focused course. I bought the authors C# book on the strength of it.

  • Delsmart

    I am at the early stage of my career and what I just read here, really really makes me thing big time. great post. I never thought about side project before but now I am. love this post

    • jsonmez

      Thanks for the comment. Yes, a side project will help you in many ways. Good luck. :)

  • Ankita

    Hi John
    Great post.
    I am a beginner in software development and to complicate my situation further i do not have an academic background in computer (I come from the Electronics world). But to counter all of the negativity above I have a great fascination for computers and programming languages. Also what you said is true- that there are is not very many resources available for beginners, by beginners.
    So we do many times feel sort of like we are the only one’s going through it. In reality there are so many of us.
    Also the point that resonates with me is that we should contribute towards the community, but what does hold me back is that I wont have anything worthwhile to share. But taking heart from your post I am going to try.

  • http://RichardGriffiths.azurewebsites.net/ SoulFireMage

    This is gold John. My first books were Pragmatic Programmer and Code Complete 2 as both are just so readable even for someone with less than 20 hrs – complete novice. They just widen one’s awareness so much that you can map out a decent first few months of learning with them. My regret is I didn’t start code until I was nearly 33 and even then, didn’t know I would want to take it up properly – I was just trying help my employer a bit. Even my old employer said I’d only get more confidence if I did a lot more projects – I was a reader first but my own blog is starting to help me change that.

    Learning more than one language, once I’d got enough fundamentals in the first (VB) has been crucial as now, even in VB I’ll think in more than one paradigm (FP/OOP etc). If I had the chance to start again, I’d cut out the weeks where I didn’t code at all and replace them with, well a lot of coding.

    • jsonmez

      That are definitely great books to start out with. I agree, starting to code earlier would be better, but we’ve each got to take our own path. :)

      • http://RichardGriffiths.azurewebsites.net/ SoulFireMage

        Hindsight = 20:20. I’d have learnt so much faster at 17 if I’d just understood that the best stuff was MEANT to be very hard to learn over months. Instead, quite foolishly, I assumed because I didn’t understand easily in less than an hour, I figured I wasn’t good at it. This insight, scarily, is actually recent believe it or not – it came about whilst I was tackling maths again. Until this last year, clearly I’d just avoided anything that was trickier to learn :(. Something I’d warn any youngsters I was teaching I think; don’t mistake something tough to mean anything about oneself but to mean to get a lot more stubborn, in a sense and push it more- a lot more.

  • Scott Goldberg

    Hi John,

    Thanks for all the good information. I am 54 and used to be a COBOL, relational database guru. I spent the last 15 years working in the Network System Integration area. Now that I am completely done with that, I want to get back into programming. I too agree with TV being a waste of time and wish I had those hours back. I’m thinking of working with Ruby n Rails and mySQL. Any other advice for an old timer that has the chops but hasn’t been in the game for a while?


    • jsonmez

      My advice would be to find the newest hottest thing and embrace it whole-heartedly. Looks for tutorials to learn JavaScript and Angular.js. Since those are the most popular technologies right now, you can’t do wrong by learning them.

  • Sidescroller

    John, it’s like you’re me from the future, and you jumped into a time machine and wrote this blog post under a pseudonym in an attempt to change your past. Thank you, future me/John. You’ve done me 15 years worth of favors.

    • jsonmez

      Awesome. Glad to help.

  • Kunku

    I am a Building management systems engineer in a firm at oman for 1 year.I want to switch my career to software development.Can you suggest me some tips.

    • jsonmez

      The biggest tip I can give you is to start writing code as soon as possible.

  • JamesEER7

    Really Good post. I found that i related to it quite a lot I’m 24 and a don’t have a degree or serious formal training. I spent a lot of time reading books from like 11-16 and really didn’t learn as much as you would have thought. I agree with the author that going through the process of solving problems and real projects is a great asset in learning.

    I started my own projects (web sites(roms :)), small games) around 16. Well i made some DBZ and other cartoon fan sites in 3rd grade(notepad lol) but they don’t count as it was pretty much only tables with gifs . I eventually got a job at a company doing non IT related stuff. I noticed we were doing the same word doc creation from a spread sheet as much as 300 times per week(between the 4 of us) and then emailing it out to the address on the spread sheet. I decided to make an application to do that task and after much googling on how to use vba and long weekend it worked.

    Since then i have moved into a development capacity and i love it. I have very little real training outside of 2 electives my freshman year in HS. The internet community is your best resource. YOUTUBE IS A GREAT RESOURCE. There are some really good guys and gals breaking down pretty much everything you could want to learn. Good book recommendation list btw. Code Complete is something i picked up this year and it was an eye opener.

    Anyways great article

    • jsonmez

      Thanks! Glad to hear your story. Sounds like you are on the right track.

  • Pingback: 4 Mistakes I Made When I Started My Software De...()

  • Pingback: 5 Điều tôi ước gì được biết khi mới bắt đầu nghề phát triển phần mềm | VinaCode()

  • anasmatic

    thank you for sharing your experience.
    I’m in one of my panic times now.
    I’m working in Egypt as a flash games developer,

    I think it’s the end of this stage, and I have to move to another place to learn more and do more.
    After some interviews and tests in Europe, no one accepted me,

    bit by bit I understood I’m not good enough, I don’t use design patterns, I don’t profile, I didn’t had the chance to learn about these stuff or even hear about them because I was working alone, writing spaghetti code !

    so it is the time for me to stop this mess

    I was going to read a cover to cover book about design patterns, but I’m too slow with reading ! I love videos instead !
    I really don’t know how to do it, how to save my career, and how to do it fast.
    I’m seeking more advice.

    thank you again

  • suchi

    Hi , i have four years of experience in software development. I think m gud in software testing. Even my manager applaud me many times, Is there possibilty to switch my career in software testing.

  • suchi

    Can I get the opportunity in Testing field having 4 years of experience in software development without doing any testing course. But m gud in understanding technical requirements and doing testing accordingly.

  • Ace Corpuz

    Great post! I’ve spent last two years reading books from cover to cover. I really regret it.

  • Joe Hancock

    Great article. I have recently enrolled in school for Software Engineering. I don’t have a strong tech background (other than normal office use) but i have always been interested in developing apps and problem solving (even though I have never done anything like it). Reading different blogs has given me kind of a culture shock, if you will. The process of finding work after graduation and the actual work involved seem a little overwhelming. I’ll be 30 by the time I graduate and I’m just hoping that I catch up to where I need to be to be appealing to employers by the time I graduate. Do you have any particular advice for someone who has absolutely zero knowledge in programming before I start school and spend the next 4-5 years learning this stuff?

    • jsonmez

      Don’t get discouraged. There is a lot to learn, but you can learn it. You don’t need to know everything. Focus on learning one particular set of skills instead of spreading yourself too thin. :)

  • RationalThinkingOne

    Wrong: Learning particular technologies in-depth is a waste of timennWhich technologies are you referring to? No depth anywhere? Apache? Tomcat? Java? In depth doesnu2019t mean just APIs.nnWrong: There is no u201cright wayu201d in software developmentnnA way which produces smaller, faster, more scalable and quicker code wins out every time. Professionals can prove thisu2026junior engineers cannot. A senior (in true sense of wordu2026not u2018rock starsu2019) engineer has been around the block and knows whatu2019s around the next corner.nn**** YES!: Always have a side project

  • Pingback: 4 Những điều tôi đã biết được khi tôi bắt đầu sự nghiệp phát triển phần mềm. | Bản nháp -Code()


  • Pingback: Carrera profesional como desarrollador de software()

  • prashant varnwal

    Great post helped a lot in finding what to not do….

  • agaace

    I’m coming here late but 2 years later still thanks for this post.
    I agree with all your points, I came to the same conclusions after 7 years in the industry, and I’m happy to see I’m not alone.

    The hardest part for me is having to work & put up with the nonsense of people who still have to understand point 1, and who are unfortunately more influential than me, so they set the rules of the game.
    Second hard part is that side projects are hard when I’m expected to work 50-60h weeks, an as you age, it only becomes harder and harder to find that motivation (you have less energy, and the salary in your boring job is just too good). So I wish I had started a startup fresh off college.

    • jsonmez

      Great points. :)

  • Saravana Kumar

    Hi, I am in a sort of confusion. I am working for 12 hours a day at my desk and I wants to learn something new after office hours. Most of the time I failed because of ache and back-pain. So I used to plan those readings into Weekends. On the weekends I usually have a call from my friends about a trip or a movie plan then I feel guilt and insecure about my Developer Job position. If I did not studied the recent technology updates then will I be thrown out of industry in sometime? Please help me what should I do in the weekends. Spending time with family and friends (or) Updating technical knowledge to stay in job. ;-(

    • jsonmez

      Spend some of the 12 hour a day at your desk updating your technical knowledge. 12 hour work days is far too long.

    • Stephen Murray

      I don’t know your particular situation so ignore this if its not relevant; some years ago I was working those 12 hour days and my supervisor asked “What are you working on?”, when I said a “print report” he gave me a little talk. Work your 8 hours on company stuff that benefits the company and the companies priorities, work after hours on stuff that benefits you first then the company ie after hours the priority changes. So you can still do your work but try to do the “win/win” bit and only work on “interesting” stuff after hours.

  • aaron

    Thanks for the post. I’ve earned a degree in computer science and i’m working through my masters, but as far as real world hands-on experience i’m pretty green…I’ve tried to start some projects but often get bogged down in the “right way” and end up not even taking a real first step. I kept identifying with each of your points. Really encouraging.

  • Erica

    I totally agree with you about spending your time on community in your early career life. I’ve been a developer for almost ten years now. But I never spend time helping others outside of my company or contributing to a community. Look back to the past 9 years, I feel upset and I really want to take part in a side project to prove myself.