Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Personal development, becoming a great software engineer

Options
  • 15-11-2010 11:51pm
    #1
    Registered Users Posts: 695 ✭✭✭


    Hey, I feel like I have hit somewhat of a wall in my personal development as a software developer.

    I feel very comfortable writing code. I can read code in most languages and understand what it is doing. I've developed multi-threaded daemons, web back ends, embedded applications and other random things.

    I feel like my technical knowledge/skills are fine or even advanced for my experience level (only finished university this year). I understand that the technical area is constantly evolving so I need to constantly keep up to speed with that, but I feel ahead of the curve compared with my counterparts (other recently finished students).

    However I struggle in one area that I have only now realised is vital. Planning, self-discipline and design. I thought most of these things were nonsense in college but I understand now they are very important to commercial work.

    I'm considering taking a course in something and wondering if anybody has any recommendations. I plan on finally reading Code Complete and Design Patterns. I'm reading up on TDD. Taking a look at software like Fogbugz for their evidence based scheduling.

    I want to be able to think of a new idea, sit down, design it and then write it.
    Currently I tend to think of an idea, start writing, refactor, write, refactor, write and eventually give up as it never hits a reasonable usable version.

    Should I take a course in AGILE or TDD, or something else?

    I really care about my trade, I want to be an excellent software developer, and I know where I am seriously lacking in the area and want to correct it.

    Thanks


Comments

  • Registered Users Posts: 16,413 ✭✭✭✭Trojan


    Have you read The Pragmatic Programmer?

    Regard planning, self discipline, etc, go read some stuff outside of the programming sphere. Read business, self-development, marketing, psychology and other topics. To start check out stuff like Getting Things Done (Allen), "Four Hour Work Week" (Ferris), "The E-Myth" (Gerber), anything from Seth Godin, Guy Kawasaki. These aren't all directly related to what you're doing but will expand your thinking a lot.

    On the coding side, practice a lot. Try code something in a language you're not familiar with, patch some systems together with a bunch of scripting languages, make a goal of getting a bug fix committed to an open source project, challenge yourself.

    HTH.


  • Registered Users Posts: 5,618 ✭✭✭Civilian_Target


    Ah, know what you mean. I still don't feel like an 'old dog' yet, but at some point....

    Obviously, there's nothing to beat real experience. Being part of a failed project was one of the most miserable experiences I've been through, but it taught me a lot of practical things: how to speak up when things are getting rough, the importance of writing things down, the importance of both doing what you're told to do - but at the same time offering improved alternatives, and how not to be dragged down when things sink.

    Personally, on the technical skills level, the most important thing I've learnt in the last 12 months is Domain Driven Design. A well designed and implemented data model can make tedious tasks like systems integration so much easier!


  • Closed Accounts Posts: 5,284 ✭✭✭pwd


    Design skills evolve naturally:
    1. Hurt your brain figuring out your own spaghetti code every time it needs small tweaks.
    2. Realise this sucks.
    3. Organise your code better next time.
    Repeat until your brain stops hurting.

    An alternative is to get really good at dealing with spaghetti code. You might not be as good a programmer, but you might be a richer one. If you're the only one who can read your code then you're the only one who can read your code! lol


  • Registered Users Posts: 1,481 ✭✭✭satchmo


    +1 for experience - the best way to improve yourself is to work with someone who's better than you.


  • Moderators, Home & Garden Moderators, Regional Midwest Moderators, Regional West Moderators Posts: 16,724 Mod ✭✭✭✭yop


    You have hit a wall in your development and your 1 year out of college?

    Are you getting that from your job? You haven't actually mentioned what development job you are working in? You probably need to just stick at the job you are in, get a full years work experience as a developer and then you can see a path open up.

    The issues you are experience with regards planning and design etc, these will be gained with years of experience.

    Best of luck


  • Advertisement
  • Registered Users Posts: 981 ✭✭✭fasty


    Alas, proper mentorship seems to be hard to come by in most branches of the development industry in my experience. Although perhaps I've just been unlucky. That said, since I already feel better than my peers who have more time on the job, maybe I'm lucky. It hasn't been fun though.

    My advice would be to stay on the technology treadmill, have side projects, learn a functional language like Haskell (this recommendation is becoming a cliché!).


  • Moderators, Technology & Internet Moderators Posts: 1,335 Mod ✭✭✭✭croo


    Agree with all the other comments but another option might be;
    Find a subject you think you'd enjoy then look for an active open source project in that area and try to participate! If your code is not good enough the community of developers will let you know... the reviews can sometimes be brutal but it's not meant personal so don't take it so :) Seeing how others code can be instructive and you never know, you might stumble across some wizard might take you under their wing if they feel you are trying hard!


  • Registered Users Posts: 3,721 ✭✭✭E39MSport


    fasty wrote: »
    Alas, proper mentorship seems to be hard to come by in most branches of the development industry in my experience. Although perhaps I've just been unlucky. That said, since I already feel better than my peers who have more time on the job, maybe I'm lucky. It hasn't been fun though.

    My advice would be to stay on the technology treadmill, have side projects, learn a functional language like Haskell (this recommendation is becoming a cliché!).

    You must be with A C ertain consulting firm so.


  • Registered Users Posts: 14,714 ✭✭✭✭Earthhorse


    DaSilva wrote: »
    However I struggle in one area that I have only now realised is vital. Planning, self-discipline and design. I thought most of these things were nonsense in college but I understand now they are very important to commercial work.

    It's great that you are enthusiastic about self improvement. Bear in mind that, for all the great reading material recommended here some things will only really click with you when you go to do them for yourself. Planning and self-discipline are things which will improve as you practise them and you will need to develop lots of skills around them too.

    Part of planning for example is feeding back to the relevant people when you realise the plan isn't going to, well, plan and that estimates may need to be revised etc. Sometimes, that takes guts; no one wants to admit that they got their estimate wrong or seem like they couldn't do their job in the time alotted.

    Self-discipline is a trickier one. For most people, I would say, this waxes and wanes. At times, I'm very good at keeping on top of things and at other times I let it all go to pot. The advantage in a work environment is that on top of self-discipline you will have supervisor discipline so you don't always need to be firing yourself up; there'll be plenty of whips cracking you on your way as you go.

    When it comes to design, one book I would highly recommend is The Design of Everyday Things. It isn't a development oriented book per se, though there are sections on it that talk about software design, but it will equip you with a vocabulary and mindset that will improve your thinking about design.

    Keep an eye on blogs like joelonsoftware (thought this is defunct now, pretty much) and codinghorror. Not only are there some gems posted they also point you in the direction of other good reads.


Advertisement